diff options
548 files changed, 30832 insertions, 36824 deletions
@@ -4,17 +4,21 @@ syntax: glob *.lo *.la +*.o .libs/* .deps/* Makefile Makefile.in +ABOUT-NLS +INSTALL aclocal.m4 compile configure config.guess config.log config.sub +config.rpath config.status config.status.lineno include/configure.h @@ -39,28 +43,60 @@ debian/libxine1-dbg debian/libxine1-doc debian/tmp debian/*.debhelper +debian/*.debhelper.log debian/*.substvars doc/faq/faq.html doc/faq/faq.txt doc/hackersguide/*.png doc/hackersguide/hackersguide.html +doc/man/*/xine-list-*.1 include/xine.h +m4/codeset.m4 +m4/gettext.m4 +m4/iconv.m4 +m4/intmax.m4 +m4/inttypes-pri.m4 +m4/inttypes_h.m4 +m4/lib-link.m4 +m4/lib-prefix.m4 +m4/longdouble.m4 +m4/longlong.m4 +m4/nls.m4 +m4/po.m4 +m4/size_max.m4 +m4/stdint_h.m4 +m4/ulonglong.m4 +m4/intl.m4 +m4/intldir.m4 +m4/lock.m4 +m4/visibility.m4 +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 + +misc/Makefile.plugins misc/SlackBuild misc/build_rpms.sh misc/libxine.pc misc/relchk.sh misc/xine-config misc/xine-lib.spec +misc/xine-list-* +po/Makevars.extra po/POTFILES po/*.gmo po/stamp-po po/insert-header.sed po/remove-potcdate.sed +src/combined/ffmpeg/avcodec_*.list +src/combined/ffmpeg/ff_*_list.h src/libffmpeg/ffmpeg_config.h src/video_out/libdha/pci_dev_ids.c src/video_out/libdha/pci_ids.h @@ -1,3 +1,7 @@ 5e6d0656ac4efdc1a89ed0fc32f11050f4a22970 0 iD8DBQBGZ207sBKtjPGfWZ8RAhdEAKCrkwiBT6bTof7ro5QQwewRfF/dMACffsvfK42+ahQrjpSfQxEp6k7RpCI= 42358e16442fe54fa554006e0b0bafd51e065c32 0 iD8DBQBG0xz0zbwfTn7RbcARAoD3AJ4012pabmpQvCKKDokZNyZzfPIbWgCfRk5FRly/Eei/xXnSaT54XHAT5KM= 1dbf784bebc791266fcca02e917ee63034ac2e0b 0 iD8DBQBHgQ2mzbwfTn7RbcARArl9AKCslqZDrrm0GiU3IbBvcQVbOdSXlwCgyEMuHY2y/+T6WEeB2CXvCTs5ulI= +b591d00fcd386cdd3779378c34b2d42b7504afc4 0 iD8DBQBHh5UfsBKtjPGfWZ8RAgvMAJ9xwnDNifmaobFYe2nR7+rJlLTkEQCgguGMqwqRZY68HWQXhEx918hp4Yg= +ae1e23df14223cdacf83df75b28b223895d658c2 0 iD8DBQBHm6SjsBKtjPGfWZ8RAi8HAKDAHmmLu8rwN5XJJPhfEofE7BTpsgCfTyNzku+v/PhqXgl4kQnRiB6nUSE= +d912bda42df43a6ec24a4d479e202c327a733a42 0 iD8DBQBH4R2HsBKtjPGfWZ8RAr/IAJ46ypOhqO0EiSDrZYhumvpFYtrPQwCbBz/SXSDNuJNaKlR70Ep+THmhFIk= +92dad3eca733ff0daecd6b1a539f8b077ea071cb 0 iD8DBQBH76CDsBKtjPGfWZ8RAnQUAJ9ARudZye68h9JIKe10wIsWm6OQEwCgvjS+c6o48SjNrb5l7i8KisKG89o= @@ -63,3 +63,16 @@ fd12068ebd3fab2438f77b06e312c4244e97950a DXR3_095 ab1531337553ad5eac24a69ac665eae33916b423 xine-lib-1_1_7-release e0a332b9d3e8bb3fad4d7feac1e519292b062056 xine-lib-1_1_8-release b6be674453e922114b55d4613cb197c77d19f094 xine-lib-1_1_9-release +9438947f88ad2bed1832385301c6b4e62709625a xine-lib-1_1_9_1-release +7f1232425c6d715c404e6df1292075b33ecb8305 xine-lib-1_1_10-release +0e9e4df266f639ac7ba9e0c204f205686b56d5f9 xine-lib-1_1_10_1-release +10a6bc10e58f45f6cb79f634bdb6b7daa3167742 xine-lib-1_1_11-release +2a2cc543b27b64a6587dfaef4f1d986eb2f2710a xine-lib-1_1_11_1-release +66e1654718fb0581846d60c60bc09ae3b6b8c0cf xine-lib-1_1_12-release +492f87e6963a8d244df32c40d66a6349aabc4420 xine-lib-1_1_13-release +9b383441a18fb49ccd5a07465d3e3db8821cccf6 xine-lib-1_1_14-release +17f8ed16524ba779af42913e51667e89b83a1887 xine-lib-1_1_15-release +e33280bcaa3b1f3f5b93e633e2225e2440ecfd7c xine-lib-1_1_16-release +01fac0a015581bbdf7e38561ad2a95405e2ca785 xine-lib-1_1_16_1-release +ff19463729d8f9bbea35171d641c5f28cdacc7c8 xine-lib-1_1_16_2-release +fc1aecbb9d80a32d9c802a5208dfdc012f1ba9d5 xine-lib-1_1_16_3-release diff --git a/ABOUT-NLS b/ABOUT-NLS deleted file mode 100644 index e32d52d2b..000000000 --- a/ABOUT-NLS +++ /dev/null @@ -1,996 +0,0 @@ -1 Notes on the Free Translation Project -*************************************** - -Free software is going international! The Free Translation Project is -a way to get maintainers of free software, translators, and users all -together, so that free software will gradually become able to speak many -languages. A few packages already provide translations for their -messages. - - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, -itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using -this package with messages translated. - - Installers will find here some useful hints. These notes also -explain how users should proceed for getting the programs to use the -available translations. They tell how people wanting to contribute and -work on translations can contact the appropriate team. - - When reporting bugs in the `intl/' directory or bugs which may be -related to internationalization, you should tell about the version of -`gettext' which is used. The information can be found in the -`intl/VERSION' file, in internationalized packages. - -1.1 Quick configuration advice -============================== - -If you want to exploit the full power of internationalization, you -should configure it using - - ./configure --with-included-gettext - -to force usage of internationalizing routines provided within this -package, despite the existence of internationalizing capabilities in the -operating system where this package is being installed. So far, only -the `gettext' implementation in the GNU C library version 2 provides as -many features (such as locale alias, message inheritance, automatic -charset conversion or plural form handling) as the implementation here. -It is also not possible to offer this additional functionality on top -of a `catgets' implementation. Future versions of GNU `gettext' will -very likely convey even more functionality. So it might be a good idea -to change to GNU `gettext' as soon as possible. - - So you need _not_ provide this option if you are using GNU libc 2 or -you have installed a recent copy of the GNU gettext package with the -included `libintl'. - -1.2 INSTALL Matters -=================== - -Some packages are "localizable" when properly installed; the programs -they contain can be made to speak your own native language. Most such -packages use GNU `gettext'. Other packages have their own ways to -internationalization, predating GNU `gettext'. - - By default, this package will be installed to allow translation of -messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. If not, the included GNU -`gettext' library will be used. This library is wholly contained -within this package, usually in the `intl/' subdirectory, so prior -installation of the GNU `gettext' package is _not_ required. -Installers may use special options at configuration time for changing -the default behaviour. The commands: - - ./configure --with-included-gettext - ./configure --disable-nls - -will, respectively, bypass any pre-existing `gettext' to use the -internationalizing routines provided within this package, or else, -_totally_ disable translation of messages. - - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl.a' file and -will decide to use this. This might not be desirable. You should use -the more recent version of the GNU `gettext' library. I.e. if the file -`intl/VERSION' shows that the library which comes with this package is -more recent, you should use - - ./configure --with-included-gettext - -to prevent auto-detection. - - The configuration process will not test for the `catgets' function -and therefore it will not be used. The reason is that even an -emulation of `gettext' on top of `catgets' could not provide all the -extensions of the GNU `gettext' library. - - Internationalized packages usually have many `po/LL.po' files, where -LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' -may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter -codes, stating which languages are allowed. - -1.3 Using This Package -====================== - -As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, -and `CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. - - You might think that the country code specification is redundant. -But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The -country code serves to distinguish the dialects. - - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your country by running the command -`locale -a | grep '^LL''. - - Not all programs have translations for all languages. By default, an -English message is shown in place of a nonexistent translation. If you -understand other languages, you can set up a priority list of languages. -This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' -set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. - - Special advice for Norwegian users: The language code for Norwegian -bokma*l changed from `no' to `nb' recently (in 2003). During the -transition period, while some message catalogs for this language are -installed under `nb' and some older ones under `no', it's recommended -for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and -older translations are used. - - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. - -1.4 Translating Teams -===================== - -For the Free Translation Project to be a success, we need interested -people who like their own language and write it well, and who are also -able to synergize with other translators speaking the same language. -Each translation team has its own mailing list. The up-to-date list of -teams can be found at the Free Translation Project's homepage, -`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" -area. - - If you'd like to volunteer to _work_ at translating messages, you -should become a member of the translating team for your own language. -The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: - - subscribe - - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `translation@iro.umontreal.ca' to reach the -coordinator for all translator teams. - - The English team is special. It works at improving and uniformizing -the terminology in use. Proven linguistic skill are praised more than -programming skill, here. - -1.5 Available Packages -====================== - -Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of May 2005. -The matrix shows, in regard of each package, for which languages PO -files have been submitted to translation coordination, with a -translation percentage of at least 50%. - - Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB - +-------------------------------------------------+ - GNUnet | | - a2ps | [] [] [] [] [] | - aegis | () | - ant-phone | () | - anubis | [] | - ap-utils | | - aspell | [] [] [] [] | - bash | [] [] | - batchelor | [] | - bfd | | - bibshelf | [] | - binutils | [] | - bison | [] [] | - bluez-pin | [] [] [] [] | - clisp | [] [] | - console-tools | [] [] | - coreutils | [] [] [] [] | - cpio | | - cpplib | [] [] [] | - darkstat | [] () [] | - dialog | [] [] [] [] [] [] | - diffutils | [] [] [] [] [] | - doodle | [] | - e2fsprogs | [] [] | - enscript | [] [] [] [] | - error | [] [] [] [] | - fetchmail | [] [] () [] | - fileutils | [] [] | - findutils | [] [] [] | - flex | [] [] [] | - fslint | [] | - gas | | - gawk | [] [] [] | - gbiff | [] | - gcal | [] | - gcc | [] | - gettext-examples | [] [] [] [] | - gettext-runtime | [] [] [] [] | - gettext-tools | [] [] | - gimp-print | [] [] [] [] | - gip | | - gliv | [] | - glunarclock | | - gmult | [] [] | - gnubiff | () | - gnucash | [] () () [] | - gnucash-glossary | [] () | - gpe-aerial | [] [] | - gpe-beam | [] [] | - gpe-calendar | [] [] | - gpe-clock | [] [] | - gpe-conf | [] [] | - gpe-contacts | | - gpe-edit | [] | - gpe-go | [] | - gpe-login | [] [] | - gpe-ownerinfo | [] [] | - gpe-sketchbook | [] [] | - gpe-su | [] [] | - gpe-taskmanager | [] [] | - gpe-timesheet | [] | - gpe-today | [] [] | - gpe-todo | [] [] | - gphoto2 | [] [] [] [] | - gprof | [] [] | - gpsdrive | () () | - gramadoir | [] [] | - grep | [] [] [] [] [] [] | - gretl | | - gsasl | [] | - gss | | - gst-plugins | [] [] [] [] [] [] | - gstreamer | [] [] [] [] [] | - gtick | [] () | - gtkspell | [] [] [] | - hello | [] [] [] [] | - id-utils | [] [] | - impost | | - indent | [] [] | - iso_3166 | | - iso_3166_1 | [] [] [] [] [] | - iso_3166_2 | | - iso_3166_3 | [] | - iso_4217 | | - iso_639 | | - jpilot | [] | - jtag | | - jwhois | | - kbd | [] [] [] [] | - latrine | () | - ld | [] | - libc | [] [] [] [] [] | - libextractor | | - libgpewidget | [] [] [] | - libgphoto2 | [] | - libgphoto2_port | [] | - libgsasl | | - libiconv | [] [] [] [] [] | - libidn | | - lifelines | [] () | - lilypond | [] | - lingoteach | | - lynx | [] [] [] [] | - m4 | [] [] [] [] | - mailutils | [] | - make | [] [] | - man-db | [] () [] [] | - minicom | [] [] | - mysecretdiary | [] [] | - nano | [] () [] | - nano_1_0 | [] () [] [] | - opcodes | [] | - parted | [] [] [] [] | - psmisc | | - ptx | [] [] [] | - pwdutils | | - python | | - radius | [] | - recode | [] [] [] [] [] | - rpm | [] [] | - screem | | - scrollkeeper | [] [] [] [] [] [] [] [] | - sed | [] [] | - sh-utils | [] [] | - shared-mime-info | [] [] | - sharutils | [] [] [] [] [] | - silky | | - skencil | [] () | - sketch | [] () | - solfege | [] | - soundtracker | [] [] | - sp | [] | - stardict | [] | - tar | | - texinfo | [] [] | - textutils | [] [] [] | - tin | () () | - tp-robot | [] | - tuxpaint | [] [] [] [] [] [] [] | - unicode-han-tra... | | - unicode-transla... | | - util-linux | [] [] [] [] | - vorbis-tools | [] [] [] [] | - wastesedge | () | - wdiff | [] [] [] [] | - wget | | - xchat | [] [] [] [] [] | - xkeyboard-config | | - xpad | | - +-------------------------------------------------+ - af am ar az be bg bs ca cs cy da de el en en_GB - 10 0 0 2 7 5 0 40 43 2 51 91 19 1 14 - - eo es et eu fa fi fr ga gl he hi hr hu id is - +-----------------------------------------------+ - GNUnet | | - a2ps | [] [] [] | - aegis | | - ant-phone | [] | - anubis | [] | - ap-utils | [] | - aspell | [] [] | - bash | [] [] [] [] | - batchelor | [] [] | - bfd | [] | - bibshelf | [] [] | - binutils | [] [] | - bison | [] [] [] [] [] | - bluez-pin | [] [] [] [] [] [] | - clisp | [] [] | - console-tools | | - coreutils | [] [] [] [] [] | - cpio | [] [] | - cpplib | [] [] | - darkstat | [] () [] [] [] | - dialog | [] [] [] [] [] [] [] | - diffutils | [] [] [] [] [] [] [] [] [] | - doodle | [] | - e2fsprogs | [] [] | - enscript | [] [] | - error | [] [] [] [] [] | - fetchmail | [] | - fileutils | [] [] [] [] [] | - findutils | [] [] [] [] | - flex | [] [] [] | - fslint | [] | - gas | [] [] | - gawk | [] [] [] [] | - gbiff | [] | - gcal | [] [] | - gcc | [] | - gettext-examples | [] [] [] | - gettext-runtime | [] [] [] [] [] | - gettext-tools | [] [] | - gimp-print | [] [] | - gip | [] [] [] | - gliv | () | - glunarclock | [] [] [] | - gmult | [] [] | - gnubiff | () | - gnucash | [] () | - gnucash-glossary | [] | - gpe-aerial | [] [] | - gpe-beam | [] [] | - gpe-calendar | [] [] [] [] | - gpe-clock | [] [] [] | - gpe-conf | [] | - gpe-contacts | [] | - gpe-edit | [] [] | - gpe-go | [] [] | - gpe-login | [] [] [] | - gpe-ownerinfo | [] [] [] [] [] | - gpe-sketchbook | [] [] | - gpe-su | [] [] [] | - gpe-taskmanager | [] [] [] | - gpe-timesheet | [] [] [] [] | - gpe-today | [] [] [] [] | - gpe-todo | [] [] [] | - gphoto2 | [] [] [] [] | - gprof | [] [] [] | - gpsdrive | () () [] | - gramadoir | [] [] | - grep | [] [] [] [] [] [] [] [] [] [] [] | - gretl | [] [] | - gsasl | [] [] [] | - gss | [] | - gst-plugins | [] [] | - gstreamer | | - gtick | [] [] [] [] | - gtkspell | [] [] [] [] [] | - hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - impost | [] [] | - indent | [] [] [] [] [] [] [] [] [] [] | - iso_3166 | [] [] [] | - iso_3166_1 | [] [] [] [] [] [] [] | - iso_3166_2 | [] | - iso_3166_3 | [] | - iso_4217 | [] [] [] | - iso_639 | [] [] [] [] | - jpilot | [] [] | - jtag | [] | - jwhois | [] [] [] [] | - kbd | [] [] | - latrine | [] [] | - ld | [] [] | - libc | [] [] [] [] [] | - libextractor | | - libgpewidget | [] [] [] [] [] | - libgphoto2 | [] [] [] | - libgphoto2_port | [] | - libgsasl | [] [] | - libiconv | [] [] [] [] [] [] [] [] [] [] | - libidn | [] [] | - lifelines | () | - lilypond | | - lingoteach | [] [] | - lynx | [] [] | - m4 | [] [] [] [] | - mailutils | [] [] | - make | [] [] [] [] [] [] [] | - man-db | () | - minicom | [] [] [] [] | - mysecretdiary | [] [] [] | - nano | [] [] () [] | - nano_1_0 | [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] [] | - psmisc | [] | - ptx | [] [] [] [] [] [] [] [] [] | - pwdutils | | - python | | - radius | [] [] | - recode | [] [] [] [] [] [] [] | - rpm | [] | - screem | | - scrollkeeper | [] [] [] | - sed | [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] | - shared-mime-info | [] [] [] [] [] [] | - sharutils | [] [] [] [] [] [] | - silky | [] | - skencil | [] [] | - sketch | [] [] | - solfege | | - soundtracker | [] [] | - sp | [] | - stardict | [] | - tar | [] [] [] [] | - texinfo | [] [] [] | - textutils | [] [] [] [] [] | - tin | [] () | - tp-robot | [] [] | - tuxpaint | [] [] [] [] [] [] [] [] | - unicode-han-tra... | | - unicode-transla... | [] [] | - util-linux | [] [] [] [] [] | - vorbis-tools | [] [] | - wastesedge | () | - wdiff | [] [] [] [] [] [] [] | - wget | [] [] [] [] | - xchat | [] [] [] [] [] | - xkeyboard-config | | - xpad | [] [] [] | - +-----------------------------------------------+ - eo es et eu fa fi fr ga gl he hi hr hu id is - 15 85 21 15 2 35 115 45 16 8 1 6 40 27 1 - - it ja ko ku lg lt lv mk mn ms mt nb nl nn no nso - +--------------------------------------------------+ - GNUnet | | - a2ps | () () [] [] () | - aegis | () | - ant-phone | [] | - anubis | [] [] [] | - ap-utils | | - aspell | [] [] | - bash | [] | - batchelor | [] | - bfd | | - bibshelf | [] | - binutils | | - bison | [] [] [] [] | - bluez-pin | [] [] | - clisp | [] | - console-tools | | - coreutils | [] [] | - cpio | | - cpplib | [] | - darkstat | [] [] | - dialog | [] [] | - diffutils | [] [] [] [] | - doodle | [] | - e2fsprogs | [] | - enscript | [] | - error | [] | - fetchmail | [] [] | - fileutils | [] [] [] | - findutils | [] [] | - flex | [] [] | - fslint | [] | - gas | | - gawk | [] [] | - gbiff | [] | - gcal | | - gcc | | - gettext-examples | [] [] [] | - gettext-runtime | [] [] [] [] | - gettext-tools | [] [] [] | - gimp-print | [] [] | - gip | [] | - gliv | [] | - glunarclock | [] [] | - gmult | [] [] | - gnubiff | () | - gnucash | [] () () [] | - gnucash-glossary | [] [] | - gpe-aerial | [] | - gpe-beam | [] | - gpe-calendar | [] | - gpe-clock | [] | - gpe-conf | [] | - gpe-contacts | | - gpe-edit | [] | - gpe-go | [] | - gpe-login | [] | - gpe-ownerinfo | [] | - gpe-sketchbook | [] | - gpe-su | [] | - gpe-taskmanager | [] [] | - gpe-timesheet | [] | - gpe-today | [] | - gpe-todo | [] | - gphoto2 | [] [] [] | - gprof | | - gpsdrive | () () () () | - gramadoir | () | - grep | [] [] [] [] | - gretl | [] | - gsasl | [] | - gss | | - gst-plugins | [] [] | - gstreamer | [] [] | - gtick | [] [] | - gtkspell | [] [] [] | - hello | [] [] [] [] [] [] [] [] [] | - id-utils | [] [] | - impost | | - indent | [] [] [] | - iso_3166 | [] | - iso_3166_1 | [] [] | - iso_3166_2 | [] | - iso_3166_3 | [] | - iso_4217 | [] [] [] | - iso_639 | [] [] [] | - jpilot | () () () | - jtag | | - jwhois | [] [] | - kbd | [] | - latrine | [] [] | - ld | | - libc | [] [] [] [] [] | - libextractor | | - libgpewidget | [] | - libgphoto2 | [] [] | - libgphoto2_port | [] [] | - libgsasl | [] | - libiconv | [] [] | - libidn | [] | - lifelines | [] | - lilypond | | - lingoteach | [] [] | - lynx | [] [] [] | - m4 | [] [] | - mailutils | | - make | [] [] [] | - man-db | () | - minicom | [] | - mysecretdiary | [] | - nano | [] [] [] | - nano_1_0 | [] [] [] [] | - opcodes | [] | - parted | [] [] [] [] | - psmisc | [] [] [] | - ptx | [] [] [] | - pwdutils | | - python | | - radius | | - recode | [] [] | - rpm | [] [] | - screem | [] | - scrollkeeper | [] [] [] | - sed | [] [] | - sh-utils | [] [] [] | - shared-mime-info | [] [] [] [] | - sharutils | [] [] [] | - silky | [] | - skencil | | - sketch | | - solfege | [] [] [] | - soundtracker | [] | - sp | () | - stardict | [] [] | - tar | [] [] [] | - texinfo | [] [] [] | - textutils | [] [] [] | - tin | | - tp-robot | [] | - tuxpaint | [] [] [] [] [] [] [] | - unicode-han-tra... | | - unicode-transla... | | - util-linux | [] [] [] | - vorbis-tools | [] | - wastesedge | [] | - wdiff | [] [] [] | - wget | [] | - xchat | [] [] [] [] [] | - xkeyboard-config | [] | - xpad | [] | - +--------------------------------------------------+ - it ja ko ku lg lt lv mk mn ms mt nb nl nn no nso - 46 35 11 2 1 1 2 2 3 11 0 15 96 7 5 0 - - or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv - +----------------------------------------------+ - GNUnet | | - a2ps | () [] [] [] [] [] [] | - aegis | () () | - ant-phone | [] | - anubis | [] [] [] | - ap-utils | () | - aspell | [] [] | - bash | [] [] [] | - batchelor | [] | - bfd | | - bibshelf | | - binutils | [] [] | - bison | [] [] [] [] [] | - bluez-pin | [] [] [] [] [] [] [] [] | - clisp | [] | - console-tools | [] | - coreutils | [] [] [] [] | - cpio | [] [] | - cpplib | | - darkstat | [] [] [] [] [] [] | - dialog | [] [] [] [] [] [] [] | - diffutils | [] [] [] [] [] [] | - doodle | [] | - e2fsprogs | [] [] | - enscript | [] [] [] [] | - error | [] [] [] | - fetchmail | [] [] [] [] | - fileutils | [] [] [] [] [] | - findutils | [] [] [] [] [] [] | - flex | [] [] [] [] [] | - fslint | [] [] [] | - gas | | - gawk | [] [] [] [] | - gbiff | [] | - gcal | [] | - gcc | | - gettext-examples | [] [] [] [] [] [] | - gettext-runtime | [] [] [] [] [] [] [] | - gettext-tools | [] [] [] [] [] [] [] | - gimp-print | [] [] | - gip | [] [] [] | - gliv | [] [] [] | - glunarclock | [] [] [] [] [] [] | - gmult | [] [] [] [] | - gnubiff | () [] | - gnucash | () [] [] [] [] | - gnucash-glossary | [] [] [] | - gpe-aerial | [] [] [] [] [] [] | - gpe-beam | [] [] [] [] [] [] | - gpe-calendar | [] [] [] [] [] [] [] | - gpe-clock | [] [] [] [] [] [] [] | - gpe-conf | [] [] [] [] [] [] | - gpe-contacts | [] [] [] [] | - gpe-edit | [] [] [] [] [] [] [] | - gpe-go | [] [] [] [] [] | - gpe-login | [] [] [] [] [] [] [] | - gpe-ownerinfo | [] [] [] [] [] [] [] | - gpe-sketchbook | [] [] [] [] [] [] [] | - gpe-su | [] [] [] [] [] [] [] | - gpe-taskmanager | [] [] [] [] [] [] [] | - gpe-timesheet | [] [] [] [] [] [] [] | - gpe-today | [] [] [] [] [] [] [] | - gpe-todo | [] [] [] [] [] [] [] [] | - gphoto2 | [] [] [] [] | - gprof | [] [] [] | - gpsdrive | [] [] | - gramadoir | [] | - grep | [] [] [] [] [] [] [] | - gretl | [] | - gsasl | [] [] [] [] [] | - gss | [] [] [] | - gst-plugins | [] [] [] [] | - gstreamer | [] [] [] [] | - gtick | [] [] [] | - gtkspell | [] [] [] [] [] [] | - hello | [] [] [] [] [] [] [] | - id-utils | [] [] [] [] | - impost | | - indent | [] [] [] [] [] [] | - iso_3166 | [] [] [] [] [] | - iso_3166_1 | [] [] [] [] | - iso_3166_2 | | - iso_3166_3 | [] [] [] | - iso_4217 | [] [] | - iso_639 | [] [] [] | - jpilot | | - jtag | [] | - jwhois | [] [] [] () () | - kbd | [] [] [] | - latrine | [] [] | - ld | [] | - libc | [] [] [] [] [] | - libextractor | [] | - libgpewidget | [] [] [] [] [] [] | - libgphoto2 | [] [] | - libgphoto2_port | [] | - libgsasl | [] [] [] | - libiconv | [] [] [] [] [] [] [] [] [] [] | - libidn | [] () | - lifelines | [] [] | - lilypond | | - lingoteach | [] | - lynx | [] [] [] | - m4 | [] [] [] [] [] | - mailutils | [] [] [] | - make | [] [] [] [] | - man-db | [] [] | - minicom | [] [] [] [] | - mysecretdiary | [] [] [] [] | - nano | [] [] [] | - nano_1_0 | [] [] [] [] | - opcodes | [] [] | - parted | [] [] [] [] | - psmisc | [] [] | - ptx | [] [] [] [] [] [] | - pwdutils | [] | - python | | - radius | [] [] | - recode | [] [] [] [] [] [] | - rpm | [] [] [] [] | - screem | | - scrollkeeper | [] [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] | - shared-mime-info | [] [] [] [] [] [] | - sharutils | [] [] [] | - silky | [] | - skencil | [] [] [] | - sketch | [] [] [] | - solfege | | - soundtracker | [] [] | - sp | | - stardict | [] [] | - tar | [] [] [] [] | - texinfo | [] [] [] [] | - textutils | [] [] [] | - tin | | - tp-robot | [] | - tuxpaint | [] [] [] [] [] [] [] [] | - unicode-han-tra... | | - unicode-transla... | | - util-linux | [] [] [] | - vorbis-tools | [] [] | - wastesedge | | - wdiff | [] [] [] [] [] [] | - wget | | - xchat | [] [] [] [] [] [] [] | - xkeyboard-config | | - xpad | | - +----------------------------------------------+ - or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv - 1 3 47 29 57 6 78 73 5 44 12 12 50 85 - - ta tg th tk tr uk ven vi wa xh zh_CN zh_TW zu - +-----------------------------------------------+ - GNUnet | | 0 - a2ps | [] [] [] | 19 - aegis | | 0 - ant-phone | [] [] | 5 - anubis | [] [] [] | 11 - ap-utils | () [] | 2 - aspell | [] [] [] | 13 - bash | [] | 11 - batchelor | [] [] | 7 - bfd | | 1 - bibshelf | [] | 5 - binutils | [] | 6 - bison | [] [] | 18 - bluez-pin | [] [] [] [] [] | 25 - clisp | | 7 - console-tools | [] [] | 5 - coreutils | [] [] | 17 - cpio | [] [] [] | 7 - cpplib | [] [] | 8 - darkstat | [] () () | 15 - dialog | [] [] [] | 25 - diffutils | [] [] [] [] | 28 - doodle | [] | 5 - e2fsprogs | [] | 8 - enscript | [] | 12 - error | [] [] [] | 16 - fetchmail | [] | 12 - fileutils | [] [] [] | 18 - findutils | [] [] | 17 - flex | [] [] | 15 - fslint | [] | 7 - gas | [] | 3 - gawk | [] | 14 - gbiff | [] | 5 - gcal | [] | 5 - gcc | [] [] | 4 - gettext-examples | [] [] [] [] [] | 21 - gettext-runtime | [] [] [] [] [] | 25 - gettext-tools | [] [] [] [] [] | 19 - gimp-print | [] | 11 - gip | [] | 8 - gliv | [] [] | 7 - glunarclock | [] [] | 13 - gmult | [] [] [] | 13 - gnubiff | [] | 3 - gnucash | () [] | 10 - gnucash-glossary | [] [] | 9 - gpe-aerial | [] [] | 13 - gpe-beam | [] [] | 13 - gpe-calendar | [] [] [] [] | 18 - gpe-clock | [] [] [] [] | 17 - gpe-conf | [] [] | 12 - gpe-contacts | [] [] | 7 - gpe-edit | [] [] [] [] | 15 - gpe-go | [] [] | 11 - gpe-login | [] [] [] [] [] | 18 - gpe-ownerinfo | [] [] [] [] | 19 - gpe-sketchbook | [] [] | 14 - gpe-su | [] [] [] | 16 - gpe-taskmanager | [] [] [] | 17 - gpe-timesheet | [] [] [] [] | 17 - gpe-today | [] [] [] [] [] | 19 - gpe-todo | [] [] [] | 17 - gphoto2 | [] [] [] | 18 - gprof | [] [] | 10 - gpsdrive | | 3 - gramadoir | [] | 6 - grep | [] [] [] [] | 32 - gretl | | 4 - gsasl | [] [] | 12 - gss | [] | 5 - gst-plugins | [] [] [] | 17 - gstreamer | [] [] [] [] | 15 - gtick | [] | 11 - gtkspell | [] [] [] [] | 21 - hello | [] [] [] [] | 37 - id-utils | [] [] | 13 - impost | [] | 3 - indent | [] [] [] [] | 25 - iso_3166 | [] [] [] | 12 - iso_3166_1 | [] [] | 20 - iso_3166_2 | | 2 - iso_3166_3 | [] [] | 8 - iso_4217 | [] [] | 10 - iso_639 | [] [] | 12 - jpilot | [] [] [] | 6 - jtag | | 2 - jwhois | [] [] [] | 12 - kbd | [] [] | 12 - latrine | [] [] | 8 - ld | [] | 5 - libc | [] [] | 22 - libextractor | | 1 - libgpewidget | [] [] | 17 - libgphoto2 | [] | 9 - libgphoto2_port | | 5 - libgsasl | [] | 7 - libiconv | [] [] [] [] [] | 32 - libidn | [] [] | 6 - lifelines | | 4 - lilypond | | 1 - lingoteach | [] | 6 - lynx | [] [] [] | 15 - m4 | [] [] | 17 - mailutils | [] | 7 - make | [] [] | 18 - man-db | | 5 - minicom | | 11 - mysecretdiary | [] [] | 12 - nano | [] [] | 13 - nano_1_0 | [] [] [] | 18 - opcodes | [] [] | 9 - parted | [] [] [] | 18 - psmisc | [] | 7 - ptx | [] [] | 23 - pwdutils | | 1 - python | | 0 - radius | [] | 6 - recode | [] [] | 22 - rpm | [] [] | 11 - screem | | 1 - scrollkeeper | [] [] [] | 24 - sed | [] [] [] | 21 - sh-utils | [] | 15 - shared-mime-info | [] [] [] | 21 - sharutils | [] [] [] | 20 - silky | | 3 - skencil | | 6 - sketch | | 6 - solfege | | 4 - soundtracker | [] | 8 - sp | [] | 3 - stardict | [] [] [] [] | 10 - tar | [] [] [] [] | 15 - texinfo | [] [] | 14 - textutils | [] [] [] | 17 - tin | | 1 - tp-robot | [] [] [] | 8 - tuxpaint | [] [] [] [] | 34 - unicode-han-tra... | | 0 - unicode-transla... | | 2 - util-linux | [] [] [] | 18 - vorbis-tools | [] | 10 - wastesedge | | 1 - wdiff | [] [] | 22 - wget | [] [] | 7 - xchat | [] [] [] [] | 26 - xkeyboard-config | [] | 2 - xpad | [] | 5 - +-----------------------------------------------+ - 73 teams ta tg th tk tr uk ven vi wa xh zh_CN zh_TW zu - 149 domains 0 0 0 1 77 30 0 92 16 0 42 32 0 1746 - - Some counters in the preceding matrix are higher than the number of -visible blocks let us expect. This is because a few extra PO files are -used for implementing regional variants of languages, or language -dialects. - - For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If May 2005 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. - -1.6 Using `gettext' in new packages -=================================== - -If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. - - Once the sources are changed appropriately and the setup can handle -the use of `gettext' the only thing missing are the translations. The -Free Translation Project is also available for packages which are not -developed inside the GNU project. Therefore the information given above -applies also for every other Free Software Project. Contact -`translation@iro.umontreal.ca' to make the `.pot' files available to -the translation teams. - @@ -235,7 +235,7 @@ Marcelo Roberto Jimenez <mroberto@cetuc.puc-rio.br> George Staikos <staikos@0wned.org> xinerama bugfixes -Juan Manuel Garc? Molina <juanmagm@mail.com> +Juan Manuel GarcÃa Molina <juanmagm@mail.com> spanish internationalization files. Jeffrey W. Baker <jwbaker@acm.org> @@ -293,7 +293,7 @@ Andrew Patrikalakis <anrp@irulethe.net> powerpc assembly memcpy() implementaions with assistance from Rogerio Brito <rbrito@iname.com> Benjamin Herrenschmidt <benh@kernel.crashing.org> - Michel Dzer <daenzer@debian.org> + Michel Dänzer <daenzer@debian.org> Others Giovanni Baronetti and Mauro Borghi <mauro.borghi@tilab.com> @@ -415,7 +415,7 @@ Conrad Parker <conrad@metadecks.org> Marcel Janssen <korgull@home.nl> libavcodec MPEG encoder for DXR3 -Dirk Meyer <dmeyer@tzi.de +Dirk Meyer <dmeyer@tzi.de> stdctl patches for xine-ui and fbxine. post filter support for fbxine. @@ -1,8 +1,245 @@ -xine-lib (1.1.9.1) (unreleased) +xine-lib (1.1.17) 2009-??-?? + * Add support for Matroska SIMPLEBLOCK. + * Add support for sndio (OpenBSD sound API). + * Correct invalid MIME info in the MOD demuxer. + * Fix a resource leak in libdvdnav. + * Properly NUL-terminate when reading ID3v2.2 tag content. + * Fix handling of the length of UTF-16 content sourced from, e.g., ID3 tags. + * Make ~/.xine/catalog.cache writing safer: write a new file & atomically + replace the old one. + * Initial parsing of Xing header LAME extension. + * Fixes for gapless playback. + * Added padding delay to the first and last frames (MPEG audio). + * Fixed buggy discontinuity handling when playing short streams and using the gapless switch. The current time should not be used here. + * Added audio padding handling. (New buffer flag for this.) + +xine-lib (1.1.16.3) 2009-04-03 + * Security fixes: + - Fix another possible int overflow in the 4XM demuxer. + (ref. TKADV2009-004, CVE-2009-0698) + - Fix an integer overflow in the Quicktime demuxer. + (TKADV2009-005, CVE-2009-1274) + * Enable libmpeg2new (if configured with --enable-libmpeg2new). + This is not yet production code; the old mpeg2 decoder remains the default. + * Add support for OpenBSD. + * Fix a build failure on *BSD due to some rather useful GNUisms. + * Protect audio loop so it cannot write to a paused device (fix + pause/resume freeze with pulseaudio). + * Fix build with libavutil >= 50.0.0. + * Fix segfaults when playing VCDs. + * Fix calculation of frame duration for ffmpeg-decoded formats. + * Don't assume that ID3v2 tags with no content mean "end of ID3 data". + +xine-lib (1.1.16.2) 2009-02-10 + * Build fixes related to ImageMagick 6.4 & later. + * Fix an error in Matroska PTS calculation. + * Some front ends hang due to the hang fixes in 1.1.16. Fix this by + removing a break statement. + * Fix broken size checks in various input plugins (ref. CVE-2008-5239). + * More malloc checking (ref. CVE-2008-5240). + * Fix race conditions in gapless_switch (ref. kde bug #180339) + * Fix a possible integer overflow in the 4XM demuxer. + (TKADV2009-004, CVE-2009-0698) + +xine-lib (1.1.16.1) 2009-01-11 + * Fix build with older ffmpeg, both internal and in Debian 5.0. + * Add version check for CACA library and disable CACA plugin if needed + * Fix playback of some H.264 files (broken in 1.1.16). + * Various other build & bug fixes. + * Some FAQ list updates. + +xine-lib (1.1.16) 2009-01-07 + * Security fixes: + - Heap overflow in Quicktime atom parsing. (CVE-2008-5234) + - Multiple buffer overflows. (CVE-2008-5236) + - Multiple integer overflows. (CVE-2008-5237) + - Unchecked or incompletely-checked read function results. (CVE-2008-5239) + - Unchecked malloc using untrusted values. (CVE-2008-5240, CVE-2008-5242) + - Integer underflow in qt compressed atom handling. (CVE-2008-5241) + - Buffer indexing using untrusted or unchecked values. (CVE-2008-5243) + - Integer overflows in the ffmpeg audio decoder and the CDDA server. + - Heap buffer overflow in the ffmpeg video decoder. + - Avoid segfault on invalid track type in Matroska files. + - Avoid underflow (compressed atoms) in the Qt demuxer. + * Fix reported compilation failures (with C++ programs). + * Fix CDDB access in 64-bit builds. + * Fix seeking FLV clips that don't specify the movie length in the headers. + * Support H.264 and AAC streams within FLV. + * Fix timing issues (broken audio) on mingw. + * Add ID3 tag TDRC to replace/complement the deprecated tag TYER. + * Add a new meta-tag, "Composer", and use it in the FLAC demuxer. + * Correct AAC channel ordering for multi-channel audio, at least for FLAC + when using ALSA or PulseAudio. (Needs a proper fix.) + * Add position-based seeking independent from seekpoints. + * Fix some XCB Xv attribute configuration breakage. + * Add a configuration option for Xv bicubic filtering, implemented in + xf86-video-ati 6.9.1. + * Recognise Xv "blitter" adaptors for port selection purposes. + NOTE: you will need to remove ~/.xine/catalog.cache when upgrading from + xine-lib 1.1.15 or older if you wish to use this extra option. + * Fix MMS media requests where the URI contains %-encoded characters. + * Fix two hangs related to stopping playback of broken audio streams where + no audio data is sent to the output thread. + * Fix WAV demuxer to send the last frames when they don't fit perfectly into + the buffer + +xine-lib (1.1.15) 2008-08-14 + * Security fixes: + - Fix crashes with various corrupted media files, including Ogg. + (CVE-2008-3231) + This includes a libfaad update from the 1.2 branch. + - Delay V4L video frame preallocation until we know how large they'll be. + (CVE-2008-5245) + - Fix an exploitable ID3 heap buffer overflow. + (CVE-2008-5234, vector 2) + - Check for possible buffer overflow attempts in the Real demuxer. + (CVE-2008-5235) + - Use size_t for data length variables where there may be int overflows. + - Add some checks for memory allocation failures. + (CVE-2008-5233) + - Fix crashes with MP3 files with metadata consisting only of separators. + (CVE-2008-5248) + * Use external ffmpeg and libfaad by default. + * V4L: Don't segfault if asked for an input that doesn't exist. + * Recognise AMR audio (normally found in 3GP files). + * Recognise Snow video. + * Xv deinterlacing didn't take the size of the deinterlaced image into + account; on some chipsets, this would cause image corruption, while on + others, there would be no problem. + * V4L: only try and set the tuner if we're going to use it. Setting the tuner + when using baseband video (CVBS, S-Video) breaks the input. + +xine-lib (1.1.14) 2008-06-29 + * DVB changes: + - Reacquire PIDs whenever a PMT is parsed. (Some channels' PIDs are + changed on a regular basis.) + - Recognise more stream formats (as defined in the broadcast PMT). + - Allow automatic detection of more DVB tuning parameters. + - Allow the GUI to be disabled. + - Allow configuration of the location of channels.conf. + * V4L: allow TV standard selection. + * Allow input plugins to report MIME type information. + This is used for demuxer plugin selection immediately before testing the + filename extension (so it won't work when demuxer selection is done by + stream content only). [Bug #120] + * Allow input plugins to ask for a specific demuxer, overriding the normal + demuxer selection methods. (Most won't need this.) + * The Xv and XxMC video output plugins now support Xv port selection via + two methods: port number and port type (currently "any", "overlay" and + "textured video"). Port number takes precedence; the plugins will fall + back on another port of the same type (if a type was specified) then on + whatever they can find. + XvMC does not support port selection at present. + (Backported from the 1.2 branch.) + * Fix MPEG TS audio stream problems introduced in 1.1.13. + * Add basic aspect ratio detection for Windows Media Video streams. + +xine-lib (1.1.13) 2008-06-15 + * Security fixes: + - Buffer overflow in the NSF demuxer which may allow remote attackers to + cause a denial of service (crash) or possibly execute arbitrary code + via an NSF file with a long title or copyright message. (CVE-2008-1878) + - For extra safety against possible Integer overflows like the ones found + in CVE-2008-1482, backport more calloc usage from 1.2 branch. + * Improved JACK output plugin. + * Added MIME types and .mpp for musepack. + * Fixed display of some MJPEG streams (YUVJ420P). + * Deprecate xine_xmalloc() function, see src/xine-utils/utils.c for more + information about the reason. + * Provide a useful implementation of xine_register_log_cb(). + +xine-lib (1.1.12) 2008-04-14 + * Security fixes: + - Insufficient boundary check in speex audio decoder. (CVE-2008-1686) + * Fixed and improved the PulseAudio driver. + * Fixed a regression in 1.1.11.1 which broke Quicktime container handling. + * And another, this time in the Matroska demuxer. + * Added a tool to assist with generating front ends' desktop files. It + lists MIME types & filename extensions known to the installed xine-lib. + * Various Real codec improvements, including: + - RV20 no longer causes segfaults (observed on amd64); + - Cook is now handled by ffmpeg. + * Added a video output plugin intended for passing raw data to the front end. + +xine-lib (1.1.11.1) 2008-03-30 + * Security fixes: + - Integer overflows in FLV, Qt, Real, WC3Movie, Matroska and FILM + demuxers, allowing remote attackers to trigger heap overflows and + possibly execute arbitrary code. (CVE-2008-1482) + * Added a few more memory allocation checks to the above demuxers. + * WAV file playback fix: don't assume that the first chunk is "fmt ". + * Don't try to play partial 24-bit AIFF frames (decoder would lose data). + * Fixed AIFF comment chunk handling and sample rate reading. + * LPCM fixes: input over-reading, conversion of 24-bit samples. + +xine-lib (1.1.11) 2008-03-19 + * Security fixes: + - Array Indexing Vulnerability in sdpplin_parse(). (CVE-2008-0073) + * Reworked the plugin directory naming so that external plugins don't have + to be rebuilt for every release. We now use a naming scheme based on the + API/ABI versioning, checking older directories - with this release, the + plugin directory name is 1.20, and if this gets bumped to 1.21 in a + future release, 1.20 will still be available for external plugins. + (Any directories not 1.* won't be looked in.) + * Made the version parsing much more reliable; it wasn't properly coping + with four-part version numbers. This affects any program whose build + scripts use xine-lib's automake macros. + * Fixed an off-by-one in the FLAC security fix patch. This breakage was + causing failure to play some files. + * Support 16-bit big-endian DTS audio. + * Improved frame snapshot API. (ABI extension.) + * Re-add support for # (stream parameter separator) in raw filenames, + without the bugs found in the original implementation. + (This is a convenience feature for users only. Front ends which rely on + it for functions like subtitle file detection must instead use file:// + MRLs; if they don't, we consider them to be buggy.) + * Fixed long delay when closing stream on dual core systems [Bug #33] + * DVD playback improvement: don't trust the file sizes. + * Build fixes for use with recent ffmpeg. + +xine-lib (1.1.10.1) 2008-02-07 + * Security fixes: + - Array index vulnerability which may allow remote attackers to execute + arbitrary code via a crafted FLAC tag, causing a stack buffer overflow. + (CVE-2008-0486) + - Buffer overflow in the Matroska demuxer (demuxers/demux_matroska.c) + which may allow remote attackers to cause a denial of service (crash) + or possibly execute arbitrary code via a Matroska file with invalid + frame sizes. (CVE-2008-1161) + * Fix a RealPlayer codec detection bug. + * Improve detection of MP3 streams with ID3v2 tags. Don't trust the tag + size. + +xine-lib (1.1.10) 2008-01-26 + * Security fixes: + - Buffer overflow which allows a remote attacker to execute arbitrary + code or crash the client program via a crafted ASF header. + (CVE-2008-1110, related to CVE-2006-1664) + * Update Ogg and Annodex mimetypes and extensions. + * Change the default v4l device paths to /dev/video0 and /dev/radio0. + * Fix support for subtitles with schemes (e.g. http://), partly broken + since 1.1.8. + * Unescape the filename in "#save:". This allows filenames to contain ';' + etc. without ambiguity, e.g. "#save:foo%3B1.ts" -> "foo;1.ts", but front + end authors should be careful with xine-lib older than 1.1.10. + * Backported xine-config & libxine.pc from 1.2. + Consequently, xine-config now requires pkg-config. + * Don't discard audio samples forever. Fixed streaming playback. + * Fix a possible crash on channel change in the DVB plugin. + * Flash video demuxer improvements and bug fixes. + * Make the V4L ALSA audio input device configurable. (This needs more work.) + +xine-lib (1.1.9.1) 2008-01-11 + * Security fixes: + - Buffer overflow which allows a remote attacker to execute arbitrary + code via a crafted SDP Abstract attribute. + (CVE-2008-0225, a.k.a. CVE-2008-0238) + (Fix ported from mplayer changeset 22821) * Fix a read-past-end bug in xine-lib's internal strtok_r replacement. - (Only affects systems without strtok_r.) + (Only affects systems without strtok_r.) [Bug #19] + * Fix a bug which causes video playback display errors on PPC/Darwin. -xine-lib (1.1.9) +xine-lib (1.1.9) 2008-01-06 * Fix dvd://.../title[.chapter] handling (somewhat broken in 1.1.8). * Fix switching DVB subtitles channels. * DVB sub: switch to dyn mem alloc and allow multiple CLUTs per page. @@ -13,11 +250,11 @@ xine-lib (1.1.9) * Improve handling of invalid or unknown frame sizes. * Fixed handling of streamed Flash videos (broken in 1.1.5). * Fixed division by zero in sputext decoder - * Build fix for when using Linux 2.6.23 headers. [Bug 1820958] + * Build fix for when using Linux 2.6.23 headers. [Bug SF 1820958] * Implemented decoding of XML character entities with codes >= 256. This requires conversion to UTF-8 of entities with codes >= 128. * Handle initial Unicde BOMs in XML; convert other UTF encodings to UTF-8. - * Fixed ATSC support. [Bug 1749508] + * Fixed ATSC support. [Bug SF 1749508] * Fixed a possible DVB plugin crash when switching channels. * Fixed a crash closing the frontend. [Bug #7] * Fixed deadlock on ao_close while paused. @@ -33,7 +270,7 @@ xine-lib (1.1.9) * Fixed a crash that happened when a video output was closed * Made the Real demuxer recognise simple lists of http references. * Require correct URL encoding of '#'s which aren't separators. - * Don't decode %nn in raw filenames. [Bug 1784272] + * Don't decode %nn in raw filenames. [Bug SF 1784272] * Always enable a52dec capabilities for external a52dec, this makes it possible to use the DJB accelerated FFT when using the external a52dec liba52 library. [Bug #9] @@ -50,7 +287,7 @@ xine-lib (1.1.9) * Workaround for subtitle rendering when using variable-length character encodings other than UTF-8. (There is probably still some breakage here.) -xine-lib (1.1.8) +xine-lib (1.1.8) 2007-08-27 * Send a channel-changed event to the frontend when receiving the SYNC string from last.fm streaming server. * Disable mediaLib support by default (the licenses probably disallow the @@ -68,7 +305,7 @@ xine-lib (1.1.8) * DVB subtitle fixes: deadlock prevention, thread leakage, spec compliance. * Allow the DVB input plugin to timeout if it is receiving no signal. * Fix an audio resampling problem which was causing regular clicking. - * Fix build with recent glibc and a debugging #define. [Bug 1773769] + * Fix build with recent glibc and a debugging #define. [Bug SF 1773769] * Fix handling of multiple MPEG TS audio streams & subtitle languages. * Add colouring for bold & italic in text subtitles. * Simple scaling of subtitles to fit the frame width (intended to cope @@ -76,12 +313,12 @@ xine-lib (1.1.8) * Various small video frame-handling bug fixes. * Add options to control bob deinterlacing in the XxMC video output plugin. -xine-lib (1.1.7) +xine-lib (1.1.7) 2007-06-07 * Support libdca (new name for libdts) by shuffling around the dts.h file. - * Add support for MDHD version 1 atom in demux_qt. [bug #1679398] + * Add support for MDHD version 1 atom in demux_qt. [Bug SF 1679398] * Handle single-quoted attribute values in XML. * Fix default paths for RealPlayer libraries (broken in 1.1.5). - [Bug 1707526] + [Bug SF 1707526] * Fix proxy usage when the hostnames cannot be resolved. Thanks to Jeff Mitchell for reporting and testing the fix. * Avoid zero-sized frames when demuxing MPEG PES. @@ -107,7 +344,7 @@ xine-lib (1.1.7) in 1.2 series. * Fix a colour format conversion crash in the fb video output driver. -xine-lib (1.1.6) +xine-lib (1.1.6) 2007-04-17 * Split the DirectFB plugin into X11 and non-X versions. * Improve the Mac OS X video output plugin. Thanks to Matt Messier. * Fixed the XcbXv plugin - an empty plugin would be built if "old" Xv @@ -119,10 +356,11 @@ xine-lib (1.1.6) * Fixed a CDDA-related crash and a DVD-related hang, both caused by the same change in 1.1.5. -xine-lib (1.1.5) +xine-lib (1.1.5) 2007-04-10 * Security fixes: - - Fix heap overflow in DMO loader. (CVE-2007-1246) [bug #1676925] + - Fix heap overflow in DMO and DirectShow loaders. Thanks to Kees Cook for reporting. + (CVE-2007-1246 & CVE-2007-1387) [Bug SF 1676925] * Improved PulseAudio plugin, now only one connection per instance is opened and the mainloop is threaded to reduce latency during playback. * Added XCB-based output plugins (Xv and XShm), to use in software using @@ -130,7 +368,7 @@ xine-lib (1.1.5) The plugins are contributed by Christoph Pfister with the help of Vincent Torri, Jamey Sharp and Christophe Thommeret. * Fix race condition in alsa audio out driver. - * Fixed a crash in the eq2 plugin. [Bug 1644312] + * Fixed a crash in the eq2 plugin. [Bug SF 1644312] * Fixed content type detection for AAC (seekable) streams with ID3v2 tags prefixed clobbering the preview buffer, by skipping over the tag. * Parse ID3v2 tags on AAC and FLAC files, as well as mp3 files. @@ -173,7 +411,7 @@ xine-lib (1.1.5) * Support multiple audio PID in MPEG TS. Patch by Julian Scheel. * Improvement in portability to OpenBSD, thanks to Pascal S. de Kloe. -xine-lib (1.1.4) +xine-lib (1.1.4) 2007-01-28 * Mark string-type configuration items according to whether they're plain strings or names of files, device nodes or directories. This information is available to front ends (via .num_value) so that they can present @@ -183,41 +421,42 @@ xine-lib (1.1.4) and previously applied by other distributions as well. Fixes the non-PIC code being generated. Note: patch reverted for tomsmocomp (segfault). * Fix race condition in audio_out by using a recursive mutex; patch by - Reinhard Nissl. [bug #1551911] + Reinhard Nissl. [Bug SF 1551911] * Allow building with Sun CC by fixing the lprintf variadic macro; patch by - Taso N. Devetzis. [bug #1614406] + Taso N. Devetzis. [Bug SF 1614406] * Fix disposing of image buffers in video_out_xv when SHM get disabled by - exhaustion of memory; patch by Matthias Drochner. [bug #1620339] + exhaustion of memory; patch by Matthias Drochner. [Bug SF 1620339] * Fix invalid memory access in Real Media ASM parser; reported by Roland - Kay. [bug #1603503] + Kay. [Bug SF 1603503] * Fix program termination due to invalid Real Media SDP; reported by Roland - Kay. [bug #1602663] + Kay. [Bug SF 1602663] * Fix invalid memory access in Real Media SDP with tailored stream; reported - by Roland Kay. [bug #1602631] + by Roland Kay. [Bug SF 1602631] * Don't check for libpostproc version and assume that if libavcodec is found correctly, libpostproc is of the same version, too. Reported by Ville - Skyttä. [bug #1617344] + Skyttä. [Bug SF 1617344] * Fix Shorten demuxer: the whole "ajkg" signature has to be found, not only - one character of it. [bug #1601134] + one character of it. [Bug SF 1601134] * Implement at least a partial content-based detection of ModPlug-decoded module files, using the magic numbers from GNU file. This allows to open module files based on content rather than on their extension only. - [bug #1445746] + [Bug SF 1445746] * Make the libFLAC-based decoder and demuxer for FLAC files work with recent FLAC release 1.1.3. * Replace --enable-flac configure option with --with-libflac, as the FLAC support is always built-in through the audio demuxer plugin and the FFmpeg decoder plugin, the option only controls the extra FLAC plugin that uses libFLAC both for demuxing and decoding. - * Implement a True Audio files demuxer. [bug #1586381] + * Implement a True Audio files demuxer. [Bug SF 1586381] * Allow decoding of MusePack SV 7.x files (7.1 files at least play fine). * Fix demuxing of uncompressed VobSub subtitles in Matroska files * ffmpeg update to 51.29.0 * Workaround ffmpeg buggy codecs that don't release their DR1 frames. - [bugs #1599975, #1601299, #1319154] + [Bugs SF 1599975, SF 1601299, SF 1319154] * Fix several segfaults and freezing problem with H264 streams that use a lot - of reference frames (eg. 15) [bugs #1603305, #1576588, #1267713] - * Fix mpeg4 artifacts introduced in cvs (not present in 1.1.3) [#1625911] + of reference frames (eg. 15) [Bugs SF 1603305, SF 1576588, SF 1267713] + * Fix mpeg4 artifacts introduced in cvs (not present in 1.1.3) + [Bug SF 1625911] * Initial support to enable/disable ffmpeg codecs. Codecs may be disabled in groups by --disable-ffmpeg-uncommon-codecs/--disable-ffmpeg-popular-codecs Think of "uncommon" codecs what people would never want to play with their @@ -236,13 +475,14 @@ xine-lib (1.1.4) * Don't crash when caching a file opened through Samba plugin, thanks to Timothy Redaelli from Gentoo. * Fix audio/video sync problem with NTSC DVDs (introduced in 1.1.2). - [bugs #1544349 and #1589644] + [Bugs SF 1544349, SF 1589644] -xine-lib (1.1.3) +xine-lib (1.1.3) 2006-12-03 * Security fixes: - Heap overflow in libmms (related to CVE-2006-2200) - - Buffer overrun in Real Media input plugin. [bug #1603458] + - Buffer overrun in Real Media input plugin. Thanks to Roland Kay for reporting and JW for the patch. + (CVE-2006-6172) [Bug SF 1603458] * Update build system to support x86 Darwin setups, and merge patches to support Darwin OS better. * Replace custom ALSA check with pkg-config check, and make sure 0.9.0 is @@ -259,31 +499,31 @@ xine-lib (1.1.3) supported by upstream, and it's replaced by PulseAudio. * Allow 0 for DVD title/chapter (navigation or full title). * New experimental JACK audio driver. - * Fix switch from alsa/dmix 2.0 to 5.1 [bug #1226595] - * Don't use proxy for localhost connection. [bug #1553633] + * Fix switch from alsa/dmix 2.0 to 5.1 [Bug SF 1226595] + * Don't use proxy for localhost connection. [Bug SF 1553633] * Use mmap() to open local files if available. * Use pkg-config to look for external FFmpeg. * Allow FFmpeg to play MP3s in case MAD is not present. * Reduce the dead time when trying to connect to dead hosts, by falling back to non-blocking sockets on the last address found for an host, and allowing - users to provide a connection timeout. [bug #1550844] + users to provide a connection timeout. [Bug SF 1550844] * Return the correct error message to frontends when a file is inaccessible or - the network connection is broken. [bug #1550763] + the network connection is broken. [Bug SF 1550763] * Support libcaca 0.99, thanks to cjacker huang. - * Fix crash on video-only WMV streams. [bug #1564598] + * Fix crash on video-only WMV streams. [Bug SF 1564598] * Report audio stream on Shorten files (required for Amarok to play them). - * Optionally use fontconfig to look up fonts to use for OSD. [bug #1551042] + * Optionally use fontconfig to look up fonts to use for OSD. [Bug SF 1551042] * Prefer FreeType2 rendered fonts to bitmap fonts. * Stone age platforms update * Enabled TrueSpeech codec * New X11 visual type: xine-lib may now use frontend's mutex/lock mechanism instead of XLockDisplay/XUnlockDisplay. - * Allow playing of OggFlac files. [bug #1590690] + * Allow playing of OggFlac files. [Bug SF 1590690] * Allow playing FLAC files with an ID3 tag at the start. * Fix some crashes caused by MP3 files (and possibly others) being misdetected as AAC. -xine-lib (1.1.2) +xine-lib (1.1.2) 2006-07-09 * Security fixes: - CVE-2005-4048: possible buffer overflow in libavcodec (crafted PNGs). - CVE-2006-2802: possible buffer overflow in the HTTP plugin. @@ -319,7 +559,7 @@ xine-lib (1.1.2) * Fixed some win32 codec freezes when configured w32-path doesn't exist * Add support for RealPlayer 10 codecs (from SUSE) -xine-lib (1.1.1) +xine-lib (1.1.1) 2005-11-15 * Improve sound quality when using alsa 1.0.9 or above. When playing a 44.1khz stream on a 48khz only capable sound card. It bypasses alsa-lib resampler and uses xine's @@ -342,9 +582,9 @@ xine-lib (1.1.1) * support gapless playback while switching streams (requires UI cooperation) * fix speed changing race causing deadlock with v4l plugin * cddb improvements/fixes (DTITLE/DYEAR parsing, timeout increase and - multiline entries support) [#1205274] + multiline entries support) [Bug SF 1205274] -xine-lib (1.1.0) +xine-lib (1.1.0) 2005-07-26 * new quality deinterlacer from dscaler: GreedyH (Greedy High Motion) * new quality deinterlacer from dscaler: TomsMoComp (Tom's Motion Compensated) * added help for most deinterlace methods @@ -370,20 +610,20 @@ xine-lib (1.0.2) rtsp://stream.samurai.fm/broadcast/live_hi.rm * fixed xxmc / xvmc mocomp / IDCT rendering errors caused by the big update. * support --enable-fpic with recent versions of gcc - * clip goom fps value to >= 1 [bug #1193783] + * clip goom fps value to >= 1 [Bug SF 1193783] * fixed xvmc plugin segfault when it tried software blending on nonexistant xv image * cleaned up libmpeg2 behaviour on xxmc plugin abrupt software fallback * use -fno-inline-functions with gcc < 3.4.0 (bug known to be in 3.3.5) * fix xxmc plugin wanting to change vld xvmc context when stream changes from - non-interlaced to interlaced [bug #1194350] + non-interlaced to interlaced [Bug SF 1194350] * speed up xx44 alphablending of large transparent areas * stop libmpeg2 XvMC IDCT / MOCOMP attempting software motion compensation - [bug #1194754] + [Bug SF 1194754] * improve xxmc cpu-usage for IDCT / MOCOMP acceleration through better locking - [bug #1195282] - * gcc4 build patches [bug #1175002] - * don't assume that file is in /usr/bin (build fix) [bug #1195539] - * plugin loader fixes - could cause xine to lock up hard on startup [bug #1196819] + [Bug SF 1195282] + * gcc4 build patches [Bug SF 1175002] + * don't assume that file is in /usr/bin (build fix) [Bug SF 1195539] + * plugin loader fixes - could cause xine to lock up hard on startup [Bug SF 1196819] * Fix xxmc bob deinterlacing for field-coded interlaced streams * Fix LE_64/BE_64 macros on non-x86 plataforms. may fixes issues with some demuxers like avi, asf and ogg. @@ -404,10 +644,10 @@ xine-lib (1.0.2) greater installed xine-lib (1.0.1) - * Big XvMC quality / correctness / cpu-usage fix. [bug #1114517] + * Big XvMC quality / correctness / cpu-usage fix. [Bug SF 1114517] * fixed builds with Xv or the entire X11 unavailable * updated internal copies of VCD libraries to libcdio 0.71 and vcdimager 0.7.21 - * fixed compatibility with new libtool versions [bug #1094262] + * fixed compatibility with new libtool versions [Bug SF 1094262] * renamed input.http_no_proxy to media.network.http_no_proxy * tightened no-proxy domain matching & added exact host match ('=' prefix) * assume that front ends can handle tabs (ffmpeg pp plugin help text) @@ -420,15 +660,15 @@ xine-lib (1.0.1) * fixed support of icecast 2 server * fixed some memleaks related to DVD playback and MPEG PES * fixed PNG/MNG image distortion and incorrect colouring - * fixed build on solaris and other platforms [bugs #1062987, #1114677 and - #1115001] + * fixed build on solaris and other platforms [Bugs SF 1062987, SF 1114677, + SF 1115001] * published documentation about Win32 platform * brand new DirectX audio output plugin for Windows * updated win32 MSVC port * used only ASCII characters for C locale * fixed cropping and zooming with vidix * fixed status reporting to honour IDLE status as documented - * fixed aborts on DVB channel switching [bug #1090707] + * fixed aborts on DVB channel switching [Bug SF 1090707] * updated vidix to 0.9.9 * plugin description accessor functions (may load plugins) * fixed translations, they were not used in some cases @@ -444,11 +684,11 @@ xine-lib (1.0.1) flexible plugin linking * support for Windows Media Audio Lossless -xine-lib (1.0) +xine-lib (1.0) 2004-12-25 * unbreak DXR3 plugin * fix crash in the AIFF demuxer on oversized chunks * fix crash in the sputext decoder when subtitles have too many lines - [bug #1086775] + [Bug SF 1086775] * added support for OGG chained streams * fixed deadlock with ASF chained streams due to fifo buffer leak * DVB Subtitles: fixed flashing, repeating subs, fix sync & timeouts @@ -459,15 +699,15 @@ xine-lib (1.0) * fixed crash related to relative HTTP redirect URLs (implemented canonicalisation) * linking libXv dynamically, fixes breakage of Xv plugin -xine-lib (1-rc8) +xine-lib (1-rc8) 2004-12-15 * Multiple security vulnerabilities fixed on PNM and Real RTSP clients * Rewrote OpenGL output plugin. * Fixed segfault when seeking with the "xvmc" and "xxmc" plugins playing files with IDCT / mocomp XvMC acceleration. * polypaudio sound server support - * fixed playback of MMS streams with the new input cache layer [bug #1066926] - * fixed builds without X11 [bug #1067705] - * added support for 24-bit LPCM from DVDs [bug #843786] + * fixed playback of MMS streams with the new input cache layer [Bug SF 1066926] + * fixed builds without X11 [Bug SF 1067705] + * added support for 24-bit LPCM from DVDs [Bug SF 843786] * Fixed segfault in xxmc plugin when switch from software decoding to accelerated decoding occured while software surfaces still needed to be duplicated. @@ -493,7 +733,7 @@ xine-lib (1-rc8) * meta info (title, artist, etc) returned by the xine-lib is now UTF8 * new XINE_META_INFO_TRACK_NUMBER meta info -xine-lib (1-rc7) +xine-lib (1-rc7) 2004-11-04 * Build system improvements: replacement functions, better work with headers * Set the codec name for Real Media even if we can't play the files * Fix win32 playback on recent versions of Linux @@ -518,9 +758,9 @@ xine-lib (1-rc7) "The Lord of the Rings - The Two Towers" * fixed wrong subtitle appearing in the trailer of "Girl, Interrupted" RC2 * fixed "NAV packet expected, but none found" error when toggling between - menu and feature with the Escape key [bug #1025469] + menu and feature with the Escape key [Bug SF 1025469] * video image scaling can now be disabled for more video output plugins - than XShm [feature requests #987635, #856408] + than XShm [feature requests SF 987635, SF 856408] * Updated the xxmc driver with a better software fallback mechanism * Fixed playback of OpenDML streams generated by mencoder * Fixed playback of incomplete OpenDML streams @@ -534,12 +774,12 @@ xine-lib (1-rc7) overhead of expensive system calls for reading just a couple of bytes. may be disabled with MRL parameter "#nocache". * use monotonic clock where available (eg. linux 2.6) so system clock - updates won't disturb xine playback. [bug #781532] + updates won't disturb xine playback. [Bug SF 781532] * fixed seeking unresponsiveness when using external subtitles * Allowed multiple simultaneous thread access in parts of the xxmc driver, assuming that XvMC libraries are thread-safe. -xine-lib (1-rc6) +xine-lib (1-rc6) 2004-09-16 * Moved win32 frontend into separate module. * Fixed Xv initialization to enable multiple instances of the Xv plugin * Removed XInitThreads() call from some video out plugins because it @@ -554,9 +794,9 @@ xine-lib (1-rc6) * Added quality improvements for full frame rate deinterlacing modes * Added support for 44100Hz DTS in .wav files. * Added ability to Restore initial xv port attributes on exit - [bugs #965572, #957599] - * Fixed brightness drift problem (loss of color) [bugs #947520, #963587] - * Fixed rare heap overflow with some DVD subpictures [bug #923843] + [Bugs SF 965572, SF 957599] + * Fixed brightness drift problem (loss of color) [Bugs SF 947520, SF 963587] + * Fixed rare heap overflow with some DVD subpictures [Bug SF 923843] * Fixed stack overflows in the VCD plugin * Added experimental time stretching plugin: play stream faster or slower than original speed, optionally preserving pitch @@ -570,8 +810,8 @@ xine-lib (1-rc6) * next stage of MINGW port - engine library compiles now * Improved DVD MRL handling. * Improved Transport stream handling. - * Fixed wrong, very bright overlays on some DVDs [bug #1018193] - * Fixed WIN32 replacement of gettimeofday [bug #995961] + * Fixed wrong, very bright overlays on some DVDs [Bug SF 1018193] + * Fixed WIN32 replacement of gettimeofday [Bug SF 995961] * Removed unistd.h from public header * Added experimental support for H.264/AVC video * Added support for 3ivx video @@ -610,7 +850,7 @@ xine-lib (1-rc5) * fix DVD playback from a specified title/part with dvd:/<title>.<part> MRLs -xine-lib (1-rc4a) +xine-lib (1-rc4a) 2004-05-12 * audio out now uses a more user friendly "Speaker arrangement" config item; this defaults to stereo, so if you use a different speaker arragement, like 5.1 or other surround setups, you have to reconfigure xine using this item @@ -626,7 +866,7 @@ xine-lib (1-rc4a) * several DVB improvements. add dvbs://, dvbc:// and dvbt:// mrls * fix static noise produced by WMA streams in some systems -xine-lib (1-rc4) +xine-lib (1-rc4) 2004-04-28 * experimental DTS software decoder using libdts * SPU decoder: timestamp handling for NAV packets fixes the menu on the first DVD of "24" season 1 @@ -665,7 +905,7 @@ xine-lib (1-rc4) * seeking support for matroska files * libmpeg2 now has native VIS motion compensation routines on SPARC -xine-lib (1-rc3c) +xine-lib (1-rc3c) 2004-04-08 * fix the deadlock with non-seekable input plugins * guess codeset for OSD if nl_langinfo(CODESET) is missing or not working * new option - list of domains, where don't use proxy @@ -685,7 +925,7 @@ xine-lib (1-rc3c) DVD of "24" season 1 * fixed audio sync method "resampling" -xine-lib (1-rc3b) +xine-lib (1-rc3b) 2004-03-17 * fix SDL plugin that was broken in rc3 * updated libfaad 2.0 RC3 cvs (fix some raw aac problems, HE support) * Win32 Cygwin updates, using DirectX @@ -741,7 +981,7 @@ xine-lib (1-rc3b) Sound is now continuous. * fix playback of ogg/ogm files larger than 2GB -xine-lib (1-rc3a) +xine-lib (1-rc3a) 2003-12-28 * new subtitle formats: jacobsub, subviewer 2.0, subrip 0.9 * auto hiding of the subtitles * raw AAC file demuxer @@ -753,7 +993,7 @@ xine-lib (1-rc3a) * update win32 port, working ffmpeg decode plugin * fixed segfault when running in verbose mode -xine-lib (1-rc3) +xine-lib (1-rc3) 2003-12-16 * fix dvd menu blending when using tvtime plugin (yuy2 blend) * fix problems with some more elaborate post plugin setups * discontinuity problems in audio only streams fixed @@ -795,7 +1035,7 @@ xine-lib (1-rc3) * fix playback of 8 bit sound when the soundcard doesn't support them -xine-lib (1-rc2) +xine-lib (1-rc2) 2003-10-25 * XvMC support for hardware accelerated mpeg2 playback (-V xvmc) * Fix some errors in sound state when exiting xine and using alsa. * new tvtime/deinterlacer algorithm scalerbob @@ -871,11 +1111,11 @@ xine-lib (1-rc1) * initial id3v2 support (id3v2.3 and id3v2.4 are not yet supported) * Fix blocking on xine start when using alsa. -xine-lib (1-rc0a) +xine-lib (1-rc0a) 2003-08-02 * includes ffmpeg's MPEG encode in dist tarball (fixes DXR3 support) * don't abort on MPEG_block stream errors -xine-lib (1-rc0) +xine-lib (1-rc0) 2003-08-01 * improved seeking accuracy of ogg_demuxer * xine broadcaster (send stream to multiple xine clients simultaneously) start master with 'xine --broadcast-port xxxx' @@ -924,7 +1164,7 @@ xine-lib (1-beta12) * input_pvr (ivtv) updates * demux_mpeg_block improved to cure problems with VCDs and bogus encrypted messages. -xine-lib (1-beta11) +xine-lib (1-beta11) 2003-04-28 * fix bugs in selecting ogm subtitles * fix multiple lines subtitles' display in OGM container * fix fastforward bug (slow playback with unused cpu cicles) @@ -943,7 +1183,7 @@ xine-lib (1-beta11) * Quicktime fixes (now all Matrix: Reloaded teasers and trailers play) * fix playback of video files created by Canon digital cameras -xine-lib (1-beta10) +xine-lib (1-beta10) 2003-04-08 * loading and displaying png images (e.g. for logos) * capability of on-the-fly stream rewiring * libdvdnav: PGC based positioning: @@ -964,7 +1204,7 @@ xine-lib (1-beta10) * DVD: menu calls ("Escape" in xine-ui) can now jump back from the menu into the movie as well -xine-lib (1-beta9) +xine-lib (1-beta9) 2003-03-22 * implement XINE_PARAM_AUDIO_AMP_LEVEL so xine's volume can be set independantly from other applications * mpeg-4 postprocessing support added to ffmpeg video decoder @@ -986,7 +1226,7 @@ xine-lib (1-beta9) xine-lib (1-beta8) * fix DVD highlight problems -xine-lib (1-beta7) +xine-lib (1-beta7) 2003-03-07 * libdvdnav updated to 0.1.6cvs: fixes a whole class of problems caused by dvdnav being a bit ahead in the stream due to xine's fifos * libdvdread updated to 0.9.4 @@ -1003,7 +1243,7 @@ xine-lib (1-beta7) * .rm file reference handling bugfxi * mute console output unless XINE_PARAM_VERBOSE is set -xine-lib (1-beta6) +xine-lib (1-beta6) 2003-02-24 * inform the width and height for the v4l input plugin * ffmpeg aspect ratio detection code fixed * demux_ogg arm patch by dilb @@ -1011,7 +1251,7 @@ xine-lib (1-beta6) * plugin loader segfault fix * fb configure check fixed -xine-lib (1-beta5) +xine-lib (1-beta5) 2003-02-21 * new AV sync strategy (audio resample) for DXR3 users * improved fb driver with zero copy * fix the v4l plugin for lower resolution devices (webcam) @@ -1041,13 +1281,13 @@ xine-lib (1-beta5) * make number of video buffer configurable by the user (performance tuning option) -xine-lib (1-beta4) +xine-lib (1-beta4) 2003-01-29 * http input fixes * rtsp input fixes (remove long wait on end of stream) * build fixes * support for reference streams (.asx, .ram) -xine-lib (1-beta3) +xine-lib (1-beta3) 2003-01-28 * PSX STR file demuxer * Westwood Studios AUD demuxer * PVA file demuxer @@ -1074,14 +1314,14 @@ xine-lib (1-beta3) * fixed yuy2 overlays on big-endian systems * experimental tvout support using nvtvd (configure --enable-nvtv) -xine-lib (1-beta2) +xine-lib (1-beta2) 2003-01-02 * what a GOOM! post plugin * Digital TV (DVB) input plugin (experimental) * Interplay MVE playback system (file demuxer, video decoder, audio decoder) * support for real video 4.0 (through external real binary plugins) * quicktime binary-only codec support bugfixes -xine-lib (1-beta1) +xine-lib (1-beta1) 2002-12-24 * updated libfaad * improved engine for seeking and slider positioning * network input plugin is working again @@ -1098,7 +1338,7 @@ xine-lib (1-beta1) * raw dv demuxer added * many FLI/FLC fixes -xine-lib (1-beta0) +xine-lib (1-beta0) 2002-12-11 * fix decoder priority configuration * cache available plugins for faster xine loading * metronom's improvements for streams with slightly wrong sample rates @@ -1111,7 +1351,7 @@ xine-lib (1-beta0) * MPEG-4 file (*.mp4) support * closed caption support ported to new architecture -xine-lib (1-alpha2) +xine-lib (1-alpha2) 2002-11-27 * configurable image position * DVD menu button highlight position fixes * internal engine changes to allow a new layer of post effect plugins @@ -1123,7 +1363,7 @@ xine-lib (1-alpha2) * arts audio output plugin ported to new architecture * esound audio output plugin ported to new architecture -xine-lib (1-alpha1) +xine-lib (1-alpha1) 2002-11-20 * transport stream demuxer fixes * DVD playback should be working again (please report DVDs that don't play!) * stdin_fifo input plugin @@ -1132,7 +1372,7 @@ xine-lib (1-alpha1) * XviD decoder is working again * DV decoder (ffmpeg) -xine-lib (1-alpha0) +xine-lib (1-alpha0) 2002-11-04 * dvd plugin replaced by dvdnav with full menu support * fix segfault on exit for w32codecs @@ -1176,7 +1416,7 @@ xine-lib (1-alpha0) * URI conforming MRL syntax, new delimiter # for various stream parameters * variuos fixes for dxr3 overlay mode -xine-lib (0.9.13) unstable; urgency=low +xine-lib (0.9.13) 2002-08-03 * improved audio resampling for cards limited to 16 bits, stereo or mono * native wmv7 decoder using ffmpeg @@ -1201,7 +1441,7 @@ xine-lib (0.9.13) unstable; urgency=low -- Siggi Langauf <siggi@debian.org> Sat, 3 Aug 2002 22:44:16 +0200 -xine-lib (0.9.12) unstable; urgency=low +xine-lib (0.9.12) 2002-06-23 * demux_ts fixes for ATSC streams * configurable size of avi subtitles @@ -1213,7 +1453,7 @@ xine-lib (0.9.12) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> -xine-lib (0.9.11) unstable; urgency=low +xine-lib (0.9.11) 2002-06-20 * sync with ffmpeg cvs * some endianess and 64bit machine fixes @@ -1235,7 +1475,7 @@ xine-lib (0.9.11) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> -xine (0.9.10) unstable; urgency=low +xine (0.9.10) 2002-05-28 * fixed snapshot: capture current frame with overlays * AVI progressive index reconstruction @@ -1256,7 +1496,7 @@ xine (0.9.10) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> -xine (0.9.9) unstable; urgency=low +xine (0.9.9) 2002-05-28 * new (fast) demuxer seeking * libdivx4 updated to support divx5 @@ -1282,7 +1522,7 @@ xine (0.9.9) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sat Apr 20 20:32:33 CEST 2002 -xine (0.9.8) unstable; urgency=low +xine (0.9.8) 2002-01-16 * Linux framebuffer video out driver (experimental) * several bugfixes @@ -1299,7 +1539,7 @@ xine (0.9.8) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sun Jan 13 16:15:07 CET 2002 -xine (0.9.7) unstable; urgency=low +xine (0.9.7) 2001-12-11 * fix some win32 dll segfaults * seamless branching on input_dvd @@ -1311,7 +1551,7 @@ xine (0.9.7) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Tue Nov 27 01:20:06 CET 2001 -xine (0.9.6) unstable; urgency=low +xine (0.9.6) 2001-11-28 * demux_asf big fragments handling * working setup dialog (experimental) @@ -1323,7 +1563,7 @@ xine (0.9.6) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Tue Nov 27 01:20:06 CET 2001 -xine (0.9.5) unstable; urgency=low +xine (0.9.5) 2001-11-23 * improved responsiveness (pause, stop, resume, seek) * catch segfaults when loading plugins @@ -1342,7 +1582,7 @@ xine (0.9.5) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Fri Nov 23 14:10:26 CET 2001 -xine (0.9.4) unstable; urgency=low +xine (0.9.4) 2001-11-04 * new SyncFB video out plugin (see README.syncfb) * catch SIGSEGV during libdivxdecore version probing. see README.divx4. @@ -1350,7 +1590,7 @@ xine (0.9.4) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sun Nov 4 23:43:55 CET 2001 -xine (0.9.3) unstable; urgency=low +xine (0.9.3) 2001-11-02 * XShm gamma adjusting (brightness) * bugfix: lot skipped frames and low cpu @@ -1369,7 +1609,7 @@ xine (0.9.3) unstable; urgency=low * dxr3 still-menu/audio sync fixes / menu buttons now auto-display * dxr3 now keeps BCS values in .xinerc / Aspect ratio autodetection -xine (0.9.2) unstable; urgency=low +xine (0.9.2) 2001-10-16 * bugfixes * ogg/vorbis support @@ -1383,7 +1623,7 @@ xine (0.9.2) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sun Oct 14 20:13:20 CEST 2001 -xine (0.9.1) unstable; urgency=low +xine (0.9.1) 2001-09-17 * support for subtitle names * new software deinterlacer (try --deinterlace; caution: CPU intensive!) @@ -1393,7 +1633,7 @@ xine (0.9.1) unstable; urgency=low -- Siggi Langauf <siggi@debian.org> Tue, 18 Sep 2001 01:48:38 +0200 -xine (0.9.0) unstable; urgency=low +xine (0.9.0) 2001-09-13 * generic menu support * many bugfixes @@ -1402,13 +1642,13 @@ xine (0.9.0) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Fri Sep 14 01:37:31 CEST 2001 -xine (0.5.3) unstable; urgency=low +xine (0.5.3) 2001-09-05 * small bugfix release -- Guenter Bartsch <guenter@users.sourceforge.net> Wed Sep 5 02:41:11 CEST 2001 -xine (0.5.2) unstable; urgency=low +xine (0.5.2) 2001-09-03 * many bugfixes * ffmpeg (mpeg4, opendivx ...) works on bigendian machines now @@ -1420,14 +1660,14 @@ xine (0.5.2) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sun Sep 2 23:47:00 CEST 2001 -xine (0.5.1) unstable; urgency=low +xine (0.5.1) 2001-08-10 * ffmpeg plugin (OpenDivX, MS mpeg 4, motion-jpeg support) * various bugfixes -- Guenter Bartsch <guenter@users.sourceforge.net> Sat, 11 Aug 2001 01:39:12 +0200 -xine (0.5.0) unstable; urgency=low +xine (0.5.0) 2001-08-05 This is the big, long-awaited architecture change @@ -1444,7 +1684,7 @@ xine (0.5.0) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sun, 22 Jul 2001 13:10:52 +0200 -xine (0.4.3) unstable; urgency=low +xine (0.4.3) 2001-05-16 This is a minor bugfix release @@ -1457,7 +1697,7 @@ xine (0.4.3) unstable; urgency=low -- Guenter Bartsch <guenter@users.sourceforge.net> Sun, 16 May 2001 22:59:00 +0200 -xine (0.4.2) unstable; urgency=low +xine (0.4.2) 2001-05-06 This is mainly a bugfix release for those who want a stable xine _now_, before the new, better, universal 0.5 architecture has stabilized. @@ -1475,7 +1715,7 @@ xine (0.4.2) unstable; urgency=low -- Siggi Langauf <siggi@debian.org> Sun, 6 May 2001 14:24:01 +0200 -xine (0.4.0) unstable; urgency=low +xine (0.4.0) 2001-03-02 * new multithreaded architecture - xine becomes idle * notable performance improvements @@ -1487,7 +1727,7 @@ xine (0.4.0) unstable; urgency=low -- Siggi Langauf <siggi@debian.org> Sat, 3 Mar 2001 01:36:39 +0100 -xine (0.3.7) unstable; urgency=low +xine (0.3.7) 2001-02-04 * subpicture/subtitle support * experimental AC3 digital output with some ALSA drivers @@ -1497,7 +1737,7 @@ xine (0.3.7) unstable; urgency=low -- Siggi Langauf <siggi@debian.org> Sun, 4 Feb 2001 14:44:23 +0100 -xine (0.3.6) unstable; urgency=low +xine (0.3.6) 2001-01-22 * support for field pictures * added autoprobing for audio driver @@ -1511,7 +1751,7 @@ xine (0.3.6) unstable; urgency=low -- Siggi Langauf <siggi@debian.org> Mon, 22 Jan 2001 02:06:08 +0100 -xine (0.3.5) unstable; urgency=low +xine (0.3.5) 2001-01-10 * (hopefully) fixed autoconf for Athlon processors * fixed aspect ratio calculation (=> SVCD support) @@ -1524,7 +1764,7 @@ xine (0.3.5) unstable; urgency=low -- Siggi Langauf <siggi@users.sourceforge.net> Wed, 10 Jan 2001 11:10:57 +0100 -xine (0.3.4) unstable; urgency=low +xine (0.3.4) 2001-01-08 * re-debianized package using debhelper (much cleaner debian packages) @@ -1535,8 +1775,7 @@ xine (0.3.4) unstable; urgency=low -- Siggi Langauf <siggi@users.sourceforge.net> Mon, 8 Jan 2001 04:03:11 +0100 - -xine (0.3.3) unstable; urgency=low +xine (0.3.3) 2001-01-04 * playlist, autoplay function * seamless branching @@ -1547,8 +1786,7 @@ xine (0.3.3) unstable; urgency=low -- Siggi Langauf <siggi@users.sourceforge.net> Thu, 04 Jan 2001 01:37:42 +0100 - -xine (0.3.2) unstable; urgency=low +xine (0.3.2) 2000-12-13 * audio rate up/downsampling * new yuv2rgb routines @@ -1562,16 +1800,14 @@ xine (0.3.2) unstable; urgency=low -- Siggi Langauf <siggi@users.sourceforge.net> Wed, 13 Dec 2000 02:44:18 +0100 - -xine (0.3.1p1) unstable; urgency=high +xine (0.3.1p1) 2000-11-21 * Bugfix for Debian package: 0.3.1 always segfaulted. This release should work... -- Siggi Langauf <siggi@users.sourceforge.net> Tue, 21 Nov 2000 21:43:18 +0100 - -xine (0.3.1) unstable; urgency=low +xine (0.3.1) 2000-11-20 * Initial release of Debian package. @@ -1583,36 +1819,42 @@ xine (0.3.1) unstable; urgency=low -- Siggi Langauf <siggi@users.sourceforge.net> Sun, 19 Nov 2000 15:33:28 +0100 -xine (0.3.0+older) unstable; urgency=low - - 0.3.0 - - NULL audio driver (ability to run without sound card) - - ALSA audio driver - - pause function - - simple playlist function - - massive performance improvements for xshm - through subslice output - - gui/skin improvements - - improved build process - - improved internal architecture - - many minor updates/bugfixes - - 0.2.4 - this is a maintenance/bugfix - release, just wanted to release all the small little changes - before we go for the next big architecture update that will - be in the 0.3.x series - - - 0.2.3 - - included patches by Alan Cox: - net_plugin, bug fixes (i.e. VCD ...) - - xshm video output module fixed for bpp>16 - (but don't use that for speed reasons!) - - new iDCT_mmx code from walken - => picture quality massively improved :)) - - FAQ update - - speed improvements due to new compiler switches - - minor Makefile fixes for FreeBSD ports +xine (0.3.0) 2000-11-18 + + - NULL audio driver (ability to run without sound card) + - ALSA audio driver + - pause function + - simple playlist function + - massive performance improvements for xshm through subslice output + - gui/skin improvements + - improved build process + - improved internal architecture + - many minor updates/bugfixes + +xine (0.2.4) 2000-10-30 + + - this is a maintenance/bugfix release, just wanted to release all the + small little changes before we go for the next big architecture update + that will be in the 0.3.x series + +xine (0.2.3) 2000-10-15 + + - included patches by Alan Cox: + net_plugin, bug fixes (i.e. VCD ...) + - xshm video output module fixed for bpp>16 + (but don't use that for speed reasons!) + - new iDCT_mmx code from walken + => picture quality massively improved :)) + - FAQ update + - speed improvements due to new compiler switches + - minor Makefile fixes for FreeBSD ports -- Siggi Langauf <siggi@users.sourceforge.net> Sun, 7 Jan 2001 23:59:12 +0100 + +xine (0.2.2) 2000-10-10 + +xine (0.2.1) 2000-10-10 + +xine (0.2.0) 2000-09-28 + +xine (0.1.3) 2000-08-17 diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 5458714e1..000000000 --- a/INSTALL +++ /dev/null @@ -1,234 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006 Free Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -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. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - 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 -disabled by default to prevent problems with accidental use of stale -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 -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`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: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - 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. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. 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 - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -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. - - 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=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 -same time, by placing the object files for each architecture in their -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 `..'. - - 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. - -Installation Names -================== - -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'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - 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. - - 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 -`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 -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -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 -`--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: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - 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 -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -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'. -`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. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -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 -them in the `configure' command line, using `VAR=value'. For example: - - ./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). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/Makefile.am b/Makefile.am index 5c86dcb68..c585434d6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,25 +13,21 @@ DEBFILES = debian/README.Debian debian/changelog debian/control \ debian/shlibdeps.sh debian/libxine-dev.install debian/libxine1.install EXTRA_DIST = config.rpath autogen.sh \ - ChangeLog \ configure \ config.guess \ config.sub \ - COPYING \ INSTALL \ install-sh \ libtool \ ltmain.sh \ missing \ - NEWS \ - README \ - TODO \ depcomp \ - CREDITS \ @DEPCOMP@ CONFIG_CLEAN_FILES = libtool +dist_doc_DATA = COPYING NEWS README TODO CREDITS ChangeLog + docs: @cd doc && $(MAKE) $@ @@ -90,6 +86,8 @@ uninstall-hook: install-data-hook: @rm -f $(DESTDIR)$(XINE_PLUGINDIR)/*.la @rm -f $(DESTDIR)$(XINE_PLUGINDIR)/*/*.la + @rm -f $(DESTDIR)$(XINE_PLUGINDIR)/*.dll.a + @rm -f $(DESTDIR)$(XINE_PLUGINDIR)/*/*.dll.a @if test -x "$(top_srcdir)/post-install.sh" ; then \ $(top_srcdir)/post-install.sh ; \ fi @@ -112,3 +110,6 @@ maintainer-clean-generic: maintainer-clean-generic-hook: rm -f config.status + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) && $(SED) -i -e '/gnu_ld/,/;;/ s/--rpath \$${wl}/--rpath,/' $@ @@ -19,7 +19,7 @@ Individual frontends (e.g. xine-ui, gxine, totem, ...) may provide additional documentation in their packages. For more information on xine features (supported multimedia formats etc.) -see the xine homepage, located at http://xinehq.de/ +see the xine homepage, located at http://www.xine-project.org/ The xine-lib XML parser (src/xine-utils/xmlparser.[ch] and src/xine-utils/xmllexer.[ch]) is released under the GNU LGPL, see COPYING.LIB diff --git a/autogen.sh b/autogen.sh index cb8c637d2..d54f9b4e9 100755 --- a/autogen.sh +++ b/autogen.sh @@ -37,12 +37,13 @@ case `echo -n` in *) _echo_n=-n _echo_c=;; esac +srcdir="`dirname "$0"`" + detect_configure_ac() { - srcdir=`dirname $0` test -z "$srcdir" && srcdir=. - (test -f $srcdir/configure.ac) || { + (test -f "$srcdir"/configure.ac) || { echo $_echo_n "*** Error ***: Directory "\`$srcdir\`" does not look like the" echo " top-level directory" exit 1 @@ -106,6 +107,7 @@ run_autoconf () { echo $_echo_n " + Running autoconf: $_echo_c"; autoconf; + sed -i -e '/gnu_ld/,/;;/ s/--rpath \${wl}/--rpath,/' configure echo "done." } @@ -227,6 +229,11 @@ run_aclocal () { echo fi + echo $_echo_n " + Running autopoint: $_echo_c" + + autopoint + echo "done." + echo $_echo_n " + Running aclocal: $_echo_c" aclocal -I m4 @@ -243,7 +250,11 @@ run_configure () { echo " ** If you wish to pass arguments to ./configure, please" echo " ** specify them on the command line." fi - ./configure "$@" + if test -f configure; then + ./configure "$@" + else + "$srcdir"/configure "$@" + fi } @@ -251,6 +262,7 @@ run_configure () { # MAIN #--------------- detect_configure_ac +cd "$srcdir" detect_autoconf detect_libtool detect_automake @@ -278,18 +290,20 @@ case "$1" in run_libtoolize ;; noconfig) - run_aclocal run_libtoolize + run_aclocal run_autoheader run_automake run_autoconf ;; *) - run_aclocal run_libtoolize + run_aclocal run_autoheader run_automake run_autoconf + # return to our original directory + cd - >/dev/null run_configure "$@" ;; esac diff --git a/config.rpath b/config.rpath deleted file mode 100755 index 3f1bef34a..000000000 --- a/config.rpath +++ /dev/null @@ -1,571 +0,0 @@ -#! /bin/sh -# 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. -# Taken from GNU libtool, 2001 -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# 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. -# -# The first argument passed to this file is the canonical host specification, -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld -# should be set by the caller. -# -# The set of defined variables is at the end of this script. - -# Known limitations: -# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer -# than 256 bytes, otherwise the compiler driver will dump core. The only -# 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, -# which needs '.lib'). -libext=a -shrext=.so - -host="$1" -host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -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 AC_LIBTOOL_PROG_COMPILER_PIC. - -wl= -if test "$GCC" = yes; then - wl='-Wl,' -else - case "$host_os" in - aix*) - wl='-Wl,' - ;; - darwin*) - case "$cc_basename" in - xlc*) - wl='-Wl,' - ;; - esac - ;; - mingw* | pw32* | os2*) - ;; - hpux9* | hpux10* | hpux11*) - wl='-Wl,' - ;; - irix5* | irix6* | nonstopux*) - wl='-Wl,' - ;; - newsos6) - ;; - linux*) - case $cc_basename in - icc* | ecc*) - wl='-Wl,' - ;; - pgcc | pgf77 | pgf90) - wl='-Wl,' - ;; - ccc*) - wl='-Wl,' - ;; - como) - wl='-lopt=' - ;; - esac - ;; - osf3* | osf4* | osf5*) - wl='-Wl,' - ;; - sco3.2v5*) - ;; - solaris*) - wl='-Wl,' - ;; - sunos4*) - wl='-Qoption ld ' - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - wl='-Wl,' - ;; - sysv4*MP*) - ;; - unicos*) - wl='-Wl,' - ;; - uts4*) - ;; - esac -fi - -# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. - -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no - -case "$host_os" in - cygwin* | mingw* | pw32*) - # 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++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - case "$host_os" in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - fi - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we cannot use - # them. - ld_shlibs=no - ;; - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - cygwin* | mingw* | pw32*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - netbsd*) - ;; - solaris* | sysv5*) - 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 - : - else - ld_shlibs=no - fi - ;; - 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 - : - else - ld_shlibs=no - 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' - fi -else - case "$host_os" in - aix3*) - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - aix4* | aix5*) - 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. - aix_use_runtimelinking=no - else - aix_use_runtimelinking=no - # 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*) - 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 - hardcode_libdir_separator=':' - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - fi - # Begin _LT_AC_SYS_LIBPATH_AIX. - echo 'int main () { return 0; }' > conftest.c - ${CC} ${LDFLAGS} conftest.c -o conftest - aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` - if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` - fi - if test -z "$aix_libpath"; then - aix_libpath="/usr/lib:/lib" - fi - rm -f conftest.c conftest - # End _LT_AC_SYS_LIBPATH_AIX. - if test "$aix_use_runtimelinking" = yes; then - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - else - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - fi - fi - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - bsdi[45]*) - ;; - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - libext=lib - ;; - darwin* | rhapsody*) - hardcode_direct=no - if test "$GCC" = yes ; then - : - else - case "$cc_basename" in - xlc*) - ;; - *) - ld_shlibs=no - ;; - esac - fi - ;; - dgux*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - freebsd1*) - ld_shlibs=no - ;; - freebsd2.2*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - freebsd2*) - hardcode_direct=yes - hardcode_minus_L=yes - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - hpux9*) - 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 - ;; - hpux10* | hpux11*) - 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_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. - hardcode_minus_L=yes - ;; - esac - fi - ;; - irix5* | irix6* | nonstopux*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - netbsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - newsos6) - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - 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' - 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 - ;; - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - osf3*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - osf4* | osf5*) - if test "$GCC" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - # Both cc and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - sco3.2v5*) - ;; - solaris*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - sunos4*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - ;; - sysv4) - case $host_vendor in - sni) - hardcode_direct=yes # is this really true??? - ;; - siemens) - hardcode_direct=no - ;; - motorola) - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - ;; - sysv4.3*) - ;; - sysv4*MP*) - if test -d /usr/nec; then - ld_shlibs=yes - fi - ;; - sysv4.2uw2*) - hardcode_direct=yes - hardcode_minus_L=no - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - ;; - sysv5*) - hardcode_libdir_flag_spec= - ;; - uts4*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - *) - ld_shlibs=no - ;; - esac -fi - -# Check dynamic linker characteristics -# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. -libname_spec='lib$name' -case "$host_os" in - aix3*) - ;; - aix4* | aix5*) - ;; - amigaos*) - ;; - beos*) - ;; - bsdi[45]*) - ;; - cygwin* | mingw* | pw32*) - shrext=.dll - ;; - darwin* | rhapsody*) - shrext=.dylib - ;; - dgux*) - ;; - freebsd1*) - ;; - kfreebsd*-gnu) - ;; - freebsd*) - ;; - gnu*) - ;; - hpux9* | hpux10* | hpux11*) - case "$host_cpu" in - ia64*) - shrext=.so - ;; - hppa*64*) - shrext=.sl - ;; - *) - shrext=.sl - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case "$host_os" in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; - *) libsuff= shlibsuff= ;; - esac - ;; - esac - ;; - linux*oldld* | linux*aout* | linux*coff*) - ;; - linux*) - ;; - knetbsd*-gnu) - ;; - netbsd*) - ;; - newsos6) - ;; - nto-qnx*) - ;; - openbsd*) - ;; - os2*) - libname_spec='$name' - shrext=.dll - ;; - osf3* | osf4* | osf5*) - ;; - sco3.2v5*) - ;; - solaris*) - ;; - sunos4*) - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - ;; - sysv4*MP*) - ;; - uts4*) - ;; -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_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=/' <<EOF - -# How to pass a linker flag through the compiler. -wl="$escaped_wl" - -# Static library suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally "so"). -shlibext="$shlibext" - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="$hardcode_libdir_separator" - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct="$hardcode_direct" - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L="$hardcode_minus_L" - -EOF diff --git a/configure.ac b/configure.ac index f92318924..b765782ce 100644 --- a/configure.ac +++ b/configure.ac @@ -4,6 +4,7 @@ dnl AC_INIT AC_CONFIG_SRCDIR([src/xine-engine/xine.c]) +AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_LIBOBJ_DIR([lib]) dnl @@ -16,15 +17,17 @@ dnl XINE_SUB += 1; XINE_PATCH = ''; continue with XINE_LT_* values below dnl XINE_MAJOR=1 XINE_MINOR=1 -XINE_SUB=9 -# XINE_PATCH should be left empty or set to ".1" or ".2" or something similar -XINE_PATCH=.1 - -#if test $XINE_SUB -eq 0 ; then -# XINE_SUBPART=""; -#else +XINE_SUB=16 +dnl XINE_PATCH should be left empty or set to ".1" or ".2" or something similar +XINE_PATCH=.3 +dnl Release series number (usually $XINE_MAJOR.$XINE_MINOR) +XINE_SERIES=1.1 + +dnl if test $XINE_SUB -eq 0 ; then +dnl XINE_SUBPART=""; +dnl else XINE_SUBPART=".$XINE_SUB$XINE_PATCH" -#fi +dnl fi dnl The libtool version numbers (XINE_LT_*); Don't even think about faking this! dnl @@ -51,9 +54,9 @@ dnl are platform dependent dnl * in Linux, the library will be named dnl libname.so.(XINE_LT_CURRENT - XINE_LT_AGE).XINE_LT_AGE.XINE_LT_REVISION -XINE_LT_CURRENT=20 -XINE_LT_REVISION=0 -XINE_LT_AGE=19 +XINE_LT_CURRENT=27 +XINE_LT_REVISION=1 +XINE_LT_AGE=26 dnl for a release tarball do "rm .cvsversion" before "make dist" if test -f "${srcdir-.}/.cvsversion"; then @@ -65,6 +68,8 @@ fi AC_SUBST(XINE_MAJOR) AC_SUBST(XINE_MINOR) AC_SUBST(XINE_SUB) +AC_SUBST(XINE_PATCH) +AC_SUBST(XINE_SERIES) AC_SUBST(XINE_IFACE_AGE) AC_SUBST(XINE_BIN_AGE) @@ -77,6 +82,9 @@ AC_SUBST(XINE_LT_CURRENT) AC_SUBST(XINE_LT_REVISION) AC_SUBST(XINE_LT_AGE) +AC_DEFINE_UNQUOTED(XINE_LT_CURRENT, $XINE_LT_CURRENT, [xine interface version number]) +AC_DEFINE_UNQUOTED(XINE_LT_AGE, $XINE_LT_AGE, [xine interface version age]) + SPEC_VERSION=$XINE_MAJOR.$XINE_MINOR${XINE_SUBPART}$XINE_PRE TAR_NAME="xine-lib-"$SPEC_VERSION dnl TAR_NAME="xine-lib-"$XINE_MAJOR-$XINE_PRE @@ -140,15 +148,18 @@ AC_PROG_LN_S AC_PROG_AWK AC_C_INLINE +AC_PATH_PROG([PERL], [perl], [no]) +if test "$PERL" = no; then + AC_MSG_ERROR([perl not found]) +fi +AC_SUBST([PERL]) + AC_CHECK_TOOL([STRINGS], [strings], [false]) dnl --------------------------------------------- dnl Libtool dnl --------------------------------------------- -m4_undefine([AC_PROG_F77]) -m4_defun([AC_PROG_F77],[]) - AC_LIBTOOL_DLOPEN AC_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL @@ -196,6 +207,7 @@ if test "x$enable_iconvtest" != xno; then fi AM_GNU_GETTEXT([external]) +AM_GNU_GETTEXT_VERSION([0.16.1]) AC_PROG_GMSGFMT_PLURAL AC_CHECK_FUNCS([nl_langinfo]) @@ -221,28 +233,9 @@ dnl threads and OS specific stuff dnl --------------------------------------------- CC_PTHREAD_FLAGS(, [AC_MSG_ERROR([Pthread support is needed])]) - -dnl -AC_MSG_CHECKING(for recursive mutex support in pthread) -ac_save_LIBS="$LIBS" -LIBS="$LIBS $PTHREAD_LIBS" - -have_recursive_mutex=no -AC_COMPILE_IFELSE(AC_LANG_SOURCE([#include <pthread.h> - -int main() { - pthread_mutexattr_t attr; - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - return 0; -} - ]),[ - have_recursive_mutex=yes - ],[ - AC_MSG_ERROR(recursive mutex support is needed - please report) - ]) -LIBS="$ac_save_LIBS" - -AC_MSG_RESULT($have_recursive_mutex) +CC_PTHREAD_RECURSIVE_MUTEX(, [AC_MSG_ERROR([recursive mutex support is needed - please report])]) +dnl <pthread.h> is implicitly included by xine-internals.h, so the include dir is needed everywhere +CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS" AC_CHECK_DECL(sysi86,[ AC_DEFINE(HAVE_SYSI86,1,[Define this if the 'sysi86' function is declared in sys/sysi86.h]) @@ -250,6 +243,8 @@ AC_CHECK_DECL(sysi86,[ #include <sys/sysi86.h> ]) +AC_GETOPT_LONG + dnl --------------------------------------------- dnl Windows ports checks dnl --------------------------------------------- @@ -274,6 +269,7 @@ case "$host" in WIN32_CPPFLAGS='-I$(top_srcdir)/win32/include' LIBS="-lwinmm -lwsock32 $LIBS" GOOM_LIBS="-liberty" + LDFLAGS="-Wl,--enable-stdcall-fixup $LDFLAGS" fi LDFLAGS="-no-undefined $LDFLAGS" ;; @@ -327,36 +323,51 @@ dnl --------------------------------------------- AC_SUBST(LIBMPEG2_CFLAGS) +AC_ARG_ENABLE([libmpeg2new], + AS_HELP_STRING([--enable-libmpeg2new], [build the newer MPEG2 decoder (buggy)])) +AM_CONDITIONAL(ENABLE_MPEG2NEW, test "x$enable_libmpeg2new" = "xyes") + AC_ARG_WITH([external-ffmpeg], AS_HELP_STRING([--with-external-ffmpeg], [use external ffmpeg library])) case "x$with_external_ffmpeg" in + xno) + ;; xyes) PKG_CHECK_MODULES([FFMPEG], [libavcodec >= 51.20.0]) ;; - xsoft) + *) with_external_ffmpeg=yes PKG_CHECK_MODULES([FFMPEG], [libavcodec >= 51.20.0], [], [AC_MSG_RESULT(no); with_external_ffmpeg=no]) ;; esac -if test "x$with_external_ffmpeg" = "xyes"; then +if test "x$with_external_ffmpeg" != "xno"; then + PKG_CHECK_MODULES([FFMPEG_UTIL], [libavutil]) PKG_CHECK_MODULES([FFMPEG_POSTPROC], [libpostproc]) AC_SUBST([FFMPEG_CFLAGS]) AC_SUBST([FFMPEG_LIBS]) AC_SUBST([FFMPEG_POSTPROC_CFLAGS]) AC_SUBST([FFMPEG_POSTPROC_LIBS]) AC_DEFINE([HAVE_FFMPEG], [1], [Define this if you have ffmpeg library]) + + dnl Check presence of ffmpeg/avutil.h to see if it's old or new + dnl style for headers. The new style would be preferred actually... + AC_CHECK_HEADERS([ffmpeg/avutil.h]) + AC_CHECK_HEADERS([libavutil/avutil.h]) + if test "$ac_cv_header_ffmpeg_avutil_h" = "yes" && test "$ac_cv_header_libavutil_avutil_h" = "yes"; then + AC_MSG_ERROR([old & new ffmpeg headers found - you need to clean up!]) + fi - AC_MSG_NOTICE([ + AC_MSG_RESULT([using external ffmpeg]) +else + AC_MSG_NOTICE([ ********************************************************************* -xine is configured with external ffmpeg. +xine-lib is configured to use internal ffmpeg. -This requires the same version of ffmpeg what is included in xine and -you should know what you do. If some problems occur, please try to -use internal ffmpeg. +This copy of ffmpeg is old. You are strongly advised to install a +newer version (including development files) and to reconfigure +xine-lib to use it. *********************************************************************]) -else - AC_MSG_RESULT([using included ffmpeg]) LIBFFMPEG_CPPFLAGS="-DHAVE_AV_CONFIG_H -DRUNTIME_CPUDETECT -DXINE_MPEG_ENCODER -D_ISOC9X_SOURCE -DCONFIG_DECODERS" AC_CHECK_TYPES(int_fast8_t, [], [LIBFFMPEG_CPPFLAGS="$LIBFFMPEG_CPPFLAGS -DEMULATE_FAST_INT"]) AC_SUBST([LIBFFMPEG_CPPFLAGS]) @@ -733,7 +744,7 @@ if test "x$no_x" = "x" && test "x$enable_xvmc" != "xno"; then AC_ARG_WITH(xxmc-path, AS_HELP_STRING([--with-xxmc-path=path], [where libXvMC libraries for the xxmc plugin are installed. Defalts to the default X library path.]), - xxmc_path="$withval", xxmc_path="$x_libraries") + xxmc_path="$withval", xxmc_path="${x_libraries:-/usr/lib}") AC_ARG_WITH(xxmc-lib, AS_HELP_STRING([--with-xxmc-lib=XXXX], [The name of the XvMC library libXXXX.so for the xxmc plugin.]),xxmc_stub="$withval", xxmc_stub="XvMCW") @@ -824,7 +835,7 @@ if test "x$no_x" = "x" && test "x$enable_xvmc" != "xno"; then AC_ARG_WITH(xvmc-path, AS_HELP_STRING([--with-xvmc-path=path], [where libXvMC libraries for the xvmc plugin are installed. Defalts to the default X library path.]), - xvmc_path="$withval", xvmc_path="$x_libraries") + xvmc_path="$withval", xvmc_path="${x_libraries:-/usr/lib}") AC_ARG_WITH(xvmc-lib, AS_HELP_STRING([--with-xvmc-lib=XXXX], [The name of the XvMC library libXXXX.so for the xvmc plugin.]),xvmc_stub="$withval", xvmc_stub="XvMCW") @@ -955,7 +966,9 @@ AC_ARG_WITH([caca], AS_HELP_STRING([--without-caca], [Do not build CACA support])) if test "x$with_caca" != "xno"; then - PKG_CHECK_MODULES([CACA], [caca cucul], [have_caca="yes"], [have_caca="no"]) + have_caca=yes + PKG_CHECK_MODULES([CACA], [caca >= 0.99beta14 cucul >= 0.99beta14 ], + [], [AC_MSG_RESULT(no); have_caca="no"]) if test "x$with_caca" = "xyes" && test "x$have_caca" = "xno"; then AC_MSG_ERROR([CACA support requested, but libcaca 0.99 not found]) fi @@ -1087,7 +1100,10 @@ AC_ARG_WITH([pulseaudio], if test "x$with_pulseaudio" != "xno"; then PKG_CHECK_MODULES([PULSEAUDIO], [libpulse], [have_pulseaudio="yes"], [have_pulseaudio="no"]) fi + AM_CONDITIONAL(HAVE_PULSEAUDIO, [test "x$have_pulseaudio" = x"yes"]) +AC_SUBST([PULSEAUDIO_CFLAGS]) +AC_SUBST([PULSEAUDIO_LIBS]) dnl --------------------------------------------- dnl check for DirectX @@ -1368,8 +1384,11 @@ AC_ARG_WITH([imagemagick], if test "x$with_imagemagick" != "xno"; then PKG_CHECK_MODULES([WAND], [Wand], [have_imagemagick=yes], [have_imagemagick=no]) + if test "x$with_imagemagick" = 'xno'; then + PKG_CHECK_MODULES([WAND], [MagickWand], [have_imagemagick=yes], [have_imagemagick=no]) + fi if test "x$with_imagemagick" = "xyes" && test "x$have_imagemagick" = "xno"; then - AC_MSG_ERROR([ImageMagick support requested, but Wand not found]) + AC_MSG_ERROR([ImageMagick support requested, but neither Wand nor MagickWand were found]) elif test "x$have_imagemagick" = "xyes"; then AC_DEFINE([HAVE_WAND], [1], [Define this if you have ImageMagick installed]) fi @@ -1438,7 +1457,9 @@ if test "x$enable_oss" != "xno"; then #endif ]) - AC_IOCTL_REQUEST + if test "x$have_ossaudio" = "xyes"; then + AC_IOCTL_REQUEST + fi fi AM_CONDITIONAL(HAVE_OSS, test "x$have_ossaudio" = "xyes") @@ -1543,6 +1564,28 @@ AM_CONDITIONAL([HAVE_JACK], [test "x$have_jack" = "xyes"]) dnl --------------------------------------------- +dnl sndio support +dnl --------------------------------------------- + +AC_ARG_WITH([sndio], + AS_HELP_STRING([--without-sndio], [Build without sndio support])) + +if test "x$with_sndio" != "xno"; then + AC_CHECK_LIB(sndio, sio_open, [SNDIO_LIBS=-lsndio; have_sndio=yes], + [have_sndio=no]) + + if test "x$with_sndio" = "xyes" && test "x$have_sndio" = "xno"; then + AC_MSG_ERROR([sndio support requested, but sndio not found]) + fi +fi + +AM_CONDITIONAL([HAVE_SNDIO], [test "x$have_sndio" = "xyes"]) + +AC_SUBST([SNDIO_CFLAGS]) +AC_SUBST([SNDIO_LIBS]) + + +dnl --------------------------------------------- dnl gnome-vfs support dnl --------------------------------------------- @@ -1952,7 +1995,27 @@ dnl FAAD build can be optional dnl --------------------------------------------- AC_ARG_ENABLE([faad], AS_HELP_STRING([--disable-faad], [do not build FAAD decoder])) +AC_ARG_WITH(external-libfaad, AS_HELP_STRING([--with-external-libfaad], [use external libfaad (recommended)]), + [external_libfaad="$withval"], [external_libfaad="yes"]) + +have_faad=no +if test "x$enable_faad" = "xno"; then + AC_MSG_RESULT([faad support disabled]) +elif test "x$with_external_libfaad" != "xno"; then + AC_CHECK_LIB([faad], [NeAACDecInit], [have_faad=yes]) + if test "x$have_faad" = xyes; then + AC_CHECK_HEADERS([faad.h], , [have_faad=no]) + if test "x$have_faad" != "xyes"; then + AC_MSG_ERROR([Unable to find libfaad]) + fi + AC_DEFINE([EXTERNAL_LIBFAAD], [1], [Define if external libfaad is used]) + fi +else + AC_MSG_RESULT([Use included libfaad]) +fi + AM_CONDITIONAL(BUILD_FAAD, test "x$enable_faad" != "xno") +AM_CONDITIONAL(EXTERNAL_LIBFAAD, test "x$have_faad" = "xyes") dnl --------------------------------------------- dnl Optional and external libdts @@ -2113,7 +2176,7 @@ dnl --------------------------------------------- AC_SYS_LARGEFILE AC_CHECK_LIB(posix4, sched_get_priority_min) -AC_CHECK_FUNCS([vsscanf sigaction sigset getpwuid_r nanosleep lstat memset readlink strchr va_copy]) +AC_CHECK_FUNCS([vsscanf sigaction sigset getpwuid_r nanosleep lstat memset readlink strchr tzset va_copy]) AC_CHECK_FUNCS([snprintf _snprintf], [some_snprintf="yes"; break]) AC_CHECK_FUNCS([vsnprintf _vsnprintf], [some_vsnprintf="yes"; break]) AC_CHECK_FUNCS([strcasecmp _stricmp], [some_strcasecmp="yes"; break]) @@ -2126,7 +2189,7 @@ if test "x$some_snprintf" != "xyes" -o \ fi AC_FUNC_FSEEKO AC_CHECK_HEADERS(assert.h byteswap.h malloc.h execinfo.h ucontext.h sys/mman.h sys/mixer.h libgen.h netdb.h dirent.h sys/times.h sys/ioctl.h sys/param.h alloca.h) -AC_REPLACE_FUNCS(asprintf basename gettimeofday setenv strndup strpbrk strsep strtok_r timegm unsetenv memmem) +AC_REPLACE_FUNCS(asprintf basename gettimeofday setenv strcasestr strndup strpbrk strsep strtok_r timegm unsetenv memmem) AC_LIBSOURCE(hstrerror.c) AC_LINK_IFELSE([#include <netdb.h> @@ -2154,6 +2217,10 @@ AC_CHECK_FUNC(opendir, AC_MSG_ERROR([dirent is needed (opendir, readdir, ...)]) fi]) +XINE_CHECK_MINMAX([ + AC_DEFINE(HAVE_MAX_MACRO, 1, [Define to 1 if you have 'MAX' macro in sys/param.h]) + AC_DEFINE(HAVE_MIN_MACRO, 1, [Define to 1 if you have 'MIN' macro in sys/param.h]) + ],[]) dnl --------------------------------------------- dnl cflags and debug cflags @@ -2192,6 +2259,11 @@ AC_SUBST([VISIBILITY_FLAG]) CC_ATTRIBUTE_SENTINEL CC_ATTRIBUTE_FORMAT CC_ATTRIBUTE_FORMAT_ARG +CC_ATTRIBUTE_DEPRECATED +CC_ATTRIBUTE_UNUSED +CC_ATTRIBUTE_MALLOC +CC_ATTRIBUTE_PACKED +CC_ATTRIBUTE_CONST AC_OPTIMIZATIONS @@ -2208,7 +2280,7 @@ case "$host_or_hostalias" in dnl AC_DEFINE_UNQUOTED(ARCH_X86_32,,[Define this if you're running x86 architecture 32 bits]) AC_DEFINE(FPM_INTEL,1,[Define to select libmad fixed point arithmetic implementation]) - arch_x86="yes" + arch_x86="32" enable_impure_text="yes" case "$host_or_hostalias" in @@ -2220,7 +2292,7 @@ case "$host_or_hostalias" in x86_64-*) AC_DEFINE_UNQUOTED(ARCH_X86_64,,[Define this if you're running x86 architecture 64 bits]) AC_DEFINE(FPM_64BIT,1,[Define to select libmad fixed point arithmetic implementation]) - arch_x86="yes" + arch_x86="64" ;; powerpc-*-darwin*) dnl avoid ppc compilation crash @@ -2270,19 +2342,21 @@ case "$host_or_hostalias" in esac AC_DEFINE_UNQUOTED(FPM_SPARC,,[Define to select libmad fixed point arithmetic implementation]) - AC_DEFINE_UNQUOTED(ARCH_SPARC,,[Define this if you're running SPARC architecture]) else AC_DEFINE_UNQUOTED(FPM_64BIT,,[Define to select libmad fixed point arithmetic implementation]) fi + AC_DEFINE_UNQUOTED(ARCH_SPARC,,[Define this if you're running SPARC architecture]) ;; mips-*) AC_DEFINE_UNQUOTED(FPM_MIPS,,[Define to select libmad fixed point arithmetic implementation]) ;; alphaev56-* | alpha* | ia64-* | hppa*-linux-*) AC_DEFINE_UNQUOTED(FPM_64BIT,,[Define to select libmad fixed point arithmetic implementation]) + AC_DEFINE_UNQUOTED(ARCH_ALPHA,,[Define this if you're running Alpha architecture]) ;; armv4l-*-linux*) AC_DEFINE_UNQUOTED(FPM_ARM,,[Define to select libmad fixed point arithmetic implementation]) + AC_DEFINE_UNQUOTED(ARCH_ARM,,[Define this if you're running ARM architecture]) enable_armv4l="yes" ;; *) @@ -2299,12 +2373,14 @@ if test "x$has_vis" = "xyes"; then fi AM_CONDITIONAL(ENABLE_VIS, test "x$has_vis" = "xyes") -if test "x$arch_x86" = "xyes"; then +if test "x$arch_x86" != "xno"; then AC_DEFINE_UNQUOTED(ARCH_X86,,[Define this if you're running x86 architecture]) AC_DEFINE_UNQUOTED(HAVE_MMX,,[Define this if you can compile MMX asm instructions]) fi -AM_CONDITIONAL(ARCH_X86, test "x$arch_x86" = "xyes") -AM_CONDITIONAL(HAVE_MMX, test "x$arch_x86" = "xyes") +AM_CONDITIONAL(ARCH_X86, test "x$arch_x86" != "xno") +AM_CONDITIONAL(ARCH_X86_32, test "x$arch_x86" = "x32") +AM_CONDITIONAL(ARCH_X86_64, test "x$arch_x86" = "x64") +AM_CONDITIONAL(HAVE_MMX, test "x$arch_x86" != "xno") case $host_os in darwin*) @@ -2391,62 +2467,64 @@ makeexpand () { echo "$i" } -XINE_PLUGINDIR="$libdir/xine/plugins/$XINE_MAJOR.$XINE_MINOR.$XINE_SUB$XINE_PATCH" -XINE_FONTDIR="${datadir}/xine/libxine$XINE_MAJOR/fonts" -XINE_LOCALEDIR="${datadir}/locale" -XINE_REL_PLUGINDIR="`makeexpand "$XINE_PLUGINDIR"`" -XINE_REL_PLUGINDIR="`makeexpand "$XINE_REL_PLUGINDIR" | sed -e "s,^${prefix}/,,"`" +xinelibdir='${libdir}/xine' +xinedatadir='${datadir}/xine' +pkgconfigdir='${libdir}/pkgconfig' +AC_SUBST(xinelibdir) +AC_SUBST(xinedatadir) +AC_SUBST(pkgconfigdir) + +XINE_PLUGINROOT="\${xinelibdir}/plugins/$(($XINE_LT_CURRENT-$XINE_LT_AGE))" +XINE_PLUGINDIR="$XINE_PLUGINROOT.$XINE_LT_AGE" +XINE_FONTDIR="\${xinedatadir}/libxine$XINE_MAJOR/fonts" +XINE_LOCALEDIR='${datadir}/locale' +XINE_REL_PLUGINROOT="`makeexpand "$XINE_PLUGINROOT"`" +XINE_REL_PLUGINROOT="`makeexpand "$XINE_REL_PLUGINROOT" | sed -e "s,^${prefix}/,,"`" +XINE_REL_PLUGINDIR="$XINE_REL_PLUGINROOT.$XINE_LT_AGE" XINE_REL_FONTDIR="`makeexpand "$XINE_FONTDIR" | sed -e "s,^${prefix}/,,"`" XINE_REL_LOCALEDIR="`makeexpand "$XINE_LOCALEDIR" | sed -e "s,^${prefix}/,,"`" +XINE_PKGCONFIG_DIR="`makeexpand "$pkgconfigdir"`" +dnl platform specific runtime directories if test "x$SYS" = "xmingw32" -o "x$SYS" = "xcygwin"; then - dnl polish paths (MinGW runtime accepts both \ and / anyway) - XINE_REL_PLUGINDIR="`echo "$XINE_REL_PLUGINDIR" | sed -e 's/\\//\\\\\\\\/g'`" - XINE_REL_FONTDIR="`echo "$XINE_REL_FONTDIR" | sed -e 's/\\//\\\\\\\\/g'`" - XINE_REL_LOCALEDIR="`echo "$XINE_REL_LOCALEDIR" | sed -e 's/\\//\\\\\\\\/g'`" - dnl prefix in xine-config - XINE_CONFIG_PREFIX="\$(cd \$(dirname \$0)/..; pwd)" - dnl installation directories (in xine-config) - XINE_PLUGINPATH="$XINE_CONFIG_PREFIX/$XINE_REL_PLUGINDIR" - XINE_FONTPATH="$XINE_CONFIG_PREFIX/$XINE_REL_FONTDIR" - XINE_LOCALEPATH="$XINE_CONFIG_PREFIX/$XINE_REL_LOCALEDIR" - dnl runtime directories - AC_DEFINE(XINE_PLUGINDIR,[xine_get_plugindir()],[Define this to plugins directory location]) + AC_DEFINE(XINE_PLUGINROOT,[xine_get_pluginroot()],[Define this to general plugins directory location]) + AC_DEFINE(XINE_PLUGINDIR,[xine_get_plugindir()],[Define this to specific plugins directory location]) AC_DEFINE(XINE_FONTDIR,[xine_get_fontdir()],[Define this to osd fonts dir location]) AC_DEFINE(XINE_LOCALEDIR,[xine_get_localedir()],[Path where catalog files will be.]) else - dnl prefix in xine-config - XINE_CONFIG_PREFIX="`makeexpand "${prefix}"`" - dnl directories from xine-config and runtime directories - XINE_PLUGINPATH="`makeexpand "$XINE_PLUGINDIR"`" + XINE_PLUGINROOTPATH="`makeexpand "$XINE_PLUGINROOT"`" XINE_FONTPATH="`makeexpand "$XINE_FONTDIR"`" XINE_LOCALEPATH="`makeexpand "$XINE_LOCALEDIR"`" - dnl defining runtime directories - AC_DEFINE_UNQUOTED(XINE_PLUGINDIR,"$XINE_PLUGINPATH",[Define this to plugins directory location]) + AC_DEFINE_UNQUOTED(XINE_PLUGINROOT,"$XINE_PLUGINROOTPATH",[Define this to general plugins directory location]) + AC_DEFINE_UNQUOTED(XINE_PLUGINDIR,"$XINE_PLUGINROOTPATH.$XINE_LT_AGE",[Define this to specific plugins directory location]) AC_DEFINE_UNQUOTED(XINE_FONTDIR,"$XINE_FONTPATH",[Define this to osd fonts dir location]) AC_DEFINE_UNQUOTED(XINE_LOCALEDIR, "$XINE_LOCALEPATH",[Path where catalog files will be.]) fi -AC_DEFINE_UNQUOTED(XINE_REL_PLUGINDIR,"$XINE_REL_PLUGINDIR",[Define this to plugin directory relative to execution prefix]) +AC_DEFINE_UNQUOTED(XINE_REL_PLUGINDIR,"$XINE_REL_PLUGINDIR",[Define this to specific plugin directory relative to execution prefix]) +AC_DEFINE_UNQUOTED(XINE_REL_PLUGINROOT,"$XINE_REL_PLUGINROOT",[Define this to general plugin directory relative to execution prefix]) AC_DEFINE_UNQUOTED(XINE_REL_FONTDIR,"$XINE_REL_FONTDIR",[Define this to font directory relative to prefix]) AC_DEFINE_UNQUOTED(XINE_REL_LOCALEDIR,"$XINE_REL_LOCALEDIR",[Define this to font directory relative to prefix]) -AC_SUBST(XINE_CONFIG_PREFIX) -AC_SUBST(XINE_PLUGINPATH) -AC_SUBST(XINE_FONTPATH) -AC_SUBST(XINE_LOCALEPATH) AC_SUBST(XINE_PLUGINDIR) AC_SUBST(XINE_FONTDIR) AC_SUBST(XINE_LOCALEDIR) +AC_SUBST(XINE_PKGCONFIG_DIR) + +LIBTOOL_DESTDIR_DEFAULT= +if test "x$SYS" != "xmingw32" -a "x$SYS" != "xcygwin"; then + LIBTOOL_DESTDIR_DEFAULT=/ +fi +AC_SUBST([LIBTOOL_DESTDIR_DEFAULT]) dnl Where aclocal m4 files should be installed -XINE_ACFLAGS="-I `makeexpand "${datarootdir}/aclocal"`" +XINE_ACFLAGS="-I ${datarootdir}/aclocal" AC_DEFINE_UNQUOTED(XINE_ACFLAGS, "$XINE_ACFLAGS", [Path where aclocal m4 files will be.]) AC_SUBST(XINE_ACFLAGS) dnl Where architecture independent data (e.g. logo) will/should be installed -XINE_DATADIR="`makeexpand "${datarootdir}/xine"`" +XINE_DATADIR="\${xinedatadir}" AC_SUBST(XINE_DATADIR) dnl Where scripts will/should be installed. -eval XINE_SCRIPTPATH="$XINE_DATADIR/xine/scripts" +XINE_SCRIPTPATH="\${xinedatadir}/scripts" AC_SUBST(XINE_SCRIPTPATH) @@ -2456,7 +2534,7 @@ dnl --------------------------------------------- XINE_BUILD_CC="`$CC -v 2>&1 | tail -1 2>/dev/null`" XINE_BUILD_OS="`uname -s -r -m`" -XINE_BUILD_DATE="`date \"+%a %d %b %Y %T\"`" +XINE_BUILD_DATE="`date "+%a %d %b %Y %T"`" AC_SUBST(XINE_BUILD_CC) AC_SUBST(XINE_BUILD_OS) AC_SUBST(XINE_BUILD_DATE) @@ -2572,35 +2650,29 @@ _AM_DEPENDENCIES([OBJC]) AM_CONDITIONAL([BUILD_DMX_IMAGE], [test "x$have_imagemagick" = "xyes" -o "x$no_gdkpixbuf" != "xyes"]) -dnl Important warnings we _don't_ want to skip -dnl Don't put these under conditional for optimisations, because these -dnl need always to be enabled. -CC_CHECK_CFLAGS([-Wformat=2], [wformat="-Wformat=2"], - [CC_CHECK_CFLAGS([-Wformat], [wformat="-Wformat"])]) - -test "x$wformat" != "x" && \ - CC_CHECK_CFLAGS([-Wno-format-zero-length], [wformat="$wformat -Wno-format-zero-length"]) +dnl We check for warnings here rather than with optimisations since we +dnl want them to be _always_ enabled, to make sure the code is sane +dnl enough. -CC_CHECK_CFLAGS([-Wmissing-format-attribute], [wformat="$wformat -Wmissing-format-attribute"]) -warnflags="$warnflags $wformat" +CC_CHECK_CFLAGS_APPEND([-Wall -Wchar-subscripts dnl + -Wnested-externs -Wcast-align dnl + -Wmissing-declarations -Wmissing-prototypes dnl + -Wmissing-format-attribute -Wno-pointer-sign]) -dnl This *has* to stay at the end as it can break some autoconf tests. -CC_CHECK_CFLAGS([-Werror-implicit-function-declaration], [warnflags="$warnflags -Werror-implicit-function-declaration"]) +CC_CHECK_CFLAGS_APPEND([-Wformat=2 -Wformat], + [CC_CHECK_CFLAGS_APPEND([-Wno-format-zero-length]) + break; + ]) -CC_CHECK_CFLAGS([-Wstrict-aliasing=2], [warnflags="$warnflags -Wstrict-aliasing=2"], - [CC_CHECK_CFLAGS([-Wstrict-aliasing], [warnflags="$warnflags -Wstrict-aliasing"])]) +dnl check for strict aliasing problem, get the highest between =2 and +dnl normal. +CC_CHECK_CFLAGS_APPEND([-Wstrict-aliasing=2 -Wstrict-aliasing], [break;]) -case $host in - dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads - dnl are requested, as different implementations are present; to avoid problems - dnl use -Wl,-z,defs only for those platform not behaving this way. - *-freebsd*) ;; - *) - AC_TRY_LDFLAGS([-Wl,-z,defs], [NOUNDEF="-Wl,-z,defs"]) - ;; -esac -AC_SUBST([NOUNDEF]) +dnl This *has* to stay at the end as it can break some autoconf tests. +CC_CHECK_CFLAGS_APPEND([-Werror=implicit-function-declaration dnl + -Werror-implicit-function-declaration], [break;]) +CC_NOUNDEFINED dnl signal FreeBSD have also FreeBSD based kernel. dnl @@ -2620,7 +2692,7 @@ AH_BOTTOM([ dnl Common cflags for all platforms -CFLAGS="-D_REENTRANT -D_FILE_OFFSET_BITS=64 -DXINE_COMPILE \$(MULTIPASS_CFLAGS) $warnflags $CFLAGS" +CFLAGS="-D_REENTRANT -D_FILE_OFFSET_BITS=64 -DXINE_COMPILE \$(MULTIPASS_CFLAGS) $CFLAGS" DEBUG_CFLAGS="-D_REENTRANT -D_FILE_OFFSET_BITS=64 -DXINE_COMPILE $DEBUG_CFLAGS" if test "x$enable_debug" = "xyes"; then @@ -2645,6 +2717,7 @@ include/xine.h lib/Makefile m4/Makefile misc/Makefile +misc/Makefile.plugins misc/SlackBuild misc/build_rpms.sh misc/fonts/Makefile @@ -2652,10 +2725,12 @@ misc/libxine.pc misc/relchk.sh misc/xine-config misc/xine-lib.spec +po/Makevars.extra po/Makefile.in src/Makefile src/audio_out/Makefile src/combined/Makefile +src/combined/ffmpeg/Makefile src/demuxers/Makefile src/dxr3/Makefile src/input/Makefile @@ -2686,6 +2761,9 @@ src/libffmpeg/libavcodec/libpostproc/Makefile src/libffmpeg/libavutil/Makefile src/libmad/Makefile src/libmpeg2/Makefile +src/libmpeg2new/Makefile +src/libmpeg2new/libmpeg2/Makefile +src/libmpeg2new/include/Makefile src/libmusepack/Makefile src/libmusepack/musepack/Makefile src/libspudec/Makefile @@ -3004,7 +3082,7 @@ if test "x$no_x" != "xyes"; then echo " - XvMC (XVideo motion compensation)" fi if test "x$ac_have_opengl" = "xyes" -a "x$ac_have_glut" = "xyes" -o \ - x$"ac_have_opengl" = "xyes" -a "x$ac_have_glu" = "xyes"; then + "x$ac_have_opengl" = "xyes" -a "x$ac_have_glu" = "xyes"; then echo " - OpenGL" fi if test "x$ac_have_sunfb" = "xyes"; then @@ -3115,6 +3193,9 @@ fi if test "x$have_jack" = "xyes"; then echo " - Jack" fi +if test "x$have_sndio" = "xyes"; then + echo " - sndio" +fi echo "---" diff --git a/debian/changelog b/debian/changelog index 91999074d..7386ffb78 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xine-lib (1.1.9~hg-0) unstable; urgency=low +xine-lib (1.1.17~hg-0) unstable; urgency=low [ Darren Salt ] * Hg snapshot. @@ -7,7 +7,7 @@ xine-lib (1.1.9~hg-0) unstable; urgency=low * remove gs from build-dependencies * change the maintainer field to xine-devel@lists.sourceforge.net. - -- Reinhard Tartler <siretart@tauware.de> Sun, 25 Nov 2007 23:45:52 +0100 + -- Darren Salt <linux@youmustbejoking.demon.co.uk> Mon, 12 Jan 2009 19:36:45 +0000 xine-lib (1.1.5~cvs-0) unstable; urgency=low diff --git a/debian/control b/debian/control index c4a127b4f..3bb868764 100644 --- a/debian/control +++ b/debian/control @@ -5,32 +5,34 @@ Maintainer: xine Developers <xine-devel@lists.sourceforge.net> Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config, automake1.9, autoconf, libtool, libavcodec-dev (>= 0.cvs20070307-3) | libavcodeccvs-dev, + libavutil-dev (>= 0.cvs20070307-3) | libavutilcvs-dev, libavformat-dev (>= 0.cvs20070307-3) | libavformatcvs-dev, libpostproc-dev (>= 0.cvs20070307-3) | libpostproccvs-dev, - libxcb-xinerama0-dev | libxv-dev (<< 1:1.0.3), libxcb-xv0-dev | libxv-dev (<< 1:1.0.3), - libxcb-xvmc0-dev | libxv-dev (<< 1:1.0.3), libxcb-shm0-dev | libxv-dev (<< 1:1.0.3), + libxcb-xv0-dev | libxv-dev (<< 1:1.0.3), + libxcb-shm0-dev | libxv-dev (<< 1:1.0.3), libxcb-shape0-dev | libxv-dev (<< 1:1.0.3), - libxinerama-dev, libxv-dev, libxvmc-dev, libxt-dev, - libdirectfb-dev (>= 0.9.22), + libxinerama-dev, libxv-dev, libxvmc-dev, libxt-dev, libasound2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], + libcam-dev [kfreebsd-i386 kfreebsd-amd64], libaa1-dev, libcaca-dev, libmodplug-dev, - libmagick9-dev, libpng12-dev, libfreetype6-dev, + libjack-dev, libpulse-dev, libartsc0-dev, + libmagick9-dev | libmagick-dev |libmagickwand-dev, + libpng12-dev, libfreetype6-dev, libogg-dev, libvorbis-dev, libtheora-dev, libesd0-dev, libgnomevfs2-dev, - zlib1g-dev, libartsc0-dev, - liblircclient-dev, libjack0.100.0-dev | libjack-dev, - libdirectfb-dev, libgtk2.0-dev, - libflac-dev, libpulse-dev, libsdl1.2-dev, libwavpack-dev, - libsmbclient-dev, libspeex-dev, libmng-dev, - libmad0-dev, libmpcdec-dev, libcdio-dev (>= 0.76-1), - w3m, transfig, sgmltools-lite -Build-Conflicts: libdvdnav-dev, libvcdinfo-dev + liblircclient-dev, + libdirectfb-dev (>= 0.9.22), libgtk2.0-dev, + libflac-dev, libsdl1.2-dev, libwavpack-dev, + libsmbclient-dev, libspeex-dev, libmng-dev, + libmad0-dev, libmpcdec-dev, libcdio-dev (>= 0.76-1), + zlib1g-dev, w3m, transfig, sgmltools-lite, + ghostscript | gs-gpl | gs Standards-Version: 3.7.2 Package: libxine-dev Architecture: any Section: libdevel -Depends: libxine1 (= ${Source-Version}), libc6-dev, zlib1g-dev | libz-dev, libslang2-dev | slang1-dev, libfreetype6-dev +Depends: libxine1 (= ${Source-Version}), libc6-dev, zlib1g-dev | libz-dev, libslang2-dev | slang1-dev, libfreetype6-dev, pkg-config Conflicts: xine-ui (<< 0.9.10), libxine2-dev Description: the xine video player library, development packages This contains development files (headers, documentation and the like) @@ -65,8 +67,8 @@ Description: the xine video player library, development packages Package: libxine1 Architecture: any Depends: ${shlibs:Depends} -Recommends: ${shlibs:Recommends}, libxine1-doc | libxine-doc -Suggests: ${shlibs:Suggests}, libartsc0 +Recommends: ${shlibs:Recommends} +Suggests: ${shlibs:Suggests}, libxine1-doc | libxine-doc Conflicts: libxine1-all-plugins, libxine1-bin, libxine1-console, libxine1-ffmpeg, libxine1-gnome, libxine1-misc-plugins, libxine1-plugins, libxine1-x Replaces: libxine1-all-plugins, libxine1-bin, libxine1-console, libxine1-ffmpeg, libxine1-gnome, libxine1-misc-plugins, libxine1-plugins, libxine1-x Provides: libxine1-all-plugins, libxine1-bin, libxine1-console, libxine1-ffmpeg, libxine1-gnome, libxine1-misc-plugins, libxine1-plugins, libxine1-x diff --git a/debian/dh_xine b/debian/dh_xine new file mode 100644 index 000000000..e6129624e --- /dev/null +++ b/debian/dh_xine @@ -0,0 +1,56 @@ +#! /usr/bin/perl -w + +=head1 NAME + +dh_xine - calculates xine-lib dependencies + +=cut + +use strict; +use Debian::Debhelper::Dh_Lib; + +=head1 SYNOPSIS + +B<dh_xine> [S<I<debhelper options>>] + +=head1 DESCRIPTION + +dh_xine is a debhelper program that is responsible for generating the +${xine-x:Depends} and ${xine-console:Depends} substitutions and adding them +to substvars files. + +Each xine-lib front end is required to have one of these two substvars +listed in its Depends line in debian/control. Using package names directly +will, sooner or later, break. + +=head1 CONFORMS TO + +Debian policy, version 3.8.1 + +=cut + +init (); + +my $version; + +foreach my $package (@{$dh{DOPACKAGES}}) { + my $tmp = tmpdir ($package); + + delsubstvar($package, 'xine-x:Depends'); + addsubstvar ($package, 'xine-x:Depends', 'libxine1-x'); + + delsubstvar($package, 'xine-console:Depends'); + addsubstvar ($package, 'xine-console:Depends', 'libxine1-console'); +} + +=head1 SEE ALSO + +L<debhelper(7)> + +This program is not a part of debhelper. + +=head1 AUTHOR + +Darren Salt <linux@youmustbejoking.demon.co.uk> + +=cut diff --git a/debian/dh_xine.1 b/debian/dh_xine.1 new file mode 100644 index 000000000..5116d750a --- /dev/null +++ b/debian/dh_xine.1 @@ -0,0 +1,21 @@ +.TH DH_XINE 1 "2009-03-25" "The xine project" +.SH "NAME" +dh_xine - calculates xine\-lib dependencies +.SH "SYNOPSIS" +\fBdh_xine\fR [\fIdebhelper\ options\fR] +.SH "DESCRIPTION" +dh_xine is a debhelper program that is responsible for generating the +${xine\-x:Depends} and ${xine\-console:Depends} substitutions and adding them +to substvars files. +.PP +Each xine-lib front end is required to have one of these two substvars +listed in its Depends line in debian/control. Using package names directly +will, sooner or later, break. +.SH "CONFORMS TO" +Debian policy, version 3.8.1 +.SH "SEE ALSO" +\fIdebhelper\fR(7) +.PP +This program is not a part of debhelper. +.SH "AUTHOR" +Darren Salt <linux@youmustbejoking.demon.co.uk> diff --git a/debian/libxine1.install b/debian/libxine1.install index b4037aa21..ab8a5901f 100644 --- a/debian/libxine1.install +++ b/debian/libxine1.install @@ -1,3 +1,4 @@ +usr/bin/xine-list* usr/lib/libxine*.so.* usr/lib/xine/plugins/*/post/*.so usr/lib/xine/plugins/*/*.so @@ -6,3 +7,4 @@ usr/share/locale usr/share/xine usr/share/doc/libxine1/hackersguide/* usr/share/bug/libxine1/presubj +usr/share/man/man1/xine-list*.1 diff --git a/debian/rules b/debian/rules index 604954649..f570098b4 100755 --- a/debian/rules +++ b/debian/rules @@ -34,6 +34,18 @@ ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) BUILD_TARGET := debug endif +ifneq (,$(findstring mips,$(DEB_HOST_GNU_TYPE))) + DEB_BUILD_CONFIG_OPTIONS += PTHREAD_LIBS="-lpthread" +endif + +# taken from the qemu package +# Support multiple makes at once +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +NJOBS := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +else +NJOBS := 1 +endif + # note also "noauto" to inhibit running of autogen.sh # the "optimize" flag disables compatibility hacks @@ -59,7 +71,10 @@ ifeq (,$(findstring optimize,$(DEB_BUILD_OPTIONS))) endif # --mandir - remove after etch released (autoconf >= 2.59c gets it right) -CONFIGURE_FLAGS := --prefix=/usr \ +CONFIGURE_FLAGS := \ + --build $(DEB_BUILD_GNU_TYPE) \ + --host $(DEB_HOST_GNU_TYPE) \ + --prefix=/usr \ --mandir=\$${prefix}/share/man \ --with-external-libmad \ --with-external-a52dec \ @@ -67,6 +82,7 @@ CONFIGURE_FLAGS := --prefix=/usr \ --with-external-ffmpeg \ --with-freetype \ --with-wavpack \ + --enable-ipv6 \ $(DEB_BUILD_CONFIG_OPTIONS) \ CFLAGS="$(CFLAGS)" @@ -87,7 +103,7 @@ endif build: configure-stamp build-stamp build-stamp: dh_testdir - $(MAKE) + $(MAKE) -j $(NJOBS) touch build-stamp update-config-sub-guess: @@ -100,11 +116,11 @@ clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp po/*.gmo po/stamp-po - -$(MAKE) distclean - # remove more cruft leftover by autohell - rm -f doc/faq/faq.html doc/faq/faq.txt doc/hackersguide/hackersguide.html m4/caca.m4 - -test -f .noauto || find . -name Makefile.in -print | xargs -r rm - test -f .noauto || rm -rf compile config.guess configure depcomp install-sh ltmain.sh missing aclocal.m4 include/configure.h.in + if test -f .noauto; then \ + [ ! -f Makefile ] || $(MAKE) distclean; \ + else \ + [ ! -f Makefile ] || $(MAKE) maintainer-clean; \ + fi dh_clean install: build @@ -128,6 +144,8 @@ binary-arch: build install mv debian/tmp/usr/share/doc/xine-lib debian/tmp/usr/share/doc/libxine${major} # build libxine${major} package by moving files from libxine-dev dh_install --autodest --sourcedir=debian/tmp --list-missing + install -m755 debian/dh_xine debian/libxine-dev/usr/bin + dh_installman -plibxine-dev debian/dh_xine.1 dh_installdocs dh_installchangelogs -k ChangeLog dh_link diff --git a/debian/watch b/debian/watch index c82dbbc10..d3a4d7702 100644 --- a/debian/watch +++ b/debian/watch @@ -1,4 +1,4 @@ version=3 -http://xinehq.de/index.php/releases \ +http://www.xine-project.org/releases \ (?:.*/)?xine/xine-lib-([\d\.]*).tar.gz \ debian uupdate diff --git a/doc/Makefile.am b/doc/Makefile.am index 1a757a4ca..070ef5a1e 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -2,13 +2,11 @@ include $(top_srcdir)/misc/Makefile.common SUBDIRS = man hackersguide faq -doc_DATA = README README.dvb README.dxr3 \ +dist_doc_DATA = README README.dvb README.dxr3 \ README.freebsd README.irix README.network_dvd README.opengl \ README.solaris README.syncfb README_xxmc.html README.MINGWCROSS \ README.WIN32 -EXTRA_DIST = $(doc_DATA) - docs clean-docs: @cd faq && $(MAKE) $@ @cd hackersguide && $(MAKE) $@ diff --git a/doc/faq/faq.sgml b/doc/faq/faq.sgml index 9743cf361..48f9b2416 100644 --- a/doc/faq/faq.sgml +++ b/doc/faq/faq.sgml @@ -6,7 +6,7 @@ <title>The xine engine FAQ</title> <titleabbrev>xine FAQ</titleabbrev> <copyright> - <year>2001-2003</year> + <year>2001-2008</year> <holder>the xine project team</holder> </copyright> </bookinfo> @@ -43,7 +43,7 @@ </sect2> <sect2 id="wheretogethelp"> - <title>My question is not yet covered here - where can I ask for help?</title> + <title>My question is not yet covered here – where can I ask for help?</title> <para> First of all be sure that your question is really not covered here and that you haven't just been a bit too lazy to read through all of this @@ -52,7 +52,7 @@ <command>totem</command>). </para> <para> - That said - you are welcome to mail to our user mailing list: + That said – you are welcome to mail to our user mailing list: <email>xine-user@lists.sourceforge.net</email> Please provide some info about your setup so people have a chance to help you, e.g. include information about your audio/video hardware @@ -75,7 +75,7 @@ </sect2> <sect2 id="modules"> - <title>What are those xine-lib, xine-ui, gnome-xine, ... modules in cvs for?</title> + <title>What are those xine-lib, xine-ui, gnome-xine, … modules in cvs for?</title> <para> Some time ago xine just became too complex to be just one big program. Therefore it was split into two major parts. @@ -86,7 +86,7 @@ is covered in this FAQ.) </para> <para> - Then there are frontends - applications that use xine. The most + Then there are frontends – applications that use xine. The most common frontend is that of a media player. There are currently two frontends being developed in the xine project, xine-ui (skinned dvd-player style frontend directly based on xlib) and gxine, @@ -152,7 +152,7 @@ <para> First, make sure that you're using a current development version (see above) or at least the current release version. Then, once you're - ready to send the patch... + ready to send the patch… </para> <para> Generate your patch using either <command>cvs diff -u > @@ -162,17 +162,17 @@ patch. Your patch should be applicable using <command>patch -p0 -i my.patch</command> or, preferably, <command>patch -p1 -i my.patch</command> from the top-level directory in the source tree - (i.e. where configure.ac is) - this is fairly important for our + (i.e. where configure.ac is) – this is fairly important for our Mercurial-based repositories since it makes importing your patch that much easier (hg import defaults to -p1). </para> <para> Alternatively, if you've been hacking away at a module which is - maintained using mercurial, you can make them available as diffs - use + maintained using mercurial, you can make them available as diffs – use <command>hg export</command> or, if you have several patches, you could use <command>hg bundle</command> instead (both require extra parameters; <command>hg help export</command> and <command>hg help - bundle</command> for more details) - or via HTTP by using <command>hg + bundle</command> for more details) – or via HTTP by using <command>hg serve</command>. In the latter case, you'll need to post a URL from which a developer can pull the changes. </para> @@ -194,12 +194,12 @@ <para> The xine project does not provide pre-compiled binaries for legal reasons (some parts of xine may be covered by patents in some countries). - Some OS projects/vendors (e.g. debian, freebsd, ...) offer binaries - for their distributions - please contact them or use their package search + Some OS projects/vendors (e.g. Debian, FreeBSD, …) offer binaries + for their distributions – please contact them or use their package search tools for further info. You can also find links to third parties providing xine RPMs on the xine homepage at - <ulink url="http://xinehq.de/index.php/releases">http://xinehq.de/index.php/releases</ulink>. + <ulink url="http://www.xine-project.org/releases">http://www.xine-project.org/releases</ulink>. </para> <para> See the next section of this FAQ for instructions on how to build xine @@ -221,13 +221,13 @@ </para> <para> Furthermore you'll have to use GNU make to compile xine. On most GNU/Linux - systems "make" is GNU make - on other platforms use "gmake" instead. + systems "make" is GNU make – on other platforms use "gmake" instead. Also, zlib is required (including the appropriate header files, which are often found in a package called zlib-devel or similar.) </para> <para> If you want to compile xine from CVS, you'll need to have the autobuild tools - installed (automake, autoconf and libtool - in recent versions). + installed (automake, autoconf and libtool – in recent versions). </para> <para> Frontends might need additional libraries, e.g. for gxine you'll need to have @@ -274,7 +274,7 @@ <screen> <command>ldconfig</command></screen> </para> <para> - Now unpack your frontend (gxine or xine-ui or ...), then: + Now unpack your frontend (gxine or xine-ui or …), then: <screen> <command>./configure</command> <command>make install</command></screen> @@ -292,7 +292,7 @@ <para> If you have installed xine-lib to a non-standard prefix, make sure that you have <filename>$prefix/bin</filename> in your PATH and that your linker finds - libs in <filename>$prefix/lib</filename> - otherwise trying to build modules that + libs in <filename>$prefix/lib</filename> – otherwise trying to build modules that rely on xine-lib will fail with configure complaining about not finding certain parts of libxine. Using bash you can do something like: <screen> @@ -304,7 +304,7 @@ Last but not least. Here the build instructions. As stated earlier, those are the same for every xine module. <screen> - <command>./autogen.sh</command> [-> *only* if you checked your sources out of CVS] + <command>./autogen.sh</command> [→ <emphasis>only</emphasis> if you checked your sources out of CVS] <command>./configure</command> <command>make</command> <command>make install</command></screen> @@ -331,7 +331,7 @@ In case that you have a fresh CVS checkout, you will need to do the following first in order to get a tarball release out of it which you can later use with the <command>rpmbuild -ta</command> command above: - <screen> <command>./autogen.sh && make clean && make dist</command></screen> + <screen> <command>./autogen.sh && make clean && make dist</command></screen> </para> <para> In any case, please keep in mind that you have to build and install @@ -362,7 +362,7 @@ <screen> <command>cd ..</command> <command>ls *.deb</command> - <command>su - -c 'cd '"`pwd`"' && dpkg -i <DEB_PACKAGES>'</command> + <command>su - -c 'cd '"`pwd`"' && dpkg -i <DEB_PACKAGES>'</command> </screen> Ubuntu users will probably want to use this instead of that <command>su</command>: <screen> @@ -477,7 +477,7 @@ </sect2> <sect2> - <title>Build problems in frontends (gxine/xine-ui/...)</title> + <title>Build problems in frontends (gxine/xine-ui/…)</title> <sect3 id="xinelibnotfound"> <title>I have installed xine-lib but the frontend complains about not finding it!</title> <para> @@ -504,7 +504,7 @@ <screen> <command>mkdir ~/xine</command></screen> </para> <para> - Then you have to set a few environment variables - it's probably a good + Then you have to set a few environment variables – it's probably a good idea to add this to your <filename>~/.bashrc</filename> (or somewhere similar): <screen> <command>export PATH="$HOME/xine/bin:$PATH"</command> @@ -561,7 +561,7 @@ check out you boot/kernel logs (or run <command>cdrecord -scanbus</command>) to find out which device it got mapped to and set the symlink accordingly (should be something like <filename>/dev/scd0</filename>, - <filename>/dev/scd1</filename>, ... in that case). + <filename>/dev/scd1</filename>, … in that case). Also make sure you (as a user) have sufficient (read and write) permissions on your DVD drive. This could mean you either have to change the device permissions or add your user to a special group @@ -866,8 +866,16 @@ xine. </para> <para> - Possibly the most convenient way to get the Real codecs is to download - them from the MPlayer website + Possibly the most convenient way to get the Real codecs is to install + RealPlayer 9 or RealPlayer 10 and set the + <parameter>decoder.external.real_codecs_path</parameter> in your xine + config file to the name of the directory which contains the codecs + (look for drvc.so); it's probably something like + <filename>/opt/real/RealPlayer/codecs/</filename>. Restart xine then + and you should be able to watch Real files/streams. + </para> + <para> + Another way to get the Real codecs is to download them from the MPlayer website <ulink url="http://www.mplayerhq.hu/design7/dload.html"> http://www.mplayerhq.hu/design7/dload.html </ulink>. @@ -946,7 +954,7 @@ Latest xine-lib modules (1-beta3 or newer) support external subtitles for any media file, not only AVI. In order to use it you can pass a special MRL construction like: - <screen> <command>xine test.mpg#subtitle:file.sub</command></screen> + <screen> <command>xine file://path/to/test.mpg#subtitle:/path/to/file.sub</command></screen> The external subtitles support can also be used by any xine frontend. Currently xine-ui and kaffeine implement this feature with a subtitle selection dialog. @@ -959,7 +967,7 @@ <title>Running xine</title> <sect2 id="speedup"> - <title>I have a lot of dropped frames - what can I do?</title> + <title>I have a lot of dropped frames – what can I do?</title> <para> Your hardware might be too slow for xine. Make sure you turn on all speed optimizing options. A few things you should check (in order of @@ -1067,7 +1075,7 @@ be enough (use a recent kernel!). </para> <para> - Try a <command>cat /proc/mtrr</command> - if the file exists and you find an entry + Try a <command>cat /proc/mtrr</command> – if the file exists and you find an entry corresponding to the amount of graphics memory you have, everything should be fine. </para> @@ -1082,7 +1090,7 @@ <para> Use the "top" utility and verify under the "NI" column if the X process has a negative value, this indicates a higher priority. - See "The X Window User HOWTO - Performance considerations" for + See "The X Window User HOWTO – Performance considerations" for further instructions <ulink url="http://www.tldp.org/HOWTO/XWindow-User-HOWTO/performance.html"> http://www.tldp.org/HOWTO/XWindow-User-HOWTO/performance.html @@ -1199,7 +1207,7 @@ </sect2> <sect2 id="ports"> - <title>I have problems when using xine on FreeBSD, Solaris, ... !</title> + <title>I have problems when using xine on FreeBSD, Solaris, … !</title> <para> Check out the the corresponding README files in the directory <filename>xine-lib/doc</filename>. </para> @@ -1210,7 +1218,7 @@ <para> aalib is an ascii art library. xine comes with an aalib video output plugin so you can watch movies in your xterm, on the console or on your - old vt100 - very cool ;> ... another nice option is to preview movies + old vt100 – very cool ;> … another nice option is to preview movies on a remote server in your shell over ssh. </para> <para> @@ -1245,7 +1253,7 @@ <para> Currently xine support audio output via OSS (kernel audio drivers), ALSA 0.9.x (ALSA 0.5.x is no longer supported), arts (KDE's sound daemon) - and esound (esd, gnome's sound daemon - not recommended because it has + and esound (esd, gnome's sound daemon – not recommended because it has serious issues with a/v sync). </para> </sect2> @@ -1289,7 +1297,7 @@ <para> If this happens with any video, first try a different audio driver (<command>gxine -A oss</command>, <command>gxine -A arts</command>, - <command>xine -A alsa</command> ...). + <command>xine -A alsa</command> …). </para> <para> If this problem only occurs with one specific stream, maybe switching to @@ -1511,8 +1519,8 @@ </para> <para> Another, whole different possibility is that you have some background - process running which is messing with the clock (like some ntp client - - chronny, ntpd, ...). + process running which is messing with the clock (like some ntp client – + chrony, ntpd, …). </para> <para> Occasional messages of "fixing sound card drift" may happen on start and @@ -1550,9 +1558,9 @@ <title>Video related questions</title> <sect2 id="novideo"> - <title>I can hear the audio - but I don't see a picture!</title> + <title>I can hear the audio – but I don't see a picture!</title> <para> - Probably your hardware is simply too slow - see above for some + Probably your hardware is simply too slow – see above for some hints on how to speed things up. </para> <para> @@ -1706,12 +1714,45 @@ <para> Looks like some colours on your GUI match the colour key which Xv uses. You can change the colour key value to avoid this. There should be a line like: - <programlisting> video.XV_COLORKEY:2110</programlisting> + <programlisting> video.device.xv_colorkey:2110</programlisting> in your <filename>~/.xine/config</filename> file where you can change the colour that's used by xine for the video overlay. </para> </sect2> + <sect2 id="texturedvideo"> + <title>How do I get Xv working with compiz?</title> + <para> + Tell xine to prefer textured video. There should be a line like: + <programlisting> video.device.xv_preferred_method:Any</programlisting> + in your <filename>~/.xine/config</filename> file where you can change the preferred method + used by xine for the video overlay. + </para> + <para> + It may be that your graphics card or driver doesn't have the necessary + support for textured video, or the video is rendered too slowly. + </para> + <itemizedlist> + <listitem><para> + ATI: you are likely to need xf86-video-ati later than 6.8.0; 6.9.0.91 + or newer is recommended for slower/older hardware (< X1300) because + the rendering speed has been improved a lot. + </para></listitem> + <listitem><para> + Intel: 945 and later, at least, should be fine with xf86-video-intel + 2.0 or later. Certainly with 2.2 or later. + </para></listitem> + <listitem><para> + nVidia: will probably be fine. (FIXME) + </para></listitem> + </itemizedlist> + <para> + If you find that textured video is significantly slower or isn't + supported, you should either not use compiz or tell xine to use the + xshm video output driver. + </para> + </sect2> + <sect2 id="aspectratio"> <title>The aspect ratio of the video is wrong!</title> <para> @@ -1818,7 +1859,7 @@ </para> <para> Drivers that access hardware directly includes VIDIX (warning: requires - root priviledges or kernel helper) and SyncFB (requires kernel helper - Matrox only). + root priviledges or kernel helper) and SyncFB (requires kernel helper – Matrox only). User may try one of those, but should be warned that with root access they can cause the system to crash hard. The support is also limited to a couple of graphics cards only. @@ -1967,7 +2008,7 @@ <para> The font for text subtitles is selected via config option <parameter>subtitles.separate.font</parameter>. You can specify xine font name - (<parameter>sans</parameter>, <parameter>serif</parameter>, ...) + (<parameter>sans</parameter>, <parameter>serif</parameter>, …) or file name of the TTF font. The directories <filename>$prefix/share/xine/libxine1/fonts</filename> and <filename>~/.xine/fonts</filename> are searched for the fonts, with @@ -2004,7 +2045,7 @@ </para> <para> Syntax is: - <screen> <command>./xine-fontconf font.ttf font_name [encoding1 [encoding2 [...]]]</command></screen> + <screen> <command>./xine-fontconf font.ttf font_name [encoding1 [encoding2 […]]]</command></screen> </para> <para> For example default font <filename>sans</filename> was generated with @@ -2101,9 +2142,9 @@ <title>"Unable to open dvd drive (/dev/dvd)"</title> <para> You probably don't have /dev/dvd (check that). If so, simply create a - link /dev/dvd that points to your DVD device. Something like... + link /dev/dvd that points to your DVD device. Something like… <screen> <command>ln -s hdc /dev/dvd</command></screen> - ...should do the job. Also make sure you have read and write access on + … should do the job. Also make sure you have read and write access on the device the symlink points to. See the <link linkend="dvdplayback">dvd playback section</link> for more information. @@ -2155,7 +2196,7 @@ standby" or just kill it. Then xine will use OSS audio output. The other method is to make xine use ESD for audio output with: <screen> <command>gxine -A esd</command></screen> - This may result in worse playback - exact syncronization is not possible + This may result in worse playback – exact syncronization is not possible with esd, so using oss should be preferred. </para> <para> @@ -2169,7 +2210,7 @@ your aRts control. (recommended) </para> <para> - Newer versions of arts have an auto-suspend mode - this can lead to + Newer versions of arts have an auto-suspend mode – this can lead to some nondeterministic behaviour of xine if it is set up to use the audio device directly. Using arts is recommended in that case; however, you will lose the ability to do four/five channel audio output. @@ -2208,12 +2249,12 @@ </sect2> <sect2 id="xinecrashed"> - <title>xine just crashed on me - i didn't get any error message</title> + <title>xine just crashed on me – i didn't get any error message</title> <para> OK, yes, that shouldn't happen and you're upset. We can understand that. But, to help you and of course to fix this, we need some information. So, let's go through the checklist and maybe prepare a nice bug report - for the xine-user mailing list: + for the <ulink url="http://bugs.xine-project.org/">xine bug tracker</ulink>: <itemizedlist> <listitem> <para> @@ -2259,11 +2300,10 @@ still under heavy development (nice excuse, isn't it? *grin*). </para> <para> - If you write to the xine user mailing list - <email>xine-user@lists.sourceforge.net</email> + If you write to the <ulink url="http://bugs.xine-project.org/">xine bug tracker</ulink> make sure you include a the above information (when applicable) and also some information about your machine (operating system, cpu type and - speed, gfx card, sound card, ...) and please use a meaningfull subject + speed, gfx card, sound card, …) and please use a meaningfull subject line ("xine bug" is bad, "xine fails to play this quicktime trailer in fullscreen mode" ist much better). </para> diff --git a/doc/hackersguide/internals.sgml b/doc/hackersguide/internals.sgml index 9bd1ec684..8ffef06cd 100644 --- a/doc/hackersguide/internals.sgml +++ b/doc/hackersguide/internals.sgml @@ -64,7 +64,7 @@ <para> support for multiple plugin directories (<filename>$prefix/lib/xine/plugins</filename>, - <filename>$HOME/.xine/plugins</filename>, ...) + <filename>$HOME/.xine/plugins</filename>, …) </para> </listitem> <listitem> @@ -124,7 +124,7 @@ demux_mpeg_block.so decode_mpeg.so video_out_xv.so - ... + … xine-vcdnav-0.9.11 input_vcdnav.so xine-lib-1.2 @@ -135,21 +135,21 @@ demuxers fli.so avi.so - ... + … decoders ffmpeg.so mpeg.so (may contain mpeg 1/2 audio and video decoders) pcm.so - ... + … output video_xv.so audio_oss.so - ... + … xine-lib-3.0 avi.so (avi demuxer) mpeg.so (contains mpeg demuxers and audio/video decoders) video_out_xv.so (Xv video out) - ...</screen> + …</screen> </para> <para> As you can see, every package is free to organize plugins at will @@ -244,12 +244,12 @@ 13, found in xine-lib 2.13.7 would then define this plugin list: <programlisting> #include <xine/plugin.h> - ... + … plugin_t *init_api12(void) { input_plugin_t *this; this = malloc(sizeof(input_plugin_t)); - ... + … return (plugin_t *)this; } /* same thing, with different initialization for API 13 */ @@ -380,7 +380,7 @@ <para> Another problem xine must handle is the sound card clock drift. vpts are compared to the system clock (or even to a different clock provided by a scr plugin) - for presentation but sound card is sampling audio by it's own clocking + for presentation but sound card is sampling audio by its own clocking mechanism, so a small drift may occur. As the playback goes on this error will accumulate possibly resulting in audio gaps or audio drops. To avoid that annoying effect, two countermeasures are available (switchable with xine config @@ -396,7 +396,7 @@ * smoothing algorithms to correct sound card clock drifts. * obs: previously this error was added to xine scr. * - * audio buf ---> metronom --> audio fifo --> (buf->vpts - hw_vpts) + * audio buf ---> metronom --> audio fifo --> (buf->vpts - hw_vpts) * (vpts_offset + error) gap * <---------- control --------------| * @@ -448,7 +448,7 @@ In order to optimize to the most common case, xine's internal format for screen overlays is a similar representation to the 'spu' data. This brings not only performance benefit (since blending functions may skip large image areas due to RLE) but also - compatibility: it's possible to reencode any xine overlay to the original spu format + compatibility: it's possible to re-encode any xine overlay to the original spu format for displaying with mpeg hardware decoders like DXR3. </para> <para> @@ -486,38 +486,38 @@ <programlisting> video_overlay_event_t event; - event.object.handle = this->video_overlay->get_handle(this->video_overlay,0); + event.object.handle = this->video_overlay->get_handle(this->video_overlay,0); - memset(this->event.object.overlay, 0, sizeof(*this->event.object.overlay)); + memset(this->event.object.overlay, 0, sizeof(*this->event.object.overlay)); /* set position and size for this overlay */ - event.object.overlay->x = 0; - event.object.overlay->y = 0; - event.object.overlay->width = 100; - event.object.overlay->height = 100; + event.object.overlay->x = 0; + event.object.overlay->y = 0; + event.object.overlay->width = 100; + event.object.overlay->height = 100; /* clipping region is mostly used by dvd menus for highlighting buttons */ - event.object.overlay->clip_top = 0; - event.object.overlay->clip_bottom = image_height; - event.object.overlay->clip_left = 0; - event.object.overlay->clip_right = image_width; + event.object.overlay->clip_top = 0; + event.object.overlay->clip_bottom = image_height; + event.object.overlay->clip_left = 0; + event.object.overlay->clip_right = image_width; /* the hard part: provide a RLE image */ - event.object.overlay->rle = your_rle; - event.object.overlay->data_size = your_size; - event.object.overlay->num_rle = your_rle_count; + event.object.overlay->rle = your_rle; + event.object.overlay->data_size = your_size; + event.object.overlay->num_rle = your_rle_count; /* palette must contain YUV values for each color index */ - memcpy(event.object.overlay->clip_color, color, sizeof(color)); + memcpy(event.object.overlay->clip_color, color, sizeof(color)); /* this table contains transparency levels for each color index. 0 = completely transparent, 15 - completely opaque */ - memcpy(event.object.overlay->clip_trans, trans, sizeof(trans)); + memcpy(event.object.overlay->clip_trans, trans, sizeof(trans)); /* set the event type and time for displaying */ event.event_type = EVENT_SHOW_SPU; event.vpts = 0; /* zero is a special vpts value, it means 'now' */ - video_overlay->add_event(video_overlay, &event);</programlisting> + video_overlay->add_event(video_overlay, &event);</programlisting> </para> </sect2> <sect2> @@ -535,7 +535,7 @@ <programlisting> osd_object_t osd; - osd = this->osd_renderer->new_object(osd_renderer, 300, 200);</programlisting> + osd = this->osd_renderer->new_object(osd_renderer, 300, 200);</programlisting> <para> Now we may want to set font and color for text rendering. Although we will refer to fonts over this document, in fact the OSD can be any kind of bitmap. Font @@ -547,22 +547,22 @@ </para> <programlisting> /* set sans serif 24 font */ - osd_renderer->set_font(osd, "sans", 24); + osd_renderer->set_font(osd, "sans", 24); /* copy pre-defined colors for white, black border, transparent background to starting at the index used by the first text palette */ - osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_BLACK_TRANSPARENT, OSD_TEXT1); + osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_BLACK_TRANSPARENT, OSD_TEXT1); /* copy pre-defined colors for white, no border, translucid background to starting at the index used by the second text palette */ - osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_NONE_TRANSLUCID, OSD_TEXT2);</programlisting> + osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_NONE_TRANSLUCID, OSD_TEXT2);</programlisting> <para> Now render the text and show it: <programlisting> - osd_renderer->render_text(osd, 0, 0, "white text, black border", OSD_TEXT1); - osd_renderer->render_text(osd, 0, 30, "white text, no border", OSD_TEXT2); + osd_renderer->render_text(osd, 0, 0, "white text, black border", OSD_TEXT1); + osd_renderer->render_text(osd, 0, 30, "white text, no border", OSD_TEXT2); - osd_renderer->show(osd, 0); /* 0 stands for 'now' */</programlisting> + osd_renderer->show(osd, 0); /* 0 stands for 'now' */</programlisting> </para> <para> There's a 1:1 mapping between OSD objects and overlays, therefore the @@ -572,11 +572,11 @@ </para> <programlisting> for( i=0; i < 100; i+=10 ) { - osd_renderer->set_position(osd, i, i ); - osd_renderer->show(osd, 0); + osd_renderer->set_position(osd, i, i ); + osd_renderer->show(osd, 0); sleep(1); } - osd_renderer->hide(osd, 0);</programlisting> + osd_renderer->hide(osd, 0);</programlisting> <para> For additional functions please check osd.h or the public header. </para> @@ -618,13 +618,13 @@ </para> <programlisting> /* obtains size the text will occupy */ - renderer->get_text_size(osd, text, &width, &height); + renderer->get_text_size(osd, text, &width, &height); /* draws a box using font background color (translucid) */ - renderer->filled_rect(osd, x1, y1, x1+width, y1+height, OSD_TEXT2 + 1); + renderer->filled_rect(osd, x1, y1, x1+width, y1+height, OSD_TEXT2 + 1); /* render text */ - renderer->render_text(osd, x1, y1, text, OSD_TEXT2);</programlisting> + renderer->render_text(osd, x1, y1, text, OSD_TEXT2);</programlisting> </sect3> <sect3> <title>OSD text and palette FAQ</title> diff --git a/doc/hackersguide/intro.sgml b/doc/hackersguide/intro.sgml index c7dce6254..4e96d2de1 100644 --- a/doc/hackersguide/intro.sgml +++ b/doc/hackersguide/intro.sgml @@ -6,7 +6,7 @@ <para> You are currently looking at a piece of documentation for xine. xine is a free video player. It lives on - <ulink url="http://xinehq.de/">http://xinehq.de/</ulink>. Specifically + <ulink url="http://www.xine-project.org/">http://www.xine-project.org/</ulink>. Specifically this document goes under the moniker of the "xine Hackers' Guide". </para> </sect1> @@ -36,7 +36,7 @@ </para> <para> New versions of this document can also be obtained from the xine web site: - <ulink url="http://xinehq.de/">http://xinehq.de/</ulink>. + <ulink url="http://www.xine-project.org/">http://www.xine-project.org/</ulink>. </para> </sect1> diff --git a/doc/hackersguide/output.sgml b/doc/hackersguide/output.sgml index 806e89d0a..57781c05e 100644 --- a/doc/hackersguide/output.sgml +++ b/doc/hackersguide/output.sgml @@ -267,7 +267,7 @@ a deep copy of the frame, because the decoder might still use the frame as a reference frame for future decoding. The usual procedure is: <programlisting> - modified_frame = port->original_port->get_frame(port->original_port, ...); + modified_frame = port->original_port->get_frame(port->original_port, …); _x_post_frame_copy_down(frame, modified_frame); copy_and_modify(frame, modified_frame); skip = modified_frame->draw(modified_frame, stream); diff --git a/doc/hackersguide/overview.sgml b/doc/hackersguide/overview.sgml index d405ac18c..eb62e5bd3 100644 --- a/doc/hackersguide/overview.sgml +++ b/doc/hackersguide/overview.sgml @@ -460,7 +460,7 @@ <para> Contains various video output driver plugins. Video output drivers are thin abstraction layers over various video output platforms - (e.g. X11, directfb, directX,...). Video output driver plugins + (e.g. X11, directfb, directX, …). Video output driver plugins provide functions like frame allocation and drawing and handle stuff like hardware acceleration, scaling and colorspace conversion if necessary. They do not handle a/v sync since this is done @@ -497,7 +497,7 @@ <term><filename>xine-engine</filename></term> <listitem> <para> - The heart of xine - it's engine. Contains code to + The heart of xine – its engine. Contains code to load and handle all the plugins, the configuration repository as well as the generic decoding loops and code for synchronized output. A lot of helper functions for plugins to use live here as well. @@ -573,7 +573,7 @@ <programlisting> static void push (my_stack_t *this_gen, int i) { intstack_t *this = (intstack_t *)this_gen; - this->values[MAX_STACK_SIZE - ++this->stack_size] = i; + this->values[MAX_STACK_SIZE - ++this->stack_size] = i; }</programlisting> </para> <para> @@ -613,15 +613,15 @@ this = malloc(sizeof(intstack_t)); /* fill in methods */ - this->push = push; - this->add = add; - this->pop = pop; + this->push = push; + this->add = add; + this->pop = pop; /* init data fields */ - this->stack_size = 0; + this->stack_size = 0; /* return public part */ - return &this->stack; + return &this->stack; }</programlisting> </para> <sect2> @@ -686,7 +686,7 @@ <listitem> <para> use something like - <programlisting> printf("module: ..."[,...]);</programlisting> + <programlisting> printf("module: ..."[,…]);</programlisting> for console output. All console output goes to stdout and must be prefixed by the module name which generates the output (see example above). @@ -714,7 +714,7 @@ <para> Output which is done thru this function will be displayed for the end user by the frontend. - If <varname>xine->verbosity</varname> is not 0 the messages will also + If <varname>xine->verbosity</varname> is not 0 the messages will also be displayed on the console. Ideally these strings are translated. This function is for information which the user should @@ -727,7 +727,7 @@ <sect2> <title>xprintf</title> <para> - This macro uses the <varname>xine->verbosity</varname> value to decide + This macro uses the <varname>xine->verbosity</varname> value to decide if the string should be printed to the console. Possible values are XINE_VERBOSITY_NONE, XINE_VERBOSITY_LOG or XINE_VERBOSITY_DEBUG. By default nothing is printed. @@ -806,6 +806,32 @@ working on other parts of the code or are simply busy at the moment). </para> + <para> + We prefer to receive patches in a format which is immediately + committable. This normally means that we want your name and email address + (we're not keen on pseudonyms), a subject line which provides a + convenient summary of your changes, and body text which provides a longer + description (if needed). Patches must be generated using <command>hg + diff</command> or <command>cvs -z9 diff</command>, depending on which is + used for the repository, and always from within the top level of the + checked-out source. + </para> + <para> + If your patch is intended for a Mercurial-format repository, then + committing it locally and using + <command>hg export <parameter>.</parameter> ><filename>foo.patch</filename></command> + to create the file to be attached is acceptable (but note that the first + line – up to the first line feed – of the commit message is regarded as + the patch summary; if you're not sure, check with + <command>hg log -r<parameter>.</parameter></command>. + Alternatively, use <token>From:</token> and <token>Subject:</token> lines + in the patch file itself; this is useful when forwarding. + </para> + <para> + Patches should normally be included as attachments. Some mail clients and + webmail services are known to mangle whitespace or wrap lines, either of + which is enough to render a patch potentially useless. + </para> </sect1> </chapter> diff --git a/doc/hackersguide/stream.sgml b/doc/hackersguide/stream.sgml index d05bbba65..d9a5471bd 100644 --- a/doc/hackersguide/stream.sgml +++ b/doc/hackersguide/stream.sgml @@ -392,9 +392,9 @@ <programlisting> buf_element_t *buf; - buf = stream->video_fifo->buffer_pool_alloc(stream->video_fifo); - buf->type = BUF_CONTROL_START; - stream->video_fifo->put(stream->video_fifo, buf);</programlisting> + buf = stream->video_fifo->buffer_pool_alloc(stream->video_fifo); + buf->type = BUF_CONTROL_START; + stream->video_fifo->put(stream->video_fifo, buf);</programlisting> <para> Buffers must have set the <varname>type</varname> field as shown. All buffer types are defined in <filename>xine-engine/buffer.h</filename>. @@ -410,7 +410,7 @@ To help finding out buffer types for known codecs, functions from <filename>buffer_types.c</filename> may be used to convert "FOURCC" codes or audio format tags (as used in AVI files) to the xine byffer type: - <programlisting> buf->type = fourcc_to_buf_video((void*)this->avi->bih.biCompression);</programlisting> + <programlisting> buf->type = fourcc_to_buf_video((void*)this->avi->bih.biCompression);</programlisting> </para> </sect2> </sect1> @@ -620,7 +620,7 @@ video, subtitles do not form a continuous stream. The decoder will therefore only be called once in a while. The metronom call for timestamping, which for audio and video is done by the engine, has to be done manually for SPU: - <programlisting> vpts = metronom->got_spu_packet(metronom, buf->pts);</programlisting> + <programlisting> vpts = metronom->got_spu_packet(metronom, buf->pts);</programlisting> </para> <para> Another difference is that while both audio and video decoders are automatically diff --git a/doc/internal/HOWTO.release b/doc/internal/HOWTO.release index 2128ca391..38532aac0 100644 --- a/doc/internal/HOWTO.release +++ b/doc/internal/HOWTO.release @@ -127,15 +127,19 @@ hands. (also make sure it gets immediately approved by the xine-announce moderator!) -12) write the announcement for xinehq: - You need to login on xinehq and use your admin privileges to create a - news article in the "New Releases" section. Include a link to the - SourceForge Release notes/Changelog page and one to the download page. - - Warning: triple-check that you get the HTML correct! If you have - unmatched quotes, you might break the whole website so that it - can only be repaired by manually fiddling with mysql to get the - HTML right! +12) write the announcement for xine-project.org: + You need to have an account on alioth.debian.org and a checked-out copy + of ssh://hg.debian.org//hg/xine-lib/xine-project-www/ (using Mercurial). + Add the new news item near the top of pages/news/items.xml (use the + provided template), run update.sh (requires xsltproc; if this fails, + re-edit), check that it looks fine in a convenient browser, then commit + and push the change. At present, you will need to request a web site + update via #xine on irc.oftc.net or by contacting a site admin. + + You should include a link to the SourceForge Release notes/Changelog + page and one to the download page. + + Warning: triple-check that you get the XML correct! 13) write the Freshmeat announcement: use your freshmeat account to log into their website, if you aren't diff --git a/doc/man/en/Makefile.am b/doc/man/en/Makefile.am index ee0296033..9fe87cc11 100644 --- a/doc/man/en/Makefile.am +++ b/doc/man/en/Makefile.am @@ -1,5 +1,13 @@ include $(top_srcdir)/misc/Makefile.common -man_MANS = xine-config.1 xine.5 +STATICMANS = xine-config.1 xine.5 +DYNAMICMANS = xine-list-@XINE_SERIES@.1 -EXTRA_DIST = $(man_MANS) +man_MANS = $(STATICMANS) $(DYNAMICMANS) + +BUILT_SOURCES = $(DYNAMICMANS) +DISTCLEANFILES = $(DYNAMICMANS) +EXTRA_DIST = $(STATICMANS) xine-list.1.in + +xine-list-@XINE_SERIES@.1: xine-list.1.in + (echo '.ds xl xine\-list\-@XINE_SERIES@'; cat $<) >$@ diff --git a/doc/man/en/xine-config.1 b/doc/man/en/xine-config.1 index 0a2d8bcc6..207dc2dea 100644 --- a/doc/man/en/xine-config.1 +++ b/doc/man/en/xine-config.1 @@ -1,12 +1,19 @@ +.de TQ +.br +.ns +.TP \\$1 +.. .TH XINE 1 2001-08-28 "The xine project" .SH NAME -xine-config - script to get information about the installed version of libxine +xine\-config - script to get information about the installed version of libxine .SH SYNOPSIS -.B xine-config -[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] [\-\-version] [\-\-libs] [\-\-cflags] [\-\-plugindir] [\-\-skindir] +.B xine\-config +[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] [\-\-version] +[\-\-libs] [\-\-cflags] [\-\-objcflags] +[\-\-plugindir] [\-\-datadir] [\-\-scriptdir] [\-\-localedir] .SH DESCRIPTION .PP -\fIxine-config\fP is a tool that is used to determine +\fIxine\-config\fP is a tool that is used to determine the compiler and linker flags that should be used to compile and link programs that use \fIlibxine\fP. It can also be used to determine the directories where \fIlibxine\fP expects plugins and skins. @@ -15,7 +22,7 @@ by the .m4 macros for GNU autoconf that are included with \fIxine-lib\fP. . .SH OPTIONS .l -\fIxine-config\fP accepts the following options: +\fIxine\-config\fP accepts the following options: .TP 8 .B \-\-version Print the currently installed version of \fIlibxine\fP on the standard output. @@ -24,14 +31,22 @@ Print the currently installed version of \fIlibxine\fP on the standard output. Print the linker flags that are necessary to link \fIlibxine\fP to a program. .TP 8 .B \-\-cflags -Print the compiler flags that are necessary to compile a program that uses -\fIlibxine\fP. +.TQ 8 +.B \-\-objcflags +Print the compiler flags (for C and Objective C, respectively) that are +necessary to compile a program that uses \fIlibxine\fP. .TP 8 +.B \-\-bindir +.TQ 8 .B \-\-plugindir -Print the directory where \fIlibxine\fP plugins are stored/expected. -.TP 8 -.B \-\-skindir -Print the directory in which \fIlibxine\fP skins are stored/expected. +.TQ 8 +.B \-\-datadir +.TQ 8 +.B \-\-scriptdir +.TQ 8 +.B \-\-localedir +Print the directory where, respectively, \fIlibxine\fP binaries, plugins, +data files, scripts and locale data are stored/expected. .TP 8 .B \-\-prefix=PREFIX If specified, use PREFIX instead of the installation prefix that \fIxine-lib\fP @@ -49,8 +64,8 @@ and \-\-libs options. This option must be specified before any .BR xine-lib (3), .BR xine (1) .SH COPYRIGHT -Copyright \(co 2001 Siggi Langauf/the xine project, based on the man page -for gtk-config, \(co 1998 Owen Taylor +Copyright \(co 2001 Siggi Langauf, \(co 2001-2008 the xine project. +Based on the man page for gtk-config, \(co 1998 Owen Taylor. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, diff --git a/doc/man/en/xine-list.1.in b/doc/man/en/xine-list.1.in new file mode 100644 index 000000000..e159852c8 --- /dev/null +++ b/doc/man/en/xine-list.1.in @@ -0,0 +1,40 @@ +.TH XINE 1 2001-08-28 "The xine project" +.SH NAME +\*(xl - get supported filetype information from xine-lib +.SH SYNOPSIS +.B \*(xl +[\fPoptions...\fI] +.SH DESCRIPTION +.PP +\fI\*(xl\fP is a tool that is used to list the MIME type and filename +extension information known and supported by the installed \fIxine-lib\fP. +It is of use in filling in MIME information in front ends' desktop files. +. +.SH OPTIONS +.l +\fIxine\-list\fP accepts the following options: +.TP 8 +.B \-m +.B \-\-mime\-types +List the MIME types known to \fIxine-lib\fP. (This is the default action.) +.TP 8 +.B \-e +.B \-\-extensions +List the file types (filename extensions) known to \fIxine-lib\fP. +.TP 8 +.B \-a +.B \-\-all +List the MIME types known to \fIxine-lib\fP, along with their filename +extensions and descriptions. +.TP 8 +.B \-p +.B \-\-pretty\-print +Add line feeds; print each item on a line of its own. +.SH COPYRIGHT +Copyright \(co 2008 the xine project. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. diff --git a/doc/man/en/xine.5 b/doc/man/en/xine.5 index 7a9357640..eba55aef5 100644 --- a/doc/man/en/xine.5 +++ b/doc/man/en/xine.5 @@ -32,60 +32,73 @@ to read from. Valid MRLs may be plain file names or one of the following .TP \(bu CD and DVD: .br -.BI dvd:/[<device_name>][/<title>.<part>] +.BI dvd:/[ device_name ][/ title [. part ]] .br -.BI dvd:/<DVD_image_file_or_directory>[/<title>.<part>] +.BI dvd:/ DVD_image_file [/ title [. part ]] .br -.BI vcd://[<CD_image>|<device_name>][@[letter]<number>] +.BI dvd:/ DVD_directory [/ title [. part ]] .br -.BI vcdo://<track_number> + (use the path of the directory which contains VIDEO_TS) .br -.BI cdda:/[<device>][/<track-number>] +.BI vcd://[ CD_image_or_device_name ][@[ letter ] number ] +.br +.BI vcdo:// track_number +.br +.BI cdda:/[ device ][/ track_number ] .LP .TP \(bu Video devices: .br -.BI v4l://[<tuner_device>/<frequency>] +.BI v4l://[ tuner_device / frequency ] +.br +.BI dvb:// channel_number +.br + (nth channel in your channels.conf) +.br +.BI dvb:// channel_name .br -.BI dvb://<number_or_channel_name> +.BI dvbc:// channel_name : tuning_parameters .br -.BI dvbc://<channel_name>:<tuning_parameters> +.BI dvbs:// channel_name : tuning_parameters .br -.BI dvbs://<channel_name>:<tuning_parameters> +.BI dvbt:// channel_name : tuning_parameters .br -.BI dvbt://<channel_name>:<tuning_parameters> +.BI dvba:// channel_name : tuning_parameters .br -.BI dvba://<channel_name>:<tuning_parameters> +.BI pvr:/ tmp_files_path ! saved_files_path ! max_page_age .br -.BR pvr:/<tmp_files_path>!<saved_files_path>!<max_page_age> " (for WinTV PVR 250 and 350)" + (for WinTV PVR 250 and 350) .LP .TP \(bu Network: .br -.BI http://<host>... +.BI http:// host... .br -.BR tcp://<host>[:<port>] " (default port is 7658)" +.BI tcp:// host [: port ] .br -.BR udp://<host>[:<port>[?iface=<interface>]] " (default port is 7658)" +.BI udp:// host [: port [?iface= interface ]] .br -.BR rtp://<host>[:<port>[?iface=<interface>]] " (default port is 7658)" +.BI rtp:// host [: port [?iface= interface ]] +.br + (default port for tcp, udp and rtp is 7658) .br .BI smb://... .br -.BI mms://<host>... +.BI mms:// host... .br -.BI pnm://<host>... +.BI pnm:// host... .br -.BR rtsp://<host>... " (requires Real codecs)" +.BI rtsp:// host... "\fR (requires Real codecs)" .br .LP Additional input plugins will provide additional MRL types. The ones listed above are available with stock libxine. \fBNOTE:\fP where a file name is required, the \fIfull path must be -provided\fP - from a shell, you can use \fB"$PWD/file"\fP or +provided\fP - from a shell, you can normally use \fB"$PWD/file"\fP or \fB"$(pwd)/file"\fP or \fB"\`pwd\`/file"\fP if the file is in the current -directory. (Which one depends on your shell; all three work in bash.) +directory. (Which one depends on your shell; all three work in bash. Also, +certain characters need to be encoded.) As of xine-lib 1.1.3, the DVD title number may be 0 (select navigation) and the chapter number may be 0 (full title). @@ -256,6 +269,23 @@ audio program ID .TP 20 .B service-id service ID (needed for now/next information etc.) +.PP +The following keyboard & mouse inputs may be accepted: +.TP 24 +.B Menu 2 +Start/stop recording +.TP 24 +.B Menu 3 +Toggle zoom +.TP 24 +.B Menu 7 +Toggle now/next display +.TP 24 +.B Previous/Next Chapter +Previous/next channel +.TP 24 +.B Mouse wheel & button 1 +Scroll through channel list & select the highlighted channel .SH SUBTITLE .B external subtitle files (any mrl) .br @@ -263,7 +293,12 @@ Text subtitle files may be appended to the MRL:. .TP .BI <mrl>#subtitle:<subtitlefile> This is the normal way to define the subtitle file to use. The frontend will -not take any notice of the subtitle file. +not take any notice of the subtitle file. For example: +.br +.I file://home/user/wibble.mpg#subtitle:/home/user/wibble.sub +.br +(Note that some front ends can detect subtitles files where the name differs +as shown in the example.) .br .SH STREAM OPTIONS .br @@ -290,6 +325,10 @@ Set audio dynamic range compression. .BI <config\ entry> : <config\ value> Assign a new value to any config entry. .TP +.BI save: <file> +Save the stream (if allowed) to the named file, relative to the directory +given by the option "media.capture.save_dir". +.TP .B change configuration option 'on the fly': .br You can change a configuration option at any time, using the special @@ -307,8 +346,8 @@ stream. .br The programs are documented fully on the xine home page: -.UR http://xinehq.de/ -.IR "http://xinehq.de/" +.UR http://www.xine-project.org/ +.IR "http://www.xine-project.org/" .UE .SH AUTHOR This text was extracted from the xine man page by Darren Salt diff --git a/include/Makefile.am b/include/Makefile.am index 46a9e2478..09d432536 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -6,7 +6,8 @@ endif include_HEADERS = xine.h -noinst_HEADERS = config.h configure.h +noinst_HEADERS = config.h +nodist_noinst_HEADERS = configure.h CONFIG_CLEAN_FILES = xine.h $(inttypes_h) diff --git a/include/xine.h.in b/include/xine.h.in index ceb87780a..1b4ddbd64 100644 --- a/include/xine.h.in +++ b/include/xine.h.in @@ -89,8 +89,8 @@ typedef struct xine_video_port_s xine_video_port_t; #ifndef XINE_DISABLE_DEPRECATED_FEATURES /* convenience types: simple player UIs might want to call ports drivers */ -typedef xine_audio_port_t xine_ao_driver_t; -typedef xine_video_port_t xine_vo_driver_t; +typedef xine_audio_port_t xine_ao_driver_t XINE_DEPRECATED; +typedef xine_video_port_t xine_vo_driver_t XINE_DEPRECATED; #endif @@ -175,6 +175,7 @@ void xine_close_video_driver (xine_t *self, xine_video_port_t *driver) XINE_PRO #define XINE_VISUAL_TYPE_CACA 8 #define XINE_VISUAL_TYPE_MACOSX 9 #define XINE_VISUAL_TYPE_XCB 11 +#define XINE_VISUAL_TYPE_RAW 12 /* * free all resources, close all plugins, close engine. @@ -259,7 +260,7 @@ int xine_play (xine_stream_t *stream, int start_pos, int start_time) XINE_PROTE * * returns 1 if OK, 0 on error (use xine_get_error for details) */ -int xine_trick_mode (xine_stream_t *stream, int mode, int value) XINE_PROTECTED; +int xine_trick_mode (xine_stream_t *stream, int mode, int value) XINE_PROTECTED XINE_DEPRECATED; /* trick modes */ #define XINE_TRICK_MODE_OFF 0 @@ -418,14 +419,64 @@ int xine_get_param (xine_stream_t *stream, int param) XINE_PROTECTED; * image format can be YUV 4:2:0 or 4:2:2 * will copy the image data into memory that <img> points to * (interleaved for yuv 4:2:2 or planary for 4:2:0) + * + * xine_get_current_frame() requires that <img> must be able + * to hold the image data. Use a NULL pointer to retrieve the + * necessary parameters for calculating the buffer size. Be + * aware that the image can change between two successive calls + * so you better pause the stream. + * + * xine_get_current_frame_s() requires to specify the buffer + * size and it returns the needed / used size. It won't copy + * image data into a too small buffer. + * + * xine_get_current_frame_alloc() takes care of allocating + * a buffer on its own, so image data can be retrieved by + * a single call without the need to pause the stream. + * + * xine_get_current_frame_data() passes the parameters of the + * previously mentioned functions plus further information in + * a structure and can work like the _s or _alloc function + * respectively depending on the passed flags. * - * returns 1 on success, 0 failure. + * all functions return 1 on success, 0 failure. */ int xine_get_current_frame (xine_stream_t *stream, int *width, int *height, int *ratio_code, int *format, uint8_t *img) XINE_PROTECTED; +int xine_get_current_frame_s (xine_stream_t *stream, + int *width, int *height, + int *ratio_code, int *format, + uint8_t *img, int *img_size) XINE_PROTECTED; + +int xine_get_current_frame_alloc (xine_stream_t *stream, + int *width, int *height, + int *ratio_code, int *format, + uint8_t **img, int *img_size) XINE_PROTECTED; + +typedef struct { + + int width; + int height; + int crop_left; + int crop_right; + int crop_top; + int crop_bottom; + int ratio_code; + int interlaced; + int format; + int img_size; + uint8_t *img; +} xine_current_frame_data_t; + +#define XINE_FRAME_DATA_ALLOCATE_IMG (1<<0) + +int xine_get_current_frame_data (xine_stream_t *stream, + xine_current_frame_data_t *data, + int flags) XINE_PROTECTED; + /* xine image formats */ #define XINE_IMGFMT_YV12 (('2'<<24)|('1'<<16)|('V'<<8)|'Y') #define XINE_IMGFMT_YUY2 (('2'<<24)|('Y'<<16)|('U'<<8)|'Y') @@ -514,7 +565,7 @@ int xine_get_video_frame (xine_stream_t *stream, int *ratio_code, int *duration, /* msec */ int *format, - uint8_t *img) XINE_PROTECTED; + uint8_t *img) XINE_PROTECTED XINE_DEPRECATED; /* TODO: xine_get_audio_frame */ @@ -942,6 +993,7 @@ const char *xine_get_meta_info (xine_stream_t *stream, int info) XINE_PROTECTE #define XINE_META_INFO_INPUT_PLUGIN 9 #define XINE_META_INFO_CDINDEX_DISCID 10 #define XINE_META_INFO_TRACK_NUMBER 11 +#define XINE_META_INFO_COMPOSER 12 /********************************************************************* @@ -1046,6 +1098,8 @@ const char *xine_get_post_plugin_description (xine_t *self, /* get lists of available audio and video output plugins */ const char *const *xine_list_audio_output_plugins (xine_t *self) XINE_PROTECTED; const char *const *xine_list_video_output_plugins (xine_t *self) XINE_PROTECTED; +/* typemask is (1ULL << XINE_VISUAL_TYPE_FOO) | ... */ +const char *const *xine_list_video_output_plugins_typed (xine_t *self, uint64_t typemask) XINE_PROTECTED; /* get list of available demultiplexor plugins */ const char *const *xine_list_demuxer_plugins(xine_t *self) XINE_PROTECTED; @@ -1071,7 +1125,7 @@ void xine_plugins_garbage_collector(xine_t *self) XINE_PROTECTED; #ifndef XINE_DISABLE_DEPRECATED_FEATURES /* talk to video output driver - old method */ int xine_gui_send_vo_data (xine_stream_t *self, - int type, void *data) XINE_PROTECTED; + int type, void *data) XINE_PROTECTED XINE_DEPRECATED; #endif /* new (preferred) method to talk to video driver. */ @@ -1106,7 +1160,7 @@ typedef struct { * * this will be called by the video driver to find out * how big the video output area size will be for a - * given video size. The ui should _not_ adjust it's + * given video size. The ui should _not_ adjust its * video out area, just do some calculations and return * the size. This will be called for every frame, ui * implementation should be fast. @@ -1130,12 +1184,12 @@ typedef struct { * frame output callback * * this will be called by the video driver for every frame - * it's about to draw. ui can adapt it's size if necessary + * it's about to draw. ui can adapt its size if necessary * here. * note: the ui doesn't have to adjust itself to this * size, this is just to be taken as a hint. * ui must return the actual size of the video output - * area and the video output driver will do it's best + * area and the video output driver will do its best * to adjust the video frames to that size (while * preserving aspect ratio and stuff). * dest_x, dest_y: offset inside window @@ -1206,7 +1260,7 @@ typedef struct { * * this will be called by the video driver to find out * how big the video output area size will be for a - * given video size. The ui should _not_ adjust it's + * given video size. The ui should _not_ adjust its * video out area, just do some calculations and return * the size. This will be called for every frame, ui * implementation should be fast. @@ -1230,12 +1284,12 @@ typedef struct { * frame output callback * * this will be called by the video driver for every frame - * it's about to draw. ui can adapt it's size if necessary + * it's about to draw. ui can adapt its size if necessary * here. * note: the ui doesn't have to adjust itself to this * size, this is just to be taken as a hint. * ui must return the actual size of the video output - * area and the video output driver will do it's best + * area and the video output driver will do its best * to adjust the video frames to that size (while * preserving aspect ratio and stuff). * dest_x, dest_y: offset inside window @@ -1261,6 +1315,73 @@ typedef struct { } xcb_visual_t; +/************************************************** + * XINE_VO_RAW struct definitions + *************************************************/ +/* frame_format definitions */ +#define XINE_VORAW_YV12 1 +#define XINE_VORAW_YUY2 2 +#define XINE_VORAW_RGB 4 + +/* maximum number of overlays the raw driver can handle */ +#define XINE_VORAW_MAX_OVL 16 + +/* raw_overlay_t struct used in raw_overlay_cb callback */ +typedef struct { + uint8_t *ovl_rgba; + int ovl_w, ovl_h; /* overlay's width and height */ + int ovl_x, ovl_y; /* overlay's top-left display position */ +} raw_overlay_t; + +/* this is the visual data struct any raw gui + * must supply to the xine_open_video_driver call + * ("data" parameter) + */ +typedef struct { + void *user_data; + + /* OR'ed frame_format + * Unsupported frame formats are converted to rgb. + * XINE_VORAW_RGB is always assumed by the driver, even if not set. + * So a frontend must at least support rgb. + * Be aware that rgb requires more cpu than yuv, + * so avoid its usage for video playback. + * However, it's useful for single frame capture (e.g. thumbs) + */ + int supported_formats; + + /* raw output callback + * this will be called by the video driver for every frame + * + * If frame_format==XINE_VORAW_YV12, data0 points to frame_width*frame_height Y values + * data1 points to (frame_width/2)*(frame_height/2) U values + * data2 points to (frame_width/2)*(frame_height/2) V values + * + * If frame_format==XINE_VORAW_YUY2, data0 points to frame_width*frame_height*2 YU/Y²V values + * data1 is NULL + * data2 is NULL + * + * If frame_format==XINE_VORAW_RGB, data0 points to frame_width*frame_height*3 RGB values + * data1 is NULL + * data2 is NULL + */ + void (*raw_output_cb) (void *user_data, int frame_format, + int frame_width, int frame_height, + double frame_aspect, + void *data0, void *data1, void *data2); + + /* raw overlay callback + * this will be called by the video driver for every new overlay state + * overlays_array points to an array of num_ovl raw_overlay_t + * Note that num_ovl can be 0, meaning "end of overlay display" + * num_ovl is at most XINE_VORAW_MAX_OVL */ + void (*raw_overlay_cb) (void *user_data, int num_ovl, + raw_overlay_t *overlays_array); +} raw_visual_t; +/********************************************** + * end of vo_raw defs + *********************************************/ + /* * this is the visual data struct any fb gui * may supply to the xine_open_video_driver call @@ -1524,7 +1645,7 @@ int xine_config_lookup_entry (xine_t *self, const char *key, /* * update a config entry (which was returned from lookup_entry() ) * - * xine will make a deep copy of the data in the entry into it's internal + * xine will make a deep copy of the data in the entry into its internal * config database. */ void xine_config_update_entry (xine_t *self, @@ -1668,6 +1789,7 @@ void xine_config_reset (xine_t *self) XINE_PROTECTED; #define XINE_EVENT_VDR_SELECTAUDIO 352 #define XINE_EVENT_VDR_TRICKSPEEDMODE 353 #define XINE_EVENT_VDR_PLUGINSTARTED 354 +#define XINE_EVENT_VDR_DISCONTINUITY 355 /* events generated from post plugins */ #define XINE_EVENT_POST_TVTIME_FILMMODE_CHANGE 400 @@ -1796,7 +1918,7 @@ typedef struct { typedef struct { int alternative; /* alternative playlist number, usually 0 */ char mrl[1]; /* might (will) be longer */ -} xine_mrl_reference_data_t; +} xine_mrl_reference_data_t XINE_DEPRECATED; typedef struct { int alternative; /* as above */ @@ -1919,8 +2041,8 @@ typedef struct { * This is the mechanism to report async errors from engine. * * If frontend knows about the XINE_MSG_xxx type it may safely - * ignore the 'explanation' field and provide it's own custom - * dialog to the 'parameters'. + * ignore the 'explanation' field and provide its own custom + * dialogue to the 'parameters'. * * right column specifies the usual parameters. */ @@ -2098,16 +2220,16 @@ void xine_osd_free (xine_osd_t *self) XINE_PROTECTED; typedef enum { XINE_TVSYSTEM_PAL = 0, XINE_TVSYSTEM_NTSC -} xine_tvsystem; +} xine_tvsystem XINE_DEPRECATED; /* connect to nvtvd server and save current TV and X settings */ -int xine_tvmode_init (xine_t *self) XINE_PROTECTED; +int xine_tvmode_init (xine_t *self) XINE_PROTECTED XINE_DEPRECATED; /* Turn tvmode on/off (1/0)*/ -int xine_tvmode_use(xine_t *self, int use_tvmode) XINE_PROTECTED; +int xine_tvmode_use(xine_t *self, int use_tvmode) XINE_PROTECTED XINE_DEPRECATED; /* Set which tv system to use: XINE_TVSYSTEM_PAL or XINE_TVSYSTEM_NTSC */ -void xine_tvmode_set_tvsystem(xine_t *self, xine_tvsystem system) XINE_PROTECTED; +void xine_tvmode_set_tvsystem(xine_t *self, xine_tvsystem system) XINE_PROTECTED XINE_DEPRECATED; /* try to change TV state if enabled * type select 'regular' (0) or 'TV' (1) state @@ -2116,16 +2238,16 @@ void xine_tvmode_set_tvsystem(xine_t *self, xine_tvsystem system) XINE_PROTECTED * fps frame rate the mode should match best or 0 if unknown * returns: finally selected state */ -int xine_tvmode_switch (xine_t *self, int type, int width, int height, double fps) XINE_PROTECTED; +int xine_tvmode_switch (xine_t *self, int type, int width, int height, double fps) XINE_PROTECTED XINE_DEPRECATED; /* adapt (maximum) output size to visible area if necessary and return pixel * aspect and real frame rate if available */ void xine_tvmode_size (xine_t *self, int *width, int *height, - double *pixelratio, double *fps) XINE_PROTECTED; + double *pixelratio, double *fps) XINE_PROTECTED XINE_DEPRECATED; /* restore old TV and X settings and close nvtvd connection */ -void xine_tvmode_exit (xine_t *self) XINE_PROTECTED; +void xine_tvmode_exit (xine_t *self) XINE_PROTECTED XINE_DEPRECATED; #endif diff --git a/lib/os_internal.h b/lib/os_internal.h index 11601bbdf..fe406a747 100644 --- a/lib/os_internal.h +++ b/lib/os_internal.h @@ -4,6 +4,10 @@ #include <stddef.h> #include <stdarg.h> +#ifdef HAVE_SYS_PARAM_H +# include <sys/param.h> +#endif + #ifdef HOST_OS_DARWIN /* Darwin (Mac OS X) needs __STDC_LIBRARY_SUPPORTED__ for SCNx64 and * SCNxMAX macros */ @@ -32,6 +36,13 @@ # define XINE_DIRECTORY_SEPARATOR_CHAR '/' #endif +/* replacement of min/max macros */ +#ifndef HAVE_MAX_MACRO +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif +#ifndef HAVE_MIN_MACRO +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif /* replacement of strndup */ #ifndef HAVE_STRNDUP @@ -61,6 +72,13 @@ const char *xine_private_hstrerror(int err); int xine_private_setenv(const char *name, const char *value); #endif +/* replacement of strcasestr */ +#ifndef HAVE_STRCASESTR +#define HAVE_STRCASESTR +#define strcasestr(HAYSTACK, NEEDLE) xine_private_strcasestr((HAYSTACK), (NEEDLE)) +char *xine_private_strcasestr(const char *haystack, const char *needle); +#endif + /* replacement of strtok_r */ #ifndef HAVE_STRTOK_R #define HAVE_STRTOK_R diff --git a/lib/strcasestr.c b/lib/strcasestr.c new file mode 100644 index 000000000..0793319aa --- /dev/null +++ b/lib/strcasestr.c @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * 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. Neither the name of the University nor the names of its contributors + * 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. + */ + +#include "config.h" + +#include <assert.h> +#include <ctype.h> +#include <string.h> + +/* + * Find the first occurrence of find in s, ignore case. + */ +char * +xine_private_strcasestr(const char *s, const char *find) +{ + char c, sc; + size_t len; + + if ((c = *find++) != 0) { + c = tolower((unsigned char)c); + len = strlen(find); + do { + do { + if ((sc = *s++) == 0) + return (NULL); + } while ((char)tolower((unsigned char)sc) != c); + } while (strncasecmp(s, find, len) != 0); + s--; + } + return (char *)s; +} diff --git a/lib/timegm.c b/lib/timegm.c index 588131afb..e86e66370 100644 --- a/lib/timegm.c +++ b/lib/timegm.c @@ -5,15 +5,19 @@ time_t xine_private_timegm(struct tm *tm) { time_t ret; +#if defined(HAVE_TZSET) char *tz; tz = getenv("TZ"); setenv("TZ", "", 1); tzset(); +#endif ret = mktime(tm); +#if defined(HAVE_TZSET) if (tz) setenv("TZ", tz, 1); else unsetenv("TZ"); tzset(); +#endif return ret; } diff --git a/m4/Makefile.am b/m4/Makefile.am index 3a5209dc3..bcaa78a49 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -24,7 +24,7 @@ EXTRA_DIST = glibc2.m4 intdiv0.m4 intmax.m4 inttypes.m4 inttypes_h.m4 inttypes-p lcmessage.m4 \ libFLAC.m4 \ libfame.m4 \ - libtool15.m4 \ + misc.m4 \ opengl.m4 \ optimizations.m4 \ pkg.m4 \ diff --git a/m4/_xine.m4 b/m4/_xine.m4 index 930703bbb..0c840cd9d 100644 --- a/m4/_xine.m4 +++ b/m4/_xine.m4 @@ -142,36 +142,6 @@ AC_DEFUN([AC_CHECK_DXR3], fi ]) -dnl AC_TRY_CFLAGS (CFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS]) -dnl check if $CC supports a given set of cflags -AC_DEFUN([AC_TRY_CFLAGS], - [AC_MSG_CHECKING([if $CC supports $1 flags]) - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$1" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_try_cflags_ok=yes],[ac_cv_try_cflags_ok=no]) - CFLAGS="$SAVE_CFLAGS" - AC_MSG_RESULT([$ac_cv_try_cflags_ok]) - if test x"$ac_cv_try_cflags_ok" = x"yes"; then - ifelse([$2],[],[:],[$2]) - else - ifelse([$3],[],[:],[$3]) - fi]) - -dnl AC_TRY_LDFLAGS (CFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS]) -dnl check if $CC supports a given set of ldflags -AC_DEFUN([AC_TRY_LDFLAGS], - [AC_MSG_CHECKING([if $CC supports $1 flags]) - SAVE_LDFLAGS="$LDFLAGS" - LDFLAGS="$1" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_try_ldflags_ok=yes],[ac_cv_try_ldflags_ok=no]) - LDFLAGS="$SAVE_LDFLAGS" - AC_MSG_RESULT([$ac_cv_try_ldflags_ok]) - if test x"$ac_cv_try_ldflags_ok" = x"yes"; then - ifelse([$2],[],[:],[$2]) - else - ifelse([$3],[],[:],[$3]) - fi]) - dnl AC_CHECK_GENERATE_INTTYPES_H (INCLUDE-DIRECTORY) dnl generate a default inttypes.h if the header file does not exist already AC_DEFUN([AC_CHECK_GENERATE_INTTYPES], @@ -542,7 +512,6 @@ _ACEOF dnl Check for the type of the third argument of getsockname AC_DEFUN([AC_CHECK_SOCKLEN_T], [ AC_MSG_CHECKING(for socklen_t) - AC_LANG_PUSH(C++) AC_CACHE_VAL(ac_cv_socklen_t, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> @@ -558,7 +527,6 @@ getsockname(0,(struct sockaddr*)0, &a);]])], [ac_cv_socklen_t=int],[ac_cv_socklen_t=size_t]) fi ]) - AC_LANG_POP([C++]) AC_MSG_RESULT($ac_cv_socklen_t) if test "$ac_cv_socklen_t" != "socklen_t"; then diff --git a/m4/attributes.m4 b/m4/attributes.m4 index 55f34c9f7..4863b6bfe 100644 --- a/m4/attributes.m4 +++ b/m4/attributes.m4 @@ -1,6 +1,6 @@ dnl Macros to check the presence of generic (non-typed) symbols. -dnl Copyright (c) 2006-2007 Diego Pettenò <flameeyes@gmail.com> -dnl Copyright (c) 2006-2007 xine project +dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com> +dnl Copyright (c) 2006-2008 xine project dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -32,22 +32,96 @@ dnl distribute a modified version of the Autoconf Macro, you may extend dnl this special exception to the GPL to apply to your modified version as dnl well. -AC_DEFUN([CC_CHECK_CFLAGS], [ - AC_CACHE_CHECK([if $CC supports $1 flag], - AS_TR_SH([cc_cv_cflags_$1]), +dnl Check if the flag is supported by compiler +dnl CC_CHECK_CFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) + +AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [ + AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]), [ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" AC_COMPILE_IFELSE([int a;], [eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"], - [eval "AS_TR_SH([cc_cv_cflags_$1])="]) + [eval "AS_TR_SH([cc_cv_cflags_$1])='no'"]) CFLAGS="$ac_save_CFLAGS" ]) - if eval test [x$]AS_TR_SH([cc_cv_cflags_$1]) = xyes; then - ifelse([$2], , [:], [$2]) - else - ifelse([$3], , [:], [$3]) - fi + AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes], + [$2], [$3]) +]) + +dnl Check if the flag is supported by compiler (cacheable) +dnl CC_CHECK_CFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) + +AC_DEFUN([CC_CHECK_CFLAGS], [ + AC_CACHE_CHECK([if $CC supports $1 flag], + AS_TR_SH([cc_cv_cflags_$1]), + CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here! + ) + + AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes], + [$2], [$3]) +]) + +dnl CC_CHECK_CFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found]) +dnl Check for CFLAG and appends them to CFLAGS if supported +AC_DEFUN([CC_CHECK_CFLAG_APPEND], [ + AC_CACHE_CHECK([if $CC supports $1 flag], + AS_TR_SH([cc_cv_cflags_$1]), + CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here! + ) + + AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes], + [CFLAGS="$CFLAGS $1"; DEBUG_CFLAGS="$DEBUG_CFLAGS $1"; $2], [$3]) +]) + +dnl CC_CHECK_CFLAGS_APPEND([FLAG1 FLAG2], [action-if-found], [action-if-not]) +AC_DEFUN([CC_CHECK_CFLAGS_APPEND], [ + for flag in $1; do + CC_CHECK_CFLAG_APPEND($flag, [$2], [$3]) + done +]) + +dnl Check if the flag is supported by linker (cacheable) +dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) + +AC_DEFUN([CC_CHECK_LDFLAGS], [ + AC_CACHE_CHECK([if $CC supports $1 flag], + AS_TR_SH([cc_cv_ldflags_$1]), + [ac_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $1" + AC_LINK_IFELSE([int main() { return 1; }], + [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"], + [eval "AS_TR_SH([cc_cv_ldflags_$1])="]) + LDFLAGS="$ac_save_LDFLAGS" + ]) + + AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes], + [$2], [$3]) +]) + +dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for +dnl the current linker to avoid undefined references in a shared object. +AC_DEFUN([CC_NOUNDEFINED], [ + dnl We check $host for which systems to enable this for. + AC_REQUIRE([AC_CANONICAL_HOST]) + + case $host in + dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads + dnl are requested, as different implementations are present; to avoid problems + dnl use -Wl,-z,defs only for those platform not behaving this way. + *-freebsd* | *-openbsd*) ;; + *) + dnl First of all check for the --no-undefined variant of GNU ld. This allows + dnl for a much more readable commandline, so that people can understand what + dnl it does without going to look for what the heck -z defs does. + for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do + CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"]) + break + done + ;; + esac + + AC_SUBST([LDFLAGS_NOUNDEFINED]) ]) dnl Check for a -Werror flag or equivalent. -Werror is the GCC @@ -59,246 +133,159 @@ dnl Other compilers don't support -Werror per se, but they support dnl an equivalent flag: dnl - Sun Studio compiler supports -errwarn=%all AC_DEFUN([CC_CHECK_WERROR], [ - AC_CACHE_VAL([cc_cv_werror], - [CC_CHECK_CFLAGS([-Werror], [cc_cv_werror=-Werror], - [CC_CHECK_CFLAGS([-errwarn=%all], [cc_cv_werror=-errwarn=%all])]) + AC_CACHE_CHECK( + [for $CC way to treat warnings as errors], + [cc_cv_werror], + [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror], + [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])]) + ]) +]) + +AC_DEFUN([CC_CHECK_ATTRIBUTE], [ + AC_REQUIRE([CC_CHECK_WERROR]) + AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))], + AS_TR_SH([cc_cv_attribute_$1]), + [ac_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cc_cv_werror" + AC_COMPILE_IFELSE([$3], + [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"], + [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"]) + CFLAGS="$ac_save_CFLAGS" ]) + + AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes], + [AC_DEFINE( + AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1, + [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))] + ) + $4], + [$5]) ]) AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((constructor))], - [cc_cv_attribute_constructor], - [AC_COMPILE_IFELSE([ - void ctor() __attribute__((constructor)); - void ctor() { int a; }; - ], - [cc_cv_attribute_constructor=yes], - [cc_cv_attribute_constructor=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_constructor" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_CONSTRUCTOR], 1, [Define this if the compiler supports the constructor attribute]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [constructor],, + [void __attribute__((constructor)) ctor() { int a; }], + [$1], [$2]) ]) AC_DEFUN([CC_ATTRIBUTE_FORMAT], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((format(printf, n, n)))], - [cc_cv_attribute_format], - [AC_COMPILE_IFELSE([ - void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; } - ], - [cc_cv_attribute_format=yes], - [cc_cv_attribute_format=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_format" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_FORMAT], 1, [Define this if the compiler supports the format attribute]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [format], [format(printf, n, n)], + [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }], + [$1], [$2]) ]) AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((format_arg(printf)))], - [cc_cv_attribute_format_arg], - [AC_COMPILE_IFELSE([ - char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; } - ], - [cc_cv_attribute_format_arg=yes], - [cc_cv_attribute_format_arg=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_format_arg" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_FORMAT_ARG], 1, [Define this if the compiler supports the format_arg attribute]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [format_arg], [format_arg(printf)], + [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }], + [$1], [$2]) ]) AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [ - AC_REQUIRE([CC_CHECK_WERROR]) - AC_CACHE_CHECK([if $CC supports __attribute__((visibility("$1")))], - AS_TR_SH([cc_cv_attribute_visibility_$1]), - [ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_COMPILE_IFELSE([void __attribute__((visibility("$1"))) $1_function() { }], - [eval "AS_TR_SH([cc_cv_attribute_visibility_$1])='yes'"], - [eval "AS_TR_SH([cc_cv_attribute_visibility_$1])='no'"]) - CFLAGS="$ac_save_CFLAGS" - ]) - - if eval test [x$]AS_TR_SH([cc_cv_attribute_visibility_$1]) = xyes; then - AC_DEFINE(AS_TR_CPP([SUPPORT_ATTRIBUTE_VISIBILITY_$1]), 1, [Define this if the compiler supports __attribute__((visibility("$1")))]) - ifelse([$2], , [:], [$2]) - else - ifelse([$3], , [:], [$3]) - fi -]) - -AC_DEFUN([CC_FLAG_VISIBILITY], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports -fvisibility=hidden], - [cc_cv_flag_visibility], - [ - save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -fvisibility=hidden" - AC_COMPILE_IFELSE([int a;], - [cc_cv_flag_visibility=yes], - [cc_cv_flag_visibility=no]) - CFLAGS="$save_CFLAGS" - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_flag_visibility" = "xyes"; then - AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1, [Define this if the compiler supports the -fvisibility flag]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [visibility_$1], [visibility("$1")], + [void __attribute__((visibility("$1"))) $1_function() { }], + [$2], [$3]) ]) AC_DEFUN([CC_ATTRIBUTE_NONNULL], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((nonnull()))], - [cc_cv_attribute_nonnull], - [AC_COMPILE_IFELSE([ - void some_function(void *foo, void *bar) __attribute__((nonnull())); - void some_function(void *foo, void *bar) { foo = (void *)0; bar = (void *)0; } - ], - [cc_cv_attribute_nonnull=yes], - [cc_cv_attribute_nonnull=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_nonnull" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_NONNULL], 1, [Define this if the compiler supports the nonnull attribute]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [nonnull], [nonnull()], + [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }], + [$1], [$2]) ]) AC_DEFUN([CC_ATTRIBUTE_UNUSED], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((unused))], - [cc_cv_attribute_unused], - [AC_COMPILE_IFELSE([ - void some_function(void *foo, __attribute__((unused)) void *bar); - ], - [cc_cv_attribute_unused=yes], - [cc_cv_attribute_unused=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_unused" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_UNUSED], 1, [Define this if the compiler supports the unused attribute]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [unused], , + [void some_function(void *foo, __attribute__((unused)) void *bar);], + [$1], [$2]) ]) -AC_DEFUN([CC_FUNC_EXPECT], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler has __builtin_expect function], - [cc_cv_func_expect], - [AC_COMPILE_IFELSE([ - int some_function() - { - int a = 3; - return (int)__builtin_expect(a, 3); - } - ], - [cc_cv_func_expect=yes], - [cc_cv_func_expect=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_func_expect" = "xyes"; then - AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1, [Define this if the compiler supports __builtin_expect() function]) - $1 - else - true - $2 - fi +AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [ + CC_CHECK_ATTRIBUTE( + [sentinel], , + [void some_function(void *foo, ...) __attribute__((sentinel));], + [$1], [$2]) ]) -AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((sentinel))], - [cc_cv_attribute_sentinel], - [AC_COMPILE_IFELSE([ - void some_function(void *foo, ...) __attribute__((sentinel)); - ], - [cc_cv_attribute_sentinel=yes], - [cc_cv_attribute_sentinel=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_sentinel" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_SENTINEL], 1, [Define this if the compiler supports the sentinel attribute]) - $1 - else - true - $2 - fi +AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [ + CC_CHECK_ATTRIBUTE( + [deprecated], , + [void some_function(void *foo, ...) __attribute__((deprecated));], + [$1], [$2]) ]) AC_DEFUN([CC_ATTRIBUTE_ALIAS], [ - AC_REQUIRE([CC_CHECK_WERROR]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $cc_cv_werror" - AC_CACHE_CHECK([if compiler supports __attribute__((weak, alias))], - [cc_cv_attribute_alias], - [AC_COMPILE_IFELSE([ - void other_function(void *foo) { } - void some_function(void *foo) __attribute__((weak, alias("other_function"))); - ], - [cc_cv_attribute_alias=yes], - [cc_cv_attribute_alias=no]) - ]) - CFLAGS="$ac_save_CFLAGS" - - if test "x$cc_cv_attribute_alias" = "xyes"; then - AC_DEFINE([SUPPORT_ATTRIBUTE_ALIAS], 1, [Define this if the compiler supports the alias attribute]) - $1 - else - true - $2 - fi + CC_CHECK_ATTRIBUTE( + [alias], [weak, alias], + [void other_function(void *foo) { } + void some_function(void *foo) __attribute__((weak, alias("other_function")));], + [$1], [$2]) +]) + +AC_DEFUN([CC_ATTRIBUTE_MALLOC], [ + CC_CHECK_ATTRIBUTE( + [malloc], , + [void * __attribute__((malloc)) my_alloc(int n);], + [$1], [$2]) +]) + +AC_DEFUN([CC_ATTRIBUTE_PACKED], [ + CC_CHECK_ATTRIBUTE( + [packed], , + [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));], + [$1], [$2]) +]) + +AC_DEFUN([CC_ATTRIBUTE_CONST], [ + CC_CHECK_ATTRIBUTE( + [const], , + [int __attribute__((const)) twopow(int n) { return 1 << n; } ], + [$1], [$2]) +]) + +AC_DEFUN([CC_FLAG_VISIBILITY], [ + AC_REQUIRE([CC_CHECK_WERROR]) + AC_CACHE_CHECK([if $CC supports -fvisibility=hidden], + [cc_cv_flag_visibility], + [cc_flag_visibility_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cc_cv_werror" + CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden], + cc_cv_flag_visibility='yes', + cc_cv_flag_visibility='no') + CFLAGS="$cc_flag_visibility_save_CFLAGS"]) + + AS_IF([test "x$cc_cv_flag_visibility" = "xyes"], + [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1, + [Define this if the compiler supports the -fvisibility flag]) + $1], + [$2]) +]) + +AC_DEFUN([CC_FUNC_EXPECT], [ + AC_REQUIRE([CC_CHECK_WERROR]) + AC_CACHE_CHECK([if compiler has __builtin_expect function], + [cc_cv_func_expect], + [ac_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cc_cv_werror" + AC_COMPILE_IFELSE( + [int some_function() { + int a = 3; + return (int)__builtin_expect(a, 3); + }], + [cc_cv_func_expect=yes], + [cc_cv_func_expect=no]) + CFLAGS="$ac_save_CFLAGS" + ]) + + AS_IF([test "x$cc_cv_func_expect" = "xyes"], + [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1, + [Define this if the compiler supports __builtin_expect() function]) + $1], + [$2]) ]) AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [ diff --git a/m4/codeset.m4 b/m4/codeset.m4 deleted file mode 100644 index a6e67ec49..000000000 --- a/m4/codeset.m4 +++ /dev/null @@ -1,21 +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; 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_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include <langinfo.h>], - [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 <langinfo.h> and nl_langinfo(CODESET).]) - fi -]) diff --git a/m4/getopt_long.m4 b/m4/getopt_long.m4 new file mode 100644 index 000000000..39f41ffc2 --- /dev/null +++ b/m4/getopt_long.m4 @@ -0,0 +1,34 @@ +dnl --------------------------------------------- +dnl Check for GNU getopt_long() +dnl --------------------------------------------- + +AC_DEFUN([AC_GETOPT_LONG], [ + AC_MSG_CHECKING(for GNU getopt_long) + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include <stdio.h> +#include <stdlib.h> +#include <getopt.h> + +static struct option long_options[] = { + {"help" , no_argument, 0, 1 }, + {"version" , no_argument, 0, 2 }, + {0 , no_argument, 0, 0 } +}; + +int main (int argc, char **argv) { + int option_index = 0; + int c; + opterr = 0; + while ((c = getopt_long (argc, argv, "?hv", + long_options, &option_index)) != EOF) + ; + return 0; +} + ]])], + [AC_MSG_RESULT(yes); + ac_getopt_long=yes; + AC_DEFINE(HAVE_GETOPT_LONG,,[Define this if you have GNU getopt_long() implemented])], + [AC_MSG_RESULT(no); ac_getopt_long=no], + [AC_MSG_RESULT(no); ac_getopt_long=no]) + AM_CONDITIONAL(HAVE_GETOPT_LONG, test x"$ac_getopt_long" = "xyes") +]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 deleted file mode 100644 index 624a80785..000000000 --- a/m4/gettext.m4 +++ /dev/null @@ -1,549 +0,0 @@ -# gettext.m4 serial 37 (gettext-0.14.4) -dnl Copyright (C) 1995-2005 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 <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 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 <inttypes.h> 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 Sometimes, on MacOS X, libintl requires linking with CoreFoundation. - gt_INTL_MACOSX - - 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 <libintl.h> -]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 * gettext ("")]ifelse([$2], [need-ngettext], [ + * 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 <libintl.h> -]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 (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - 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 <libintl.h> -]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 (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - [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 - - 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 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. - 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 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([gt_GLIBC2])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([bh_C_SIGNED])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl - AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl - AC_REQUIRE([gt_TYPE_WCHAR_T])dnl - AC_REQUIRE([gt_TYPE_WINT_T])dnl - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_REQUIRE([gt_TYPE_INTMAX_T]) - AC_REQUIRE([gt_PRINTF_POSIX]) - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([gl_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - AC_REQUIRE([gl_XSIZE])dnl - AC_REQUIRE([gt_INTL_MACOSX])dnl - - AC_CHECK_TYPE([ptrdiff_t], , - [AC_DEFINE([ptrdiff_t], [long], - [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) - ]) - 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([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -__fsetlocking]) - - dnl Use the _snprintf function only if it is declared (because on NetBSD it - dnl is defined as a weak alias of snprintf; we prefer to use the latter). - gt_CHECK_DECL(_snprintf, [#include <stdio.h>]) - gt_CHECK_DECL(_snwprintf, [#include <stdio.h>]) - - dnl Use the *_unlocked functions only if they are declared. - dnl (because some of them were defined without being declared in Solaris - dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built - dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>]) - gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>]) - gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>]) - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - AC_SUBST([HAVE_POSIX_PRINTF]) - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - AC_SUBST([HAVE_ASPRINTF]) - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - AC_SUBST([HAVE_SNPRINTF]) - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - AC_SUBST([HAVE_WPRINTF]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - gt_LC_MESSAGES - fi - - if test -n "$INTL_MACOSX_LIBS"; then - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - 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 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_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include <CFPreferences.h>], - [CFPreferencesCopyAppValue(NULL, NULL)], - [gt_cv_func_CFPreferencesCopyAppValue=yes], - [gt_cv_func_CFPreferencesCopyAppValue=no]) - CPPFLAGS="$gt_save_CPPFLAGS" - 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_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include <CFLocale.h>], [CFLocaleCopyCurrent();], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) - CPPFLAGS="$gt_save_CPPFLAGS" - 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]) -]) - - -dnl gt_CHECK_DECL(FUNC, INCLUDES) -dnl Check whether a function is declared. -AC_DEFUN([gt_CHECK_DECL], -[ - AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, - [AC_TRY_COMPILE([$2], [ -#ifndef $1 - char *p = (char *) $1; -#endif -], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) - if test $ac_cv_have_decl_$1 = yes; then - gt_value=1 - else - gt_value=0 - fi - AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/iconv.m4 b/m4/iconv.m4 deleted file mode 100644 index 5ed7c43ae..000000000 --- a/m4/iconv.m4 +++ /dev/null @@ -1,117 +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; 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]) - - dnl - dnl xine: added the prefix /usr/local on FreeBSD if none specified - dnl - if test -z "$INCICONV"; then - case "$host" in - *-*-freebsd*) - dir=/usr/local - if test -d $dir/include; then INCICONV="$INCICONV -I$dir/include"; fi - if test -d $dir/lib; then - LIBICONV="$LIBICONV -L$dir/lib" - LTLIBICONV="$LTLIBICONV -L$dir/lib" - fi - ;; - esac - fi -]) - -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 <stdlib.h> -#include <iconv.h>], - [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 <stdlib.h> -#include <iconv.h>], - [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 <stdlib.h> -#include <iconv.h> -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 --git a/m4/intmax.m4 b/m4/intmax.m4 deleted file mode 100644 index d99c999fd..000000000 --- a/m4/intmax.m4 +++ /dev/null @@ -1,30 +0,0 @@ -# intmax.m4 serial 2 (gettext-0.14.2) -dnl Copyright (C) 2002-2005 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 Test whether the system has the 'intmax_t' type, but don't attempt to -dnl find a replacement if it is lacking. - -AC_DEFUN([gt_TYPE_INTMAX_T], -[ - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, - [AC_TRY_COMPILE([ -#include <stddef.h> -#include <stdlib.h> -#if HAVE_STDINT_H_WITH_UINTMAX -#include <stdint.h> -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include <inttypes.h> -#endif -], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) - if test $gt_cv_c_intmax_t = yes; then - AC_DEFINE(HAVE_INTMAX_T, 1, - [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) - fi -]) diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4 deleted file mode 100644 index 4d56a9ad3..000000000 --- a/m4/inttypes-pri.m4 +++ /dev/null @@ -1,30 +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; 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. - -# Define PRI_MACROS_BROKEN if <inttypes.h> 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 <inttypes.h> -#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 <inttypes.h> exists and defines unusable PRI* macros.]) - fi -]) diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4 deleted file mode 100644 index a5d075d96..000000000 --- a/m4/inttypes_h.m4 +++ /dev/null @@ -1,26 +0,0 @@ -# inttypes_h.m4 serial 6 -dnl Copyright (C) 1997-2004 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 Paul Eggert. - -# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists, -# doesn't clash with <sys/types.h>, and declares uintmax_t. - -AC_DEFUN([gl_AC_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, - [AC_TRY_COMPILE( - [#include <sys/types.h> -#include <inttypes.h>], - [uintmax_t i = (uintmax_t) -1;], - gl_cv_header_inttypes_h=yes, - gl_cv_header_inttypes_h=no)]) - if test $gl_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, - [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, - and declares uintmax_t. ]) - fi -]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 deleted file mode 100644 index ea0b0c4ea..000000000 --- a/m4/lib-link.m4 +++ /dev/null @@ -1,553 +0,0 @@ -# lib-link.m4 serial 6 (gettext-0.14.3) -dnl Copyright (C) 2001-2005 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.50) - -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], -[ - 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" - 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* | 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/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; 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 "$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 --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 deleted file mode 100644 index e0736ce1c..000000000 --- a/m4/lib-prefix.m4 +++ /dev/null @@ -1,153 +0,0 @@ -# lib-prefix.m4 serial 4 (gettext-0.14.2) -dnl Copyright (C) 2001-2005 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([AS_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* | 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/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 --git a/m4/libtool15.m4 b/m4/libtool15.m4 deleted file mode 100644 index 1f0567787..000000000 --- a/m4/libtool15.m4 +++ /dev/null @@ -1,6168 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 -## Free Software Foundation, Inc. -## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -## -## 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 47 AC_PROG_LIBTOOL - - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If this macro is not defined by Autoconf, define it here. -m4_ifdef([AC_PROVIDE_IFELSE], - [], - [m4_define([AC_PROVIDE_IFELSE], - [m4_ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) - - -# AC_PROG_LIBTOOL -# --------------- -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. - AC_PROVIDE_IFELSE([AC_PROG_CXX], - [AC_LIBTOOL_CXX], - [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX - ])]) -dnl And a similar setup for Fortran 77 support - AC_PROVIDE_IFELSE([AC_PROG_F77], - [AC_LIBTOOL_F77], - [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -])]) - -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. - AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [ifdef([AC_PROG_GCJ], - [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([A][M_PROG_GCJ], - [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([LT_AC_PROG_GCJ], - [define([LT_AC_PROG_GCJ], - defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -])])# AC_PROG_LIBTOOL - - -# _AC_PROG_LIBTOOL -# ---------------- -AC_DEFUN([_AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -])# _AC_PROG_LIBTOOL - - -# AC_LIBTOOL_SETUP -# ---------------- -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl - -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl - -AC_LIBTOOL_SYS_MAX_CMD_LEN -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e 1s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -AC_CHECK_TOOL(AR, ar, false) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -AC_LIBTOOL_LANG_C_CONFIG -_LT_AC_TAGCONFIG -])# AC_LIBTOOL_SETUP - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -AC_DEFUN([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -]) - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -AC_DEFUN([_LT_COMPILER_BOILERPLATE], -[ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -AC_DEFUN([_LT_LINKER_BOILERPLATE], -[ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* -])# _LT_LINKER_BOILERPLATE - - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -AC_DEFUN([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<EOF -[$]* -EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -])])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - ]) -esac - -need_locks="$enable_libtool_lock" - -])# _LT_AC_LOCK - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_REQUIRE([LT_AC_PROG_SED]) -AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - ifelse([$5], , :, [$5]) -else - ifelse([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for *BSD - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h)dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -[#line __oline__ "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so"; shrext="$shrext_cmds" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll"; shrext="$shrext_cmds" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'; shrext="$shrext_cmds" - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so'; shrext="$shrext_cmds" - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl'; shrext="$shrext_cmds" - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl'; shrext="$shrext_cmds" - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll"; shrext="$shrext_cmds" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_ARG_WITH([tags], - [AS_HELP_STRING([--with-tags@<:@=TAGS@:>@], - [include additional configurations @<:@automatic@:>@])], - [tagnames="$withval"]) - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - AC_MSG_WARN([output file `$ofile' does not exist]) - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) - else - AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) - fi - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in - "") ;; - *) AC_MSG_ERROR([invalid tag name: $tagname]) - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - AC_MSG_ERROR([tag name \"$tagname\" already exists]) - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_LIBTOOL_LANG_CXX_CONFIG - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - AC_LIBTOOL_LANG_F77_CONFIG - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - AC_LIBTOOL_LANG_GCJ_CONFIG - else - tagname="" - fi - ;; - - RC) - AC_LIBTOOL_LANG_RC_CONFIG - ;; - - *) - AC_MSG_ERROR([Unsupported tag name: $tagname]) - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - AC_MSG_ERROR([unable to update list of available tagged configurations.]) - fi -fi -])# _LT_AC_TAGCONFIG - - -# AC_LIBTOOL_DLOPEN -# ----------------- -# enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_DLOPEN - - -# AC_LIBTOOL_WIN32_DLL -# -------------------- -# declare package support for building win32 dll's -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_WIN32_DLL - - -# AC_ENABLE_SHARED([DEFAULT]) -# --------------------------- -# implement the --enable-shared flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -])# AC_ENABLE_SHARED - - -# AC_DISABLE_SHARED -# ----------------- -#- set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no) -])# AC_DISABLE_SHARED - - -# AC_ENABLE_STATIC([DEFAULT]) -# --------------------------- -# implement the --enable-static flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]AC_ENABLE_STATIC_DEFAULT) -])# AC_ENABLE_STATIC - - -# AC_DISABLE_STATIC -# ----------------- -# set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no) -])# AC_DISABLE_STATIC - - -# AC_ENABLE_FAST_INSTALL([DEFAULT]) -# --------------------------------- -# implement the --enable-fast-install flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -])# AC_ENABLE_FAST_INSTALL - - -# AC_DISABLE_FAST_INSTALL -# ----------------------- -# set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no) -])# AC_DISABLE_FAST_INSTALL - - -# AC_LIBTOOL_PICMODE([MODE]) -# -------------------------- -# implement the --with-pic flag -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default) -])# AC_LIBTOOL_PICMODE - - -# AC_PROG_EGREP -# ------------- -# This is predefined starting with Autoconf 2.54, so this conditional -# definition can be removed once we require Autoconf 2.54 or later. -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -])]) - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--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([LT_AC_PROG_SED])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -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 $CC]) - 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. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname 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(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_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 `"$lt_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="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$lt_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_PROG_LD_GNU -])# AC_PROG_LD - - -# AC_PROG_LD_GNU -# -------------- -AC_DEFUN([AC_PROG_LD_GNU], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac]) -with_gnu_ld=$lt_cv_prog_gnu_ld -])# AC_PROG_LD_GNU - - -# AC_PROG_LD_RELOAD_FLAG -# ---------------------- -# find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], -[AC_CACHE_CHECK([for $LD option to reload object files], - lt_cv_ld_reload_flag, - [lt_cv_ld_reload_flag='-r']) -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac -])# AC_PROG_LD_RELOAD_FLAG - - -# AC_DEPLIBS_CHECK_METHOD -# ----------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], -[AC_CACHE_CHECK([how to recognise dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix4* | aix5*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump'. - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | kfreebsd*-gnu | dragonfly*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the pathname to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -])# AC_PROG_NM - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_CXX -# -------------- -# enable support for C++ libraries -AC_DEFUN([AC_LIBTOOL_CXX], -[AC_REQUIRE([_LT_AC_LANG_CXX]) -])# AC_LIBTOOL_CXX - - -# _LT_AC_LANG_CXX -# --------------- -AC_DEFUN([_LT_AC_LANG_CXX], -[AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([_LT_AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) -])# _LT_AC_LANG_CXX - -# _LT_AC_PROG_CXXCPP -# --------------- -AC_DEFUN([_LT_AC_PROG_CXXCPP], -[ -AC_REQUIRE([AC_PROG_CXX]) -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -fi -])# _LT_AC_PROG_CXXCPP - -# AC_LIBTOOL_F77 -# -------------- -# enable support for Fortran 77 libraries -AC_DEFUN([AC_LIBTOOL_F77], -[AC_REQUIRE([_LT_AC_LANG_F77]) -])# AC_LIBTOOL_F77 - - -# _LT_AC_LANG_F77 -# --------------- -AC_DEFUN([_LT_AC_LANG_F77], -[AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) -])# _LT_AC_LANG_F77 - - -# AC_LIBTOOL_GCJ -# -------------- -# enable support for GCJ libraries -AC_DEFUN([AC_LIBTOOL_GCJ], -[AC_REQUIRE([_LT_AC_LANG_GCJ]) -])# AC_LIBTOOL_GCJ - - -# _LT_AC_LANG_GCJ -# --------------- -AC_DEFUN([_LT_AC_LANG_GCJ], -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], - [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], - [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], - [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) -])# _LT_AC_LANG_GCJ - - -# AC_LIBTOOL_RC -# -------------- -# enable support for Windows resource files -AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) -])# AC_LIBTOOL_RC - - -# AC_LIBTOOL_LANG_C_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -AC_DEFUN([_LT_AC_LANG_C_CONFIG], -[lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -# Report which librarie types wil actually be built -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_C_CONFIG - - -# AC_LIBTOOL_LANG_CXX_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([_LT_AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -_LT_AC_TAGVAR(ld_shlibs, $1)=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix4* | aix5*) - 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. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # 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*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes ; then - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - linux*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc*) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC*) - # Portland Group C++ compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd='echo' - ;; - osf3*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. We must also pass each convience library through - # to the system linker between allextract/defaultextract. - # The C++ compiler will combine linker options so we - # cannot just pass the convience library names through - # without $wl. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$GXX" -_LT_AC_TAGVAR(LD, $1)="$LD" - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -AC_LIBTOOL_POSTDEP_PREDEP($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# AC_LIBTOOL_LANG_CXX_CONFIG - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -ifelse([$1],[],[cat > conftest.$ac_ext <<EOF -int a; -void foo (void) { a = 0; } -EOF -],[$1],[CXX],[cat > conftest.$ac_ext <<EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -EOF -],[$1],[F77],[cat > conftest.$ac_ext <<EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -EOF -],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - # The `*' in the case matches for architectures that use `case' in - # $output_verbose_cmd can trigger glob expansion during the loop - # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" - - for p in `eval $output_verbose_link_cmd`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" \ - || test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then - _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then - _LT_AC_TAGVAR(predep_objects, $1)="$p" - else - _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then - _LT_AC_TAGVAR(postdep_objects, $1)="$p" - else - _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$rm -f confest.$objext - -case " $_LT_AC_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac -])# AC_LIBTOOL_POSTDEP_PREDEP - -# AC_LIBTOOL_LANG_F77_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) -AC_DEFUN([_LT_AC_LANG_F77_CONFIG], -[AC_REQUIRE([AC_PROG_F77]) -AC_LANG_PUSH(Fortran 77) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code=" subroutine t\n return\n end\n" - -# Code to be used in simple link tests -lt_simple_link_test_code=" program t\n end\n" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$G77" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP - - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_F77_CONFIG - - -# AC_LIBTOOL_LANG_GCJ_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) -AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], -[AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_GCJ_CONFIG - - -# AC_LIBTOOL_LANG_RC_CONFIG -# -------------------------- -# Ensure that the configuration vars for the Windows resource compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) -AC_DEFUN([_LT_AC_LANG_RC_CONFIG], -[AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_RC_CONFIG - - -# AC_LIBTOOL_CONFIG([TAGNAME]) -# ---------------------------- -# If TAGNAME is not passed, then create an initial libtool script -# with a default configuration from the untagged config vars. Otherwise -# add code to config.status for appending the configuration named by -# TAGNAME from the matching tagged config vars. -AC_DEFUN([AC_LIBTOOL_CONFIG], -[# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - _LT_AC_TAGVAR(compiler, $1) \ - _LT_AC_TAGVAR(CC, $1) \ - _LT_AC_TAGVAR(LD, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ - _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ - _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ - _LT_AC_TAGVAR(old_archive_cmds, $1) \ - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ - _LT_AC_TAGVAR(predep_objects, $1) \ - _LT_AC_TAGVAR(postdep_objects, $1) \ - _LT_AC_TAGVAR(predeps, $1) \ - _LT_AC_TAGVAR(postdeps, $1) \ - _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ - _LT_AC_TAGVAR(archive_cmds, $1) \ - _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ - _LT_AC_TAGVAR(postinstall_cmds, $1) \ - _LT_AC_TAGVAR(postuninstall_cmds, $1) \ - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ - _LT_AC_TAGVAR(allow_undefined_flag, $1) \ - _LT_AC_TAGVAR(no_undefined_flag, $1) \ - _LT_AC_TAGVAR(export_symbols_cmds, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ - _LT_AC_TAGVAR(hardcode_automatic, $1) \ - _LT_AC_TAGVAR(module_cmds, $1) \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) \ - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ - _LT_AC_TAGVAR(exclude_expsyms, $1) \ - _LT_AC_TAGVAR(include_expsyms, $1); do - - case $var in - _LT_AC_TAGVAR(old_archive_cmds, $1) | \ - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ - _LT_AC_TAGVAR(archive_cmds, $1) | \ - _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ - _LT_AC_TAGVAR(module_cmds, $1) | \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ - _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\[$]0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` - ;; - esac - -ifelse([$1], [], - [cfgfile="${ofile}T" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - $rm -f "$cfgfile" - AC_MSG_NOTICE([creating $ofile])], - [cfgfile="$ofile"]) - - cat <<__EOF__ >> "$cfgfile" -ifelse([$1], [], -[#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# 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. -# -# 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. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e 1s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG], -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) - -# Is the compiler the GNU C compiler? -with_gcc=$_LT_AC_TAGVAR(GCC, $1) - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_[]_LT_AC_TAGVAR(LD, $1) - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds'; shrext="$shrext_cmds" - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) - -# Commands used to build and install a shared archive. -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" - -# Set to yes if exported symbols are required. -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) - -# The commands to list exported symbols. -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) - -# Symbols that must always be exported. -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) - -ifelse([$1],[], -[# ### END LIBTOOL CONFIG], -[# ### END LIBTOOL TAG CONFIG: $tagname]) - -__EOF__ - -ifelse([$1],[], [ - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -]) -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -])# AC_LIBTOOL_CONFIG - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -linux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDGIRSTW]]' - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDRT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat <<EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <<EOF >> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) - ifelse([$1],[CXX],[ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc* | ecpc*) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC*) - # Portland Group C++ compiler. - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux*) - case $cc_basename in - icc* | ecc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - ccc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - unicos*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" - ;; -esac -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -ifelse([$1],[CXX],[ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -],[ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - _LT_CC_BASENAME([$compiler]) - case $host_os in - cygwin* | mingw* | pw32*) - # 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++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # 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. - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* ) # Portland Group f77 and f90 compilers - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix4* | aix5*) - 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. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # 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*) - 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 - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi[[45]]*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll"; shrext="$shrext_cmds" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu | dragonfly*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - wlarc='' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine linker options so we - # cannot just pass the convience library names through - # without $wl, iff we do not link with $LD. - # Luckily, gcc supports the same syntax we need for Sun Studio. - # Supported since Solaris 2.6 (maybe 2.5.1?) - case $wlarc in - '') - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; - *) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; - esac ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_AC_FILE_LTDLL_C -# ------------------- -# Be careful that the start marker always follows a newline. -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include <windows.h> -# #undef WIN32_LEAN_AND_MEAN -# #include <stdio.h> -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include <cygwin/cygwin_dll.h> -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ -])# _LT_AC_FILE_LTDLL_C - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) - - -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) - -AC_DEFUN([LT_AC_PROG_GCJ], -[AC_CHECK_TOOL(GCJ, gcj, no) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS) -]) - -AC_DEFUN([LT_AC_PROG_RC], -[AC_CHECK_TOOL(RC, windres, no) -]) - -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_MSG_RESULT([$SED]) -]) diff --git a/m4/longdouble.m4 b/m4/longdouble.m4 deleted file mode 100644 index 40cd7ce02..000000000 --- a/m4/longdouble.m4 +++ /dev/null @@ -1,28 +0,0 @@ -# longdouble.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2002-2003 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 Test whether the compiler supports the 'long double' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_LONGDOUBLE], -[ - AC_CACHE_CHECK([for long double], gt_cv_c_long_double, - [if test "$GCC" = yes; then - gt_cv_c_long_double=yes - else - AC_TRY_COMPILE([ - /* The Stardent Vistra knows sizeof(long double), but does not support it. */ - long double foo = 0.0; - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - int array [2*(sizeof(long double) >= sizeof(double)) - 1]; - ], , - gt_cv_c_long_double=yes, gt_cv_c_long_double=no) - fi]) - if test $gt_cv_c_long_double = yes; then - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) - fi -]) diff --git a/m4/longlong.m4 b/m4/longlong.m4 deleted file mode 100644 index 7b399e012..000000000 --- a/m4/longlong.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# longlong.m4 serial 5 -dnl Copyright (C) 1999-2004 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 Paul Eggert. - -# Define HAVE_LONG_LONG if 'long long' works. - -AC_DEFUN([gl_AC_TYPE_LONG_LONG], -[ - AC_CACHE_CHECK([for long long], ac_cv_type_long_long, - [AC_TRY_LINK([long long ll = 1LL; int i = 63;], - [long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll;], - ac_cv_type_long_long=yes, - ac_cv_type_long_long=no)]) - if test $ac_cv_type_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, - [Define if you have the 'long long' type.]) - fi -]) diff --git a/m4/misc.m4 b/m4/misc.m4 new file mode 100644 index 000000000..83246f36c --- /dev/null +++ b/m4/misc.m4 @@ -0,0 +1,55 @@ +dnl Miscellaneous M4 macros for configure +dnl Copyright (c) 2008 Diego Pettenò <flameeyes@gmail.com> +dnl Copyright (c) 2008 xine project +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +dnl 02110-1301, USA. +dnl +dnl As a special exception, the copyright owners of the +dnl macro gives unlimited permission to copy, distribute and modify the +dnl configure scripts that are the output of Autoconf when processing the +dnl Macro. You need not follow the terms of the GNU General Public +dnl License when using or distributing such scripts, even though portions +dnl of the text of the Macro appear in them. The GNU General Public +dnl License (GPL) does govern all other use of the material that +dnl constitutes the Autoconf Macro. +dnl +dnl This special exception to the GPL applies to versions of the +dnl Autoconf Macro released by this project. When you make and +dnl distribute a modified version of the Autoconf Macro, you may extend +dnl this special exception to the GPL to apply to your modified version as +dnl well. + +AC_DEFUN([XINE_CHECK_MINMAX], [ + AC_CHECK_HEADERS([sys/param.h]) + AC_CACHE_CHECK([for MIN()/MAX() macros], + xine_cv_minmax, + [ + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #ifdef HAVE_SYS_PARAM_H + # include <sys/param.h> + #endif + ], [ + int a = MIN(1, 3); + int b = MAX(2, 3); + ])], + [xine_cv_minmax=yes], + [xine_cv_minmax=no]) + ]) + + AS_IF([test x$xine_cv_minmax = xyes], + [$1], [$2]) +]) diff --git a/m4/nls.m4 b/m4/nls.m4 deleted file mode 100644 index 2082c3b24..000000000 --- a/m4/nls.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# nls.m4 serial 2 (gettext-0.14.3) -dnl Copyright (C) 1995-2003, 2005 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 <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 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) -]) - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([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 --git a/m4/optimizations.m4 b/m4/optimizations.m4 index a1f2f2f00..405672cca 100644 --- a/m4/optimizations.m4 +++ b/m4/optimizations.m4 @@ -17,37 +17,32 @@ AC_DEFUN([AC_OPTIMIZATIONS], [ if test "$GCC" = yes; then dnl dnl check cflags not supported by all gcc versions - AC_TRY_CFLAGS("-fschedule-insns2", f_si="-fschedule-insns2", f_si="") - AC_TRY_CFLAGS("-mwide-multiply", m_wm="-mwide-multiply", m_wm="") + CC_CHECK_CFLAGS([-fschedule-insns2], f_si="-fschedule-insns2", f_si="") + CC_CHECK_CFLAGS([-mwide-multiply], m_wm="-mwide-multiply", m_wm="") dnl dnl gcc 3.1 uses the -f version dnl - AC_TRY_CFLAGS("-falign-functions=4", f_af="-falign-functions=4", + CC_CHECK_CFLAGS([-falign-functions=4], f_af="-falign-functions=4", f_af="-malign-functions=4") - AC_TRY_CFLAGS("-falign-loops=4", f_al="-falign-loops=4", + CC_CHECK_CFLAGS([-falign-loops=4], f_al="-falign-loops=4", f_al="-malign-loops=4") - AC_TRY_CFLAGS("-falign-jumps=4", f_aj="-falign-jumps=4", + CC_CHECK_CFLAGS([-falign-jumps=4], f_aj="-falign-jumps=4", f_aj="-malign-jumps=4") dnl dnl Check for some optimization disabling dnl needed for win32 code dnl - AC_TRY_CFLAGS("-fno-omit-frame-pointer", W32_NO_OPTIMIZE="$W32_NO_OPTIMIZE -fno-omit-frame-pointer",) - AC_TRY_CFLAGS("-fno-inline-functions", W32_NO_OPTIMIZE="$W32_NO_OPTIMIZE -fno-inline-functions",) - AC_TRY_CFLAGS("-fno-rename-registers", W32_NO_OPTIMIZE="$W32_NO_OPTIMIZE -fno-rename-registers",) + CC_CHECK_CFLAGS([-fno-omit-frame-pointer], W32_NO_OPTIMIZE="$W32_NO_OPTIMIZE -fno-omit-frame-pointer",) + CC_CHECK_CFLAGS([-fno-inline-functions], W32_NO_OPTIMIZE="$W32_NO_OPTIMIZE -fno-inline-functions",) + CC_CHECK_CFLAGS([-fno-rename-registers], W32_NO_OPTIMIZE="$W32_NO_OPTIMIZE -fno-rename-registers",) AC_SUBST(W32_NO_OPTIMIZE) dnl dnl Multipass compilation dnl - AC_TRY_CFLAGS("-fprofile-arcs", PASS1_CFLAGS="-fprofile_arcs $PASS1_CFLAGS",) - AC_TRY_CFLAGS("-fbranch-probabilities", PASS2_CFLAGS="-fbranch-probabilities $PASS2_CFLAGS",) + CC_CHECK_CFLAGS([-fprofile-arcs], PASS1_CFLAGS="-fprofile_arcs $PASS1_CFLAGS",) + CC_CHECK_CFLAGS([-fbranch-probabilities], PASS2_CFLAGS="-fbranch-probabilities $PASS2_CFLAGS",) AC_SUBST(PASS1_CFLAGS) AC_SUBST(PASS2_CFLAGS) - dnl - dnl Warnings - dnl - CFLAGS="-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes $CFLAGS" - CFLAGS="-Wnested-externs -Wcast-align $CFLAGS" dnl some combinations of gcc+glibc produce useless warnings on memset dnl when compiling with -Wpointer-arith, so we check for this first AC_MSG_CHECKING(for sane -Wpointer-arith) @@ -61,16 +56,13 @@ AC_DEFUN([AC_OPTIMIZATIONS], [ dnl -finline-functions. Use -fno-inline-functions for gcc < 3.4.0. AC_MSG_CHECKING(for gcc 3.4.0 or later) - newGCC="`"$CC" -dumpversion | + newGCC="`$CC -dumpversion | awk -F. '{ if ((@S|@1 * 10000 + @S|@2 * 100 + @S|@3) >= 30400) { print "yes" } }' `" AC_MSG_RESULT(${newGCC:-no - assuming bugginess in -finline-functions}) test "$newGCC" = yes || INLINE_FUNCTIONS=-fno-inline-functions fi - dnl Flags not supported by all *cc* variants - AC_TRY_CFLAGS("-Wall", wall="-Wall", wall="") - CFLAGS="$wall ${CFLAGS}" DEBUG_CFLAGS="$wall ${DEBUG_CFLAGS}" @@ -80,11 +72,11 @@ AC_DEFUN([AC_OPTIMIZATIONS], [ if test "$GCC" = yes; then dnl Check for gcc cpu optimization support - AC_TRY_CFLAGS("-mtune=i386", + CC_CHECK_CFLAGS("-mtune=i386", sarchopt="-mtune", - AC_TRY_CFLAGS("-mcpu=i386", + CC_CHECK_CFLAGS("-mcpu=i386", sarchopt="-mcpu", - AC_TRY_CFLAGS("-march=i386", + CC_CHECK_CFLAGS("-march=i386", sarchopt="-march", [ AC_MSG_RESULT(** no cpu optimization supports **) sarchopt=no @@ -94,7 +86,7 @@ AC_DEFUN([AC_OPTIMIZATIONS], [ ) dnl special check for k7 cpu CC support - AC_TRY_CFLAGS("$sarchopt=athlon", k7cpu="athlon", k7cpu="i686") + CC_CHECK_CFLAGS([$sarchopt=athlon], k7cpu="athlon", k7cpu="i686") dnl add x86 specific gcc CFLAGS CFLAGS="-O3 -pipe -fomit-frame-pointer $f_af $f_al $f_aj $m_wm $m_psb -fexpensive-optimizations $f_si -ffast-math $INLINE_FUNCTIONS $CFLAGS" diff --git a/m4/po.m4 b/m4/po.m4 deleted file mode 100644 index f2795eea0..000000000 --- a/m4/po.m4 +++ /dev/null @@ -1,429 +0,0 @@ -# po.m4 serial 7 (gettext-0.14.3) -dnl Copyright (C) 1995-2005 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 <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 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_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 >&]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 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 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 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 - # 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. - 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 - # 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. - 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 <<EOT -$* -EOT - } - gt_echo='echo_func' - fi - fi - - # A sed script that extracts the value of VARIABLE from a Makefile. - sed_x_variable=' -# Test if the hold space is empty. -x -s/P/P/ -x -ta -# Yes it was empty. Look if we have the expected variable definition. -/^[ ]*VARIABLE[ ]*=/{ - # Seen the first line of the variable definition. - s/^[ ]*VARIABLE[ ]*=// - ba -} -bd -:a -# Here we are processing a line from the variable definition. -# Remove comment, more precisely replace it with a space. -s/#.*$/ / -# See if the line ends in a backslash. -tb -:b -s/\\$// -# Print the line, without the trailing backslash. -p -tc -# There was no trailing backslash. The end of the variable definition is -# reached. Clear the hold space. -s/^.*$// -x -bd -:c -# A trailing backslash means that the variable definition continues in the -# next line. Put a nonempty string into the hold space to indicate this. -s/^.*$/P/ -x -:d -' -changequote([,])dnl - - # Set POTFILES to the value of the Makefile variable POTFILES. - sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`" - POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` - # Compute POTFILES_DEPS as - # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) - POTFILES_DEPS= - for file in $POTFILES; do - POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" - done - POMAKEFILEDEPS="" - - 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 - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. - sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`" - ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` - fi - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - # 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) - # Compute PROPERTIESFILES - # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) - # Compute CLASSFILES - # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) - # Compute QMFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) - # Compute MSGFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) - # Compute RESOURCESDLLFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - PROPERTIESFILES= - CLASSFILES= - QMFILES= - MSGFILES= - RESOURCESDLLFILES= - 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" - PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" - CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" - QMFILES="$QMFILES $srcdirpre$lang.qm" - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" - 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/'` - RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll" - 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= - JAVACATALOGS= - QTCATALOGS= - TCLCATALOGS= - CSHARPCATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" - QTCATALOGS="$QTCATALOGS $lang.qm" - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" - 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/'` - CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" - done - fi - - sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$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" <<EOF -$frobbedlang.msg: $lang.po - @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ - \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } -EOF - done - fi - if grep -l '@CSHARPCATALOGS@' "$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/_/-/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" <<EOF -$frobbedlang/\$(DOMAIN).resources.dll: $lang.po - @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \ - \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } -EOF - done - fi - if test -n "$POMAKEFILEDEPS"; then - cat >> "$ac_file.tmp" <<EOF -Makefile: $POMAKEFILEDEPS -EOF - fi - mv "$ac_file.tmp" "$ac_file" -]) diff --git a/m4/pthreads.m4 b/m4/pthreads.m4 index 65d3a9756..d1d1c0a62 100644 --- a/m4/pthreads.m4 +++ b/m4/pthreads.m4 @@ -20,9 +20,10 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [ case $host in *-hpux11*) PTHREAD_CFLAGS="" ;; *-darwin*) PTHREAD_CFLAGS="" ;; - *-solaris*) - # Handle Studio compiler + *-solaris*|*-linux-gnu) + dnl Handle Sun Studio compiler (also on Linux) CC_CHECK_CFLAGS([-mt], [PTHREAD_CFLAGS="-mt"]);; + *) PTHREAD_CFLAGS="-pthread" ;; esac fi @@ -31,10 +32,15 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [ *-hpux11*) PTHREAD_LIBS="-lpthread" ;; *-darwin*) PTHREAD_LIBS="" ;; *-solaris*) - # Use the same libraries for gcc and sun studio cc + dnl Use the same libraries for gcc and Sun Studio cc PTHREAD_LIBS="-lpthread -lposix4 -lrt";; *) PTHREAD_LIBS="-pthread" ;; esac + + dnl Again, handle Sun Studio compiler + if test "x${PTHREAD_CFLAGS}" = "x-mt"; then + PTHREAD_LIBS="-mt" + fi fi AC_CACHE_CHECK([if $CC supports Pthread], @@ -42,12 +48,11 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [ [ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $cc_cv_werror $PTHREAD_CFLAGS" - LIBS="$LIBS $PTHREAD_LIBS" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include <pthread.h> - void *fakethread(void *arg) { return NULL; } + void *fakethread(void *arg) { (void)arg; return NULL; } pthread_t fakevariable; ]], [[pthread_create(&fakevariable, NULL, &fakethread, NULL);]] @@ -67,3 +72,30 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [ ifelse([$2], , [:], [$2]) fi ]) + +AC_DEFUN([CC_PTHREAD_RECURSIVE_MUTEX], [ + AC_REQUIRE([CC_PTHREAD_FLAGS]) + AC_CACHE_CHECK( + [for recursive mutex support in pthread], + [cc_cv_pthread_recursive_mutex], + [ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $cc_cv_werror $PTHREAD_CFLAGS" + LIBS="$LIBS $PTHREAD_LIBS" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([ +#include <pthread.h> + ], [ + pthread_mutexattr_t attr; + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + ]) + ], + [cc_cv_pthread_recursive_mutex=yes], + [cc_cv_pthread_recursive_mutex=no]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + ]) + + AS_IF([test x"$cc_cv_pthread_recursive_mutex" = x"yes"], + [$1], [$2]) +]) diff --git a/m4/size_max.m4 b/m4/size_max.m4 deleted file mode 100644 index 4fe81c7b0..000000000 --- a/m4/size_max.m4 +++ /dev/null @@ -1,59 +0,0 @@ -# size_max.m4 serial 2 -dnl Copyright (C) 2003 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([gl_SIZE_MAX], -[ - AC_CHECK_HEADERS(stdint.h) - dnl First test whether the system already has SIZE_MAX. - AC_MSG_CHECKING([for SIZE_MAX]) - result= - AC_EGREP_CPP([Found it], [ -#include <limits.h> -#if HAVE_STDINT_H -#include <stdint.h> -#endif -#ifdef SIZE_MAX -Found it -#endif -], result=yes) - if test -z "$result"; then - dnl Define it ourselves. Here we assume that the type 'size_t' is not wider - dnl than the type 'unsigned long'. - dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', - dnl which is guaranteed to work from LONG_MIN to LONG_MAX. - _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, - [#include <stddef.h>], result=?) - _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, - [#include <stddef.h>], result=?) - _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, - [#include <stddef.h>], result=?) - if test "$fits_in_uint" = 1; then - dnl Even though SIZE_MAX fits in an unsigned int, it must be of type - dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. - AC_TRY_COMPILE([#include <stddef.h> - extern size_t foo; - extern unsigned long foo; - ], [], fits_in_uint=0) - fi - if test -z "$result"; then - if test "$fits_in_uint" = 1; then - result="$res_hi$res_lo"U - else - result="$res_hi$res_lo"UL - fi - else - dnl Shouldn't happen, but who knows... - result='~(size_t)0' - fi - fi - AC_MSG_RESULT([$result]) - if test "$result" != yes; then - AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], - [Define as the maximum value of type 'size_t', if the system doesn't define it.]) - fi -]) diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4 deleted file mode 100644 index 3355f35aa..000000000 --- a/m4/stdint_h.m4 +++ /dev/null @@ -1,26 +0,0 @@ -# stdint_h.m4 serial 5 -dnl Copyright (C) 1997-2004 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 Paul Eggert. - -# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists, -# doesn't clash with <sys/types.h>, and declares uintmax_t. - -AC_DEFUN([gl_AC_HEADER_STDINT_H], -[ - AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, - [AC_TRY_COMPILE( - [#include <sys/types.h> -#include <stdint.h>], - [uintmax_t i = (uintmax_t) -1;], - gl_cv_header_stdint_h=yes, - gl_cv_header_stdint_h=no)]) - if test $gl_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, - [Define if <stdint.h> exists, doesn't clash with <sys/types.h>, - and declares uintmax_t. ]) - fi -]) diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4 deleted file mode 100644 index dee10ccc3..000000000 --- a/m4/ulonglong.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ulonglong.m4 serial 4 -dnl Copyright (C) 1999-2004 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 Paul Eggert. - -# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. - -AC_DEFUN([gl_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 = 1ULL; 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 --git a/m4/xine.m4 b/m4/xine.m4 index cb64bad1a..2842de621 100644 --- a/m4/xine.m4 +++ b/m4/xine.m4 @@ -69,11 +69,11 @@ AC_ARG_ENABLE(xinetest, XINE_LIBS=`$XINE_CONFIG $xine_config_args --libs` XINE_ACFLAGS=`$XINE_CONFIG $xine_config_args --acflags` xine_config_major_version=`$XINE_CONFIG $xine_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + sed -n 's/^\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*$/\1/p'` xine_config_minor_version=`$XINE_CONFIG $xine_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + sed -n 's/^\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*$/\2/p'` xine_config_sub_version=`$XINE_CONFIG $xine_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + sed -n 's/^\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*$/\3/p'` xine_data_dir=`$XINE_CONFIG $xine_config_args --datadir` xine_script_dir=`$XINE_CONFIG $xine_config_args --scriptdir` xine_plugin_dir=`$XINE_CONFIG $xine_config_args --plugindir` diff --git a/misc/Makefile.am b/misc/Makefile.am index a5ef28635..7f7e8db7c 100644 --- a/misc/Makefile.am +++ b/misc/Makefile.am @@ -7,18 +7,23 @@ EXTRA_DIST = build_rpms.sh \ SlackBuild.in \ SlackBuild \ vga.xinefont.gz \ + xine-config \ xine-fontconv.c \ xine-lib.spec.in \ xine-lib.spec \ libxine.pc.in \ libdvdcss-1.2.6-network.patch \ + Makefile.plugins.in \ Makefile.common bin_SCRIPTS = xine-config +bin_PROGRAMS = xine-list-@XINE_SERIES@ -pkgconfigdir=$(libdir)/pkgconfig pkgconfig_DATA=libxine.pc +xine_list_@XINE_SERIES@_SOURCES = xine-list.c +xine_list_@XINE_SERIES@_LDADD = $(XINE_LIB) + xine-fontconv: xine-fontconv.c $(CC) -W -Wall -g -o xine-fontconv xine-fontconv.c -lz `freetype-config --cflags` `freetype-config --libs` diff --git a/misc/Makefile.common b/misc/Makefile.common index d23ea5b5e..4adab1527 100644 --- a/misc/Makefile.common +++ b/misc/Makefile.common @@ -3,13 +3,13 @@ XINE_LIB = $(top_builddir)/src/xine-engine/libxine.la xineincludedir = $(includedir)/xine xineplugdir = $(XINE_PLUGINDIR) -xineplug_ldflags = $(NOUNDEF) -avoid-version -module +xineplug_ldflags = $(LDFLAGS_NOUNDEFINED) -avoid-version -module xinepostdir = $(XINE_PLUGINDIR)/post vidixdir = $(XINE_PLUGINDIR)/vidix $(XINE_LIB): - @cd $(top_srcdir)/src/xine-engine && $(MAKE) + @cd $(top_builddir)/src/xine-engine && $(MAKE) install-data-hook: @if test $$MAKELEVEL -le 4 ; then \ diff --git a/misc/Makefile.plugins.in b/misc/Makefile.plugins.in new file mode 100644 index 000000000..adee79479 --- /dev/null +++ b/misc/Makefile.plugins.in @@ -0,0 +1 @@ +DESTDIR:=$(if $(DESTDIR),$(DESTDIR),@LIBTOOL_DESTDIR_DEFAULT@) diff --git a/misc/cdda_server.c b/misc/cdda_server.c index 553ec0a8a..0e2817db3 100644 --- a/misc/cdda_server.c +++ b/misc/cdda_server.c @@ -480,6 +480,12 @@ static int process_commands( int socket ) sscanf(cmd,"%*s %d %d", &start_frame, &num_frames); + if (num_frames > INT_MAX / CD_RAW_FRAME_SIZE) + { + printf ("fatal error: integer overflow\n"); + exit (1); + } + n = num_frames * CD_RAW_FRAME_SIZE; buf = malloc( n ); if( !buf ) @@ -556,6 +562,11 @@ static int process_commands( int socket ) char *buf; sscanf(cmd,"%*s %d %d", &blocks, &flags); + if (blocks > INT_MAX / DVD_BLOCK_SIZE) + { + printf ("fatal error: integer overflow\n"); + exit (1); + } n = blocks * DVD_BLOCK_SIZE; buf = malloc( n ); diff --git a/misc/fonts/Makefile.am b/misc/fonts/Makefile.am index ae22beefa..f5b131886 100644 --- a/misc/fonts/Makefile.am +++ b/misc/fonts/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/misc/Makefile.common -fontdir = $(XINE_FONTPATH) +fontdir = $(XINE_FONTDIR) font_DATA = \ cetus-16.xinefont.gz \ cetus-20.xinefont.gz \ diff --git a/misc/libxine.pc.in b/misc/libxine.pc.in index c27e8aa94..754acc5ca 100644 --- a/misc/libxine.pc.in +++ b/misc/libxine.pc.in @@ -1,11 +1,26 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ +bindir=@bindir@ libdir=@libdir@ includedir=@includedir@ +datarootdir=@datarootdir@ +datadir=@datadir@ + +xinelibdir=@xinelibdir@ +xinedatadir=@xinedatadir@ + +acflags=@XINE_ACFLAGS@ +plugindir=@XINE_PLUGINDIR@ +scriptdir=@XINE_SCRIPTPATH@ +localedir=@XINE_LOCALEDIR@ +objcflags=@OBJCFLAGS@ + +xine_list=${bindir}/xine-list-@XINE_SERIES@ + Name: libxine Description: The xine engine library -Version: @XINE_MAJOR@.@XINE_MINOR@.@XINE_SUB@ +Version: @XINE_MAJOR@.@XINE_MINOR@.@XINE_SUB@@XINE_PATCH@ Requires: Libs: -L${libdir} -lxine Libs.private: @ZLIB_LIBS@ @NET_LIBS@ @PTHREAD_LIBS@ @LIBICONV@ @RT_LIBS@ diff --git a/misc/xine-config.in b/misc/xine-config.in index 8d288b22b..700f1169c 100644 --- a/misc/xine-config.in +++ b/misc/xine-config.in @@ -2,9 +2,15 @@ # # -prefix=@XINE_CONFIG_PREFIX@ -exec_prefix=@exec_prefix@ -exec_prefix_set=no +unset prefix +unset exec_prefix +unset args + +PKG_CONFIG_PATH="`cat <<'EOF' +@XINE_PKGCONFIG_DIR@ +EOF +`${PKG_CONFIG_PATH:+:}$PKG_CONFIG_PATH" +export PKG_CONFIG_PATH usage() { @@ -17,10 +23,12 @@ Options: [--libs] [--acflags] [--cflags] + [--bindir] [--plugindir] [--datadir] [--scriptdir] [--localedir] + [--xine-list] [--objcflags] EOF exit $1 @@ -32,53 +40,34 @@ fi while test $# -gt 0; do case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + -*=*) optarg="${1#--*=}" ;; *) optarg= ;; esac - case $1 in + case "$1" in --prefix=*) - prefix=$optarg - if test $exec_prefix_set = no ; then - exec_prefix=$optarg + prefix="$optarg" + if [ "$exec_prefix" = '' ]; then + exec_prefix="$optarg" fi ;; - --prefix) - echo_prefix=yes - ;; --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - ;; - --exec-prefix) - echo_exec_prefix=yes + exec_prefix="$optarg" ;; --version) - echo @XINE_MAJOR@.@XINE_MINOR@.@XINE_SUB@ + args="$args${args+ }--modversion" ;; - --acflags) - echo_acflags=yes + --cflags|--libs) + args="$args${args+ }$1" ;; - --cflags) - echo_cflags=yes + --prefix|--acflags|--bindir|--plugindir|--datadir|--scriptdir|--localedir|--objcflags) + args="$args${args+ }--variable=${1#--}" ;; - --libs) - echo_libs=yes + --xine-list) + args="$args${args+ }--variable=xine_list" ;; - --plugindir) - echo_plugindir=yes - ;; - --datadir) - echo_datadir=yes - ;; - --scriptdir) - echo_scriptdir=yes - ;; - --localedir) - echo_localedir=yes - ;; - --objcflags) - echo_objcflags=yes + --exec-prefix) + args="$args${args+ }--variable=exec_prefix" ;; *) usage 1 1>&2 @@ -87,37 +76,6 @@ while test $# -gt 0; do shift done -if test "$echo_prefix" = "yes"; then - echo $prefix -fi - -if test "$echo_exec_prefix" = "yes"; then - echo $exec_prefix -fi - -if test "$echo_acflags" = "yes"; then - echo "@XINE_ACFLAGS@" -fi - -if test "$echo_cflags" = "yes"; then - echo -I@includedir@ @PTHREAD_CFLAGS@ -fi - -if test "$echo_libs" = "yes"; then - echo -L@libdir@ -lxine @ZLIB_LIBS@ @NET_LIBS@ @PTHREAD_LIBS@ @LIBICONV@ @RT_LIBS@ -fi -if test "$echo_plugindir" = "yes"; then - echo "@XINE_PLUGINPATH@" -fi -if test "$echo_datadir" = "yes"; then - echo "@XINE_DATADIR@" -fi -if test "$echo_scriptdir" = "yes"; then - echo "@XINE_SCRIPTPATH@" -fi -if test "$echo_localedir" = "yes"; then - echo "@XINE_LOCALEPATH@" -fi -if test "$echo_objcflags" = "yes"; then - echo "@OBJCFLAGS@" -fi +exec pkg-config "${prefix+--define-variable=prefix=}$prefix" \ + "${exec_prefix+--define-variable=exec_prefix=}$exec_prefix" \ + $args libxine diff --git a/misc/xine-lib.spec.in b/misc/xine-lib.spec.in index 6382b9b9a..952c5e0d2 100644 --- a/misc/xine-lib.spec.in +++ b/misc/xine-lib.spec.in @@ -66,6 +66,9 @@ %if %{?BUILD_JACK:0}%{!?BUILD_JACK:1} %define BUILD_JACK 0 %endif +%if %{?BUILD_PULSE:0}%{!?BUILD_PULSE:1} +%define BUILD_PULSE 0 +%endif Name: %{name} Summary: A portable video/audio library for unix-like systems. @@ -76,8 +79,8 @@ Version: %{version} Release: %{release} License: GPL Group: Development/Libraries -URL: http://xinehq.de -Source: http://xinehq.de/files/@PACKAGE@-@VERSION@.tar.gz +URL: http://www.xine-project.org +Source: http://prdownloads.sourceforge.net/xine/@PACKAGE@-@VERSION@.tar.bz2 Packager: Manfred Tremmel <Manfred.Tremmel@iiv.de> Obsoletes: xine Obsoletes: xine-lib @@ -145,20 +148,21 @@ lisenssin kanssa yhteensopivia. lisätietoja GPL-lisenssistä löytyy osoitteest http://www.gnu.org/licenses/gpl.html %if %BUILD_DEVEL -%package devel +%package -n %{shortname}-devel Summary: Header files and documentation to develope programs with libxine. Summary(cs): HlaviÄkové soubory a dokumentace pro vývoj programů použÃvajÃcà libxine Summary(de): Headerdateien und Dokumentationen, um Programme mit libxine entwickeln zu können. Summary(fi): Header-tiedostot ja dokumentaatio, joita tarvitset kehittäessäsi ohjelmia libxine:n kanssa. -Group: Development/Libraries +Group: Development/Libraries Obsoletes: xine-lib-devel Obsoletes: xine-devel Obsoletes: libxine0-devel -Provides: %{shortname}-devel = %{version}-%{release} +Obsoletes: %{name}-devel +Provides: %{name}-devel = %{version}-%{release} Provides: xine-devel Requires: %{libname} = %{version}-%{release} -%description devel +%description -n %{shortname}-devel This package contains header files and documentation required to develope programs with libxine. @@ -173,7 +177,7 @@ Don't hesitate to use libxine in your own projects as long as your usage complies to the GPL. More information about GPL-license can be found at http://www.gnu.org/licenses/gpl.html -%description devel -l cs +%description -n %{shortname}-devel -l cs Tento balÃÄek obsahuje hlaviÄkové soubory a dokumentaci potÅ™ebnou pro vývoj programů, které použÃvajà libxine. @@ -188,7 +192,7 @@ Dokud to bude ve shodÄ› s GPL, neváhejte použÃt libxine ve vaÅ¡ich vlastnÃch projektech. VÃce informacà o GPL licenci můžete nalézt na http://www.gnu.org/licenses/gpl.html. -%description devel -l de +%description -n %{shortname}-devel -l de Dieses Paket enthält die Headerdateien und Dokumentationen, um Programme mit libxine entwickeln zu können. @@ -205,7 +209,7 @@ Zögern Sie nicht libxine in Ihren eigenen Projekten zu nutzen. Beachten Sie hierzu jedoch die in der GPL Lizenz vereinbarten Bestimmungen. Weitere Informationen zur GPL-Lizenz finden Sie unter http://www.gnu.org/licenses/gpl.html -%description devel -l fi +%description -n %{shortname}-devel -l fi libxine on xinen sydän (vapaa GPL-linsensoitu videosoitinohjelma Unix-tyylisille käyttöjärjestelmille), joka muun muassa tarjoaa mahdollisuudet pakatun videon ja äänen purkamiseen (sekä näyttämiseen) suurimmalla osalla nykyaikaista äänen- @@ -547,7 +551,6 @@ libxine Videoausgabeplugin per libstk (Set-top Toolkit) %endif %if %BUILD_DXR3 -%ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon x86_64 amd64 ia32e %package dxr3 Summary: libxine video output plugin using mpeg2 decoding cards with dxr3 decoder-chip Summary(cs): Videovýstupnà modul libxine použÃvajÃcà karty s Äipem DXR3 @@ -571,10 +574,8 @@ libxine Videoausgabeplugin, nutzt MPEG2-decoder-Karten mit dxr3 Decoder-Chip %description dxr3 -l fi libxine-Videolisdke MPEG2-videopurkukorteille, joissa on DXR3 purkusiru %endif -%endif %if %BUILD_XVMC -%ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon x86_64 amd64 ia32e %package xvmc Summary: libxine video output plugin using XVideo-extension with motion compensation Summary(cs): Videovýstupnà modul libxine použÃvajÃcà rozÅ¡ÃÅ™enà XVideo MC @@ -593,7 +594,6 @@ Videovýstupnà modul libxine, který použÃvá rozÅ¡ÃÅ™enà XVideo s kompenza %description xvmc -l de libxine Videoausgabeplugin per XVideo-Erweiterung mit Motion Compensation %endif -%endif %if %BUILD_W32DLL %ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon @@ -624,7 +624,7 @@ libxine-Purkulisdke, joka mahdollistaa Win32 DLL:n kdytvn. %if %BUILD_JACK %package jack -Summary: libxine sound output plugin for the jack sooundserver +Summary: libxine sound output plugin for the jack soundserver Summary(de): libxine Soundausgabeplugin für den jack-Soundserver Group: Development/Libraries Obsoletes: xine-lib-jack @@ -632,7 +632,7 @@ Obsoletes: libxine0-jack Requires: %{libname} = %{version}-%{release} %description jack -libxine sound output plugin for the jack sooundserver +libxine sound output plugin for the jack soundserver %description jack -l cs Zvukový výstupnà modul libxine pro zvukový server jack. @@ -641,12 +641,33 @@ Zvukový výstupnà modul libxine pro zvukový server jack. libxine Soundausgabeplugin für den jack-Soundserver %endif +%if %BUILD_PULSE +%package pulse +Summary: libxine sound output plugin for the pulseaudio soundserver +Summary(de): libxine Soundausgabeplugin für den pulseaudio-Soundserver +Group: Development/Libraries +Obsoletes: xine-lib-pulse +Obsoletes: libxine0-pulse +Requires: %{libname} = %{version}-%{release} + +%description pulse +libxine sound output plugin for the pulseaudio soundserver + +%description pulse -l cs +Zvukový výstupnà modul libxine pro zvukový server pulseaudio. + +%description pulse -l de +libxine Soundausgabeplugin für den pulseaudio-Soundserver +%endif + + %prep %setup -q -n @TAR_NAME@ %build export CFLAGS="${RPM_OPT_FLAGS}" -export XINE_DOCPATH="%{_docdir}/libxine1" +export XINE_DOCPATH="%{_docdir}/%{name}" +export PKG_CONFIG="%{_bindir}/pkg-config" if [ ! -f configure ]; then NO_CONFIGURE=1 ./autogen.sh @@ -665,286 +686,304 @@ fi --localstatedir=%{_localstatedir} \ --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \ --infodir=%{_infodir} --enable-directfb --enable-modplug \ - --with-internal-vcdlibs +%if %BUILD_STK + --with-libstk \ +%endif +%if %BUILD_ARTS + --with-arts \ +%endif + --enable-syncfb --without-internal-vcdlibs # Error in libfaad when compiling with mmx or sse enabled, remove it -mv src/libfaad/Makefile src/libfaad/Makefile_save -cat src/libfaad/Makefile_save | sed -e "s/-mmmx/-mno-mmx/g" -e "s/-msse/-mno-sse/g" > src/libfaad/Makefile +%{__mv} src/libfaad/Makefile src/libfaad/Makefile_save +%{__cat} src/libfaad/Makefile_save | %{__sed} -e "s/-mmmx/-mno-mmx/g" -e "s/-msse/-mno-sse/g" > src/libfaad/Makefile # another problem with libavcodec -mv src/libffmpeg/libavcodec/i386/Makefile src/libffmpeg/libavcodec/i386/Makefile_save -cat src/libffmpeg/libavcodec/i386/Makefile_save | sed -e "s/-O3/-Os/g" -e "s/-O2/-Os/g" > src/libffmpeg/libavcodec/i386/Makefile +%{__mv} src/libffmpeg/libavcodec/i386/Makefile src/libffmpeg/libavcodec/i386/Makefile_save +%{__cat} src/libffmpeg/libavcodec/i386/Makefile_save | %{__sed} -e "s/-O3/-Os/g" -e "s/-O2/-Os/g" > src/libffmpeg/libavcodec/i386/Makefile -make +%{__make} %{?jobs:-j%{jobs}} %install -rm -rf $RPM_BUILD_ROOT +[ "${RPM_BUILD_ROOT}" != "/" ] && %{__rm} -rf ${RPM_BUILD_ROOT} make DESTDIR=%{?buildroot:%{buildroot}} LIBRARY_PATH=%{?buildroot:%{buildroot}}%{_libdir} install cd ${RPM_BUILD_ROOT} -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_zw +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_zw %if %BUILD_DEVEL -echo "%doc README TODO AUTHORS COPYING ChangeLog" >> ${RPM_BUILD_DIR}/filelist_libxine1_zw +echo "%doc README TODO AUTHORS COPYING ChangeLog" >> ${RPM_BUILD_DIR}/filelist_%{name}_zw %else -echo "%doc README TODO AUTHORS COPYING ChangeLog doc/hackersguide/*.sgml doc/hackersguide/*.fig doc/hackersguide/README" >> ${RPM_BUILD_DIR}/filelist_libxine1_zw +echo "%doc README TODO AUTHORS COPYING ChangeLog doc/hackersguide/*.sgml doc/hackersguide/*.fig doc/hackersguide/README" >> ${RPM_BUILD_DIR}/filelist_%{name}_zw %endif -find . -type f | sed 's,^\.%{_datadir}/doc,\%doc %{_datadir}/doc,' | sed 's,^\.,,' >> ${RPM_BUILD_DIR}/filelist_libxine1_zw -find . -type l | sed 's,^\.%{_datadir}/doc,\%doc %{_datadir}/doc,' | sed 's,^\.,,' >> ${RPM_BUILD_DIR}/filelist_libxine1_zw -find . -type d | grep xine | sed 's,^\.,\%dir ,' >> ${RPM_BUILD_DIR}/filelist_libxine1_zw -grep -v "/man/" ${RPM_BUILD_DIR}/filelist_libxine1_zw | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -grep "/man/" ${RPM_BUILD_DIR}/filelist_libxine1_zw | sed -e 's/$/\*/g' | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_zw +find . -type f | %{__sed} 's,^\.%{_datadir}/doc,\%doc %{_datadir}/doc,' | %{__sed} 's,^\.,,' >> ${RPM_BUILD_DIR}/filelist_%{name}_zw +find . -type l | %{__sed} 's,^\.%{_datadir}/doc,\%doc %{_datadir}/doc,' | %{__sed} 's,^\.,,' >> ${RPM_BUILD_DIR}/filelist_%{name}_zw +find . -type d | %{__grep} xine | %{__sed} 's,^\.,\%dir ,' >> ${RPM_BUILD_DIR}/filelist_%{name}_zw +%{__grep} -v "/man/" ${RPM_BUILD_DIR}/filelist_%{name}_zw | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__grep} "/man/" ${RPM_BUILD_DIR}/filelist_%{name}_zw | %{__sed} -e 's/$/\*/g' | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_zw %if %BUILD_DEVEL -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_devel -echo "%doc doc/hackersguide/*.sgml doc/hackersguide/*.fig doc/hackersguide/README" >> ${RPM_BUILD_DIR}/filelist_libxine1_devel -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "/include/|dhahelper\.o|libxine*\.(so|la)$|\.m4$" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_devel -grep -v -E "/include/|dhahelper\.o|libxine*\.(so|la)$|\.m4$" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_devel +echo "%doc doc/hackersguide/*.sgml doc/hackersguide/*.fig doc/hackersguide/README" >> ${RPM_BUILD_DIR}/filelist_%{name}_devel +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "/include/|dhahelper\.o|libxine*\.(so|la)$|\.m4$" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_devel +%{__grep} -v -E "/include/|dhahelper\.o|libxine*\.(so|la)$|\.m4$" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_ALSA -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_alsa -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_ao_out_alsa\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_alsa -grep -v "xineplug_ao_out_alsa\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_alsa +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_ao_out_alsa\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_alsa +%{__grep} -v "xineplug_ao_out_alsa\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_ARTS -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_arts -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_ao_out_arts\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_arts -grep -v "xineplug_ao_out_arts\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_arts +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_ao_out_arts\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_arts +%{__grep} -v "xineplug_ao_out_arts\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_ESD -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_esd -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_ao_out_esd\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_esd -grep -v "xineplug_ao_out_esd\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_esd +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_ao_out_esd\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_esd +%{__grep} -v "xineplug_ao_out_esd\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_DXR3 -%ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon x86_64 amd64 ia32e -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_dxr3 -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "dxr3" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_dxr3 -grep -v "dxr3" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old -%endif +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_dxr3 +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "dxr3" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_dxr3 +%{__grep} -v "dxr3" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_SDL -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_sdl -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_vo_out_sdl\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_sdl -grep -v "xineplug_vo_out_sdl\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_sdl +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_vo_out_sdl\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_sdl +%{__grep} -v "xineplug_vo_out_sdl\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_AA -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_aa -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_vo_out_aa\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_aa -grep -v "xineplug_vo_out_aa\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_aa +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_vo_out_aa\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_aa +%{__grep} -v "xineplug_vo_out_aa\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_OPENGL -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_opengl -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_vo_out_opengl\.|README.opengl" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_opengl -grep -v -E "xineplug_vo_out_opengl\.|README.opengl" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_opengl +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_vo_out_opengl\.|README.opengl" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_opengl +%{__grep} -v -E "xineplug_vo_out_opengl\.|README.opengl" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_SYNCFB -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_syncfb -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_vo_out_syncfb\.|README\.syncfb" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_syncfb -grep -v -E "xineplug_vo_out_syncfb\.|README\.syncfb" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_syncfb +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_vo_out_syncfb\.|README\.syncfb" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_syncfb +%{__grep} -v -E "xineplug_vo_out_syncfb\.|README\.syncfb" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_DIRECTFB -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_directfb -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_vo_out_directfb\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_directfb -grep -v -E "xineplug_vo_out_directfb\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_directfb +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_vo_out_(xd|d)irectfb\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_directfb +%{__grep} -v -E "xineplug_vo_out_(xd|d)irectfb\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_STK -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_stk -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_vo_out_stk\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_stk -grep -v -E "xineplug_vo_out_stk\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_stk +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_vo_out_stk\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_stk +%{__grep} -v -E "xineplug_vo_out_stk\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_XVMC -%ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon x86_64 amd64 ia32e -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_xvmc -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_vo_out_x[x|v]mc\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_xvmc -grep -v "xineplug_vo_out_x[x|v]mc\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old -%endif +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_xvmc +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_vo_out_x[x|v]mc\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_xvmc +%{__grep} -v "xineplug_vo_out_x[x|v]mc\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_W32DLL %ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_w32dll -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_decode_qt\.|xineplug_decode_w32dll\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_w32dll -grep -v -E "xineplug_decode_qt\.|xineplug_decode_w32dll\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_w32dll +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_decode_qt\.|xineplug_decode_w32dll\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_w32dll +%{__grep} -v -E "xineplug_decode_qt\.|xineplug_decode_w32dll\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %endif %if %BUILD_DVB -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_dvb -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_inp_dvb\.|README\.dvb" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_dvb -grep -v -E "xineplug_inp_dvb\.|README\.dvb" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_dvb +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_inp_dvb\.|README\.dvb" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_dvb +%{__grep} -v -E "xineplug_inp_dvb\.|README\.dvb" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_DVD -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_dvd -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_inp_dvd\.|README\.network_dvd" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_dvd -grep -v -E "xineplug_inp_dvd\.|README\.network_dvd" ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_dvd +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_inp_dvd\.|README\.network_dvd" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_dvd +%{__grep} -v -E "xineplug_inp_dvd\.|README\.network_dvd" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_GNOME_VFS -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_gnome_vfs -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_inp_gnome_vfs\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_gnome_vfs -grep -v "xineplug_inp_gnome_vfs\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_gnome_vfs +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_inp_gnome_vfs\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_gnome_vfs +%{__grep} -v "xineplug_inp_gnome_vfs\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_FLAC -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_flac -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_flac\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_flac -grep -v "xineplug_flac\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_flac +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_flac\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_flac +%{__grep} -v "xineplug_flac\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_OGG -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_ogg -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep -E "xineplug_decode_vorbis\.|xineplug_dmx_ogg\.|xineplug_decode_theora\.|xineplug_decode_speex\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_ogg -grep -v -E "xineplug_decode_vorbis\.|xineplug_dmx_ogg\.|xineplug_decode_theora\.|xineplug_decode_speex\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_ogg +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} -E "xineplug_decode_vorbis\.|xineplug_dmx_ogg\.|xineplug_decode_theora\.|xineplug_decode_speex\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_ogg +%{__grep} -v -E "xineplug_decode_vorbis\.|xineplug_dmx_ogg\.|xineplug_decode_theora\.|xineplug_decode_speex\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %if %BUILD_JACK -echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine1_jack -mv ${RPM_BUILD_DIR}/filelist_libxine1 ${RPM_BUILD_DIR}/filelist_libxine1_old -grep "xineplug_ao_out_jack\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine1_jack -grep -v "xineplug_ao_out_jack\." ${RPM_BUILD_DIR}/filelist_libxine1_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine1 -rm ${RPM_BUILD_DIR}/filelist_libxine1_old +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_jack +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_ao_out_jack\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_jack +%{__grep} -v "xineplug_ao_out_jack\." ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old +%endif +%if %BUILD_PULSE +echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_%{name}_pulse +%{__mv} ${RPM_BUILD_DIR}/filelist_%{name} ${RPM_BUILD_DIR}/filelist_%{name}_old +%{__grep} "xineplug_ao_out_pulse" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - >> ${RPM_BUILD_DIR}/filelist_%{name}_pulse +%{__grep} -v "xineplug_ao_out_pulse" ${RPM_BUILD_DIR}/filelist_%{name}_old | %{__cat} - > ${RPM_BUILD_DIR}/filelist_%{name} +%{__rm} ${RPM_BUILD_DIR}/filelist_%{name}_old %endif %clean -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT +[ "${RPM_BUILD_ROOT}" != "/" ] && %{__rm} -rf ${RPM_BUILD_ROOT} %post -p /sbin/ldconfig %postun -p /sbin/ldconfig -%files -f ../filelist_libxine1 +%files -f ../filelist_%{name} %if %BUILD_DEVEL -%files devel -f ../filelist_libxine1_devel +%files -n %{shortname}-devel -f ../filelist_%{name}_devel %endif %if %BUILD_ALSA -%files alsa -f ../filelist_libxine1_alsa +%files alsa -f ../filelist_%{name}_alsa %endif %if %BUILD_ARTS -%files arts -f ../filelist_libxine1_arts +%files arts -f ../filelist_%{name}_arts %endif %if %BUILD_ESD -%files esd -f ../filelist_libxine1_esd +%files esd -f ../filelist_%{name}_esd %endif %if %BUILD_DXR3 -%ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon x86_64 amd64 ia32e -%files dxr3 -f ../filelist_libxine1_dxr3 -%endif +%files dxr3 -f ../filelist_%{name}_dxr3 %endif %if %BUILD_SDL -%files sdl -f ../filelist_libxine1_sdl +%files sdl -f ../filelist_%{name}_sdl %endif %if %BUILD_AA -%files aa -f ../filelist_libxine1_aa +%files aa -f ../filelist_%{name}_aa %endif %if %BUILD_OPENGL -%files opengl -f ../filelist_libxine1_opengl +%files opengl -f ../filelist_%{name}_opengl %endif %if %BUILD_SYNCFB -%files syncfb -f ../filelist_libxine1_syncfb +%files syncfb -f ../filelist_%{name}_syncfb %endif %if %BUILD_DIRECTFB -%files directfb -f ../filelist_libxine1_directfb +%files directfb -f ../filelist_%{name}_directfb %endif %if %BUILD_STK -%files stk -f ../filelist_libxine1_stk +%files stk -f ../filelist_%{name}_stk %endif %if %BUILD_XVMC -%ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon x86_64 amd64 ia32e -%files xvmc -f ../filelist_libxine1_xvmc -%endif +%files xvmc -f ../filelist_%{name}_xvmc %endif %if %BUILD_W32DLL %ifarch i386 i486 i586 i686 i786 i868 i986 k6 k7 athlon -%files w32dll -f ../filelist_libxine1_w32dll +%files w32dll -f ../filelist_%{name}_w32dll %endif %endif %if %BUILD_DVB -%files dvb -f ../filelist_libxine1_dvb +%files dvb -f ../filelist_%{name}_dvb %endif %if %BUILD_DVD -%files dvd -f ../filelist_libxine1_dvd +%files dvd -f ../filelist_%{name}_dvd %endif %if %BUILD_GNOME_VFS -%files gnome-vfs -f ../filelist_libxine1_gnome_vfs +%files gnome-vfs -f ../filelist_%{name}_gnome_vfs %endif %if %BUILD_FLAC -%files flac -f ../filelist_libxine1_flac +%files flac -f ../filelist_%{name}_flac %endif %if %BUILD_OGG -%files ogg -f ../filelist_libxine1_ogg +%files ogg -f ../filelist_%{name}_ogg %endif %if %BUILD_JACK -%files jack -f ../filelist_libxine1_jack +%files jack -f ../filelist_%{name}_jack +%endif + +%if %BUILD_PULSE +%files pulse -f ../filelist_%{name}_pulse %endif %changelog +* Sun Dec 09 2007 Manfred Tremmel <Manfred.Tremmel@iiv.de> +- stk and arts plugins are no longer build by default, enable + them, when subpackages are selected +- added optional subpackage for pulseaudio +- switched to external vcdlibs +- using macros for shell commands, when rpm provides them +- some other cleanups +* Sun Oct 15 2006 Manfred Tremmel <Manfred.Tremmel@iiv.de> +- some little changes to enable caca plugin * Sat Aug 26 2006 FrantiÅ¡ek Dvořák <valtri@users.sourceforge.net> - tiny translation update - fixed rpmbuild diff --git a/misc/xine-list.c b/misc/xine-list.c new file mode 100644 index 000000000..ec7b7f694 --- /dev/null +++ b/misc/xine-list.c @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2008 the xine-project + * + * 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 <xine.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <getopt.h> + +#define XINE_LIST_VERSION_N(x,y) #x"."#y +#define XINE_LIST_VERSION XINE_LIST_VERSION_N(XINE_MAJOR_VERSION,XINE_MINOR_VERSION) + +int main (int argc, char *argv[]) +{ + int optstate = 0; + int which = 'm'; + int lf = 0; + + for (;;) + { +#define OPTS "hvaemp" +#ifdef HAVE_GETOPT_LONG + static const struct option longopts[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, 'v' }, + { "mime-types", no_argument, NULL, 'm' }, + { "extensions", no_argument, NULL, 'e' }, + { "all", no_argument, NULL, 'a' }, + { NULL } + }; + int index = 0; + int opt = getopt_long (argc, argv, OPTS, longopts, &index); +#else + int opt = getopt(argc, argv, OPTS); +#endif + if (opt == -1) + break; + + switch (opt) + { + case 'h': + optstate |= 1; + break; + case 'v': + optstate |= 4; + break; + case 'a': + case 'e': + case 'm': + which = opt; + break; + case 'p': + lf = 1; + break; + default: + optstate |= 2; + break; + } + } + + if (optstate & 1) + printf ("\ +xine-list-"XINE_LIST_VERSION" %s\n\ +using xine-lib %s\n\ +usage: %s [options]\n\ +options:\n\ + -h, --help this help text\n\ + -m, --mime-types list just the supported MIME types\n\ + -e, --extensions list just the recognised filename extensions\n\ + -a, --all list everything\n\ + -p, --pretty-print add line feeds\n\ +\n", XINE_VERSION, xine_get_version_string (), argv[0]); + else if (optstate & 4) + printf ("\ +xine-list %s\n\ +using xine-lib %s\n\ +(c) 2008 the xine project team\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n\ +to the extent permitted by law.\n", + XINE_VERSION, xine_get_version_string ()); + + if (optstate & 2) + { + fputs ("xine-list: invalid option (try -h or --help)\n", stderr); + return 1; + } + + if (optstate) + return 0; + + xine_t *xine = xine_new (); + xine_init (xine); + + char *text = NULL; + char *sep, *sep2; + switch (which) + { + case 'a': + case 'm': + text = xine_get_mime_types (xine); + if (!text || !*text) + goto read_fail; + sep = sep2 = text - 1; + for (;;) + { + text = sep + 1; + sep = strchr (text, ';') ? : text + strlen (text); + sep2 = which == 'a' ? sep : strchr (text, ':') ? : sep; + if (!*sep) + break; + if (printf ("%.*s;", (int)(sep2 - text), text) < 0 || (lf && puts ("") < 0)) + goto write_fail; + } + break; + + case 'e': + text = xine_get_file_extensions (xine); + if (!text || !*text) + goto read_fail; + sep = text - 1; + do + { + text = sep + 1; + sep = strchr (text, ' ') ? : text + strlen (text); + if (sep[-1] != '/' && + printf ("%.*s%s", (int)(sep - text), text, lf ? "\n" : *sep ? " " : "") < 0) + goto write_fail; + } while (*sep); + break; + } + + return 0; + + read_fail: + fputs ("xine-list: failed to read types info\n", stderr); + return 1; + + write_fail: + perror ("xine-list"); + return 1; +} diff --git a/po/LINGUAS b/po/LINGUAS index 8a29b895c..d6f194aea 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,5 +1,8 @@ cs de +# en_GB not needed +en_US +eo es eu fr diff --git a/po/Makefile.format b/po/Makefile.format deleted file mode 100644 index dfbdf1ec1..000000000 --- a/po/Makefile.format +++ /dev/null @@ -1,21 +0,0 @@ -# Source: -# grep 'attribute.*format.*printf' src include -rI -B3 -C3 - -# Internal usage -XGETTEXT_FORMAT_FLAGS_PRIVATE = \ - --flag=xine_log_msg:1:c-format \ - --flag=xine_log_err:1:c-format \ - --flag=set_hc_result:3:c-format \ - --flag=log_printf:1:c-format \ - --flag=error_message:1:c-format \ - --flag=error_callback:5:c-format \ - --flag=dbgprintf:1:c-format \ - --flag=dbg_printf:1:c-format \ - --flag=sock_string_write:3:c-format \ - --flag=broadcaster_string_write:3:c-format \ - --flag=scratch_printf:3:c-format - -# External usage (installed include files) -XGETTEXT_FORMAT_FLAGS = \ - --flag=xine_log:3:c-format \ - --flag=xine_vlog:3:c-format diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 2b9a10dc5..5022b8b18 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -1,5 +1,5 @@ # Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper <drepper@gnu.ai.mit.edu> # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public @@ -8,12 +8,9 @@ # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # -# Origin: gettext-0.14.4 - -include @srcdir@/Makefile.format +# Origin: gettext-0.16 PACKAGE = @PACKAGE@ -LIBNAME = @LIBNAME@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -27,21 +24,37 @@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ -ifeq ($(datarootdir),\@datarootdir\@) -datarootdir = @datadir@ -endif datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datarootdir)/gettext/po +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit @@ -52,7 +65,7 @@ POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in remove-potcdate.sin Makefile.format \ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ @@ -123,7 +136,6 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - $(XGETTEXT_FORMAT_FLAGS) $(XGETTEXT_FORMAT_FLAGS_PRIVATE) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ @@ -166,7 +178,7 @@ install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ @@ -179,13 +191,13 @@ install-data: install-data-@USE_NLS@ fi install-data-no: all install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) + $(mkdir_p) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ @@ -225,19 +237,19 @@ installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) + $(mkdir_p) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ @@ -382,11 +394,7 @@ update-gmo: Makefile $(GMOFILES) Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -debug: -install-debug: + && $(SHELL) ./config.status $(subdir)/$@.in po-directories force: diff --git a/po/Makevars b/po/Makevars index b51ea1918..25b1c7332 100644 --- a/po/Makevars +++ b/po/Makevars @@ -1,5 +1,9 @@ # Makefile variables for PO directory in any package using GNU gettext. +include Makevars.extra + +DISTFILES += Makevars.extra.in + # Usually the message domain is the same as the package name. DOMAIN = $(LIBNAME) @@ -7,8 +11,31 @@ DOMAIN = $(LIBNAME) subdir = po top_builddir = .. +# Internal usage +XGETTEXT_FORMAT_FLAGS_PRIVATE = \ + --flag=xine_log_msg:1:c-format \ + --flag=xine_log_err:1:c-format \ + --flag=xprintf:3:c-format \ + --flag=xine_printf:3:c-format \ + --flag=set_hc_result:3:c-format \ + --flag=log_printf:1:c-format \ + --flag=error_message:1:c-format \ + --flag=error_callback:5:c-format \ + --flag=dbgprintf:1:c-format \ + --flag=dbg_printf:1:c-format \ + --flag=sock_string_write:3:c-format \ + --flag=broadcaster_string_write:3:c-format \ + --flag=scratch_printf:3:c-format + +# External usage (installed include files) +XGETTEXT_FORMAT_FLAGS = \ + --flag=xine_log:3:c-format \ + --flag=xine_vlog:3:c-format + # These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=UTF-8 +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=UTF-8 \ + $(XGETTEXT_FORMAT_FLAGS_PRIVATE) \ + $(XGETTEXT_FORMAT_FLAGS) # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding @@ -40,3 +67,6 @@ MSGID_BUGS_ADDRESS = xine-devel@lists.sourceforge.net # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = +debug: +install-debug: + diff --git a/po/Makevars.extra.in b/po/Makevars.extra.in new file mode 100644 index 000000000..6a0d10ba6 --- /dev/null +++ b/po/Makevars.extra.in @@ -0,0 +1,4 @@ +# Extra file just to get LIBNAME correctly. +# Unfortunate but it's the only way to avoid changing po/Makefile.in.in + +LIBNAME = @LIBNAME@ diff --git a/po/POTFILES.in b/po/POTFILES.in index 2fb531266..228cf540d 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -15,6 +15,10 @@ src/audio_out/audio_none_out.c src/audio_out/audio_oss_out.c src/audio_out/audio_pulse_out.c src/audio_out/audio_sun_out.c +src/combined/ffmpeg/ff_audio_decoder.c +src/combined/ffmpeg/ff_dvaudio_decoder.c +src/combined/ffmpeg/ff_video_decoder.c +src/combined/ffmpeg/ffmpeg_encoder.c src/demuxers/demux_asf.c src/demuxers/demux_avi.c src/demuxers/demux_film.c @@ -64,10 +68,6 @@ src/input/vcd/xineplug_inp_vcd.c src/liba52/xine_a52_decoder.c src/libdts/xine_dts_decoder.c src/libfaad/xine_faad_decoder.c -src/libffmpeg/ff_audio_decoder.c -src/libffmpeg/ff_dvaudio_decoder.c -src/libffmpeg/ff_video_decoder.c -src/libffmpeg/ffmpeg_encoder.c src/libmusepack/requant.c src/libmusepack/synth_filter.c src/libmusepack/xine_musepack_decoder.c @@ -119,6 +119,7 @@ src/video_out/video_out_xvmc.c src/video_out/video_out_xxmc.c src/video_out/x11osd.c src/video_out/xcbosd.c +src/video_out/xv_common.h src/xine-engine/alphablend.c src/xine-engine/audio_decoder.c src/xine-engine/audio_out.c @@ -1,14 +1,14 @@ # Czech translate, xine-lib.po. -# Copyright (C) 2002-2005 Free Software Foundation, Inc. -# Frantisek Dvorak <valtri@atlas.cz>, 2002. +# Copyright (C) 2002-2008 Free Software Foundation, Inc. +# Frantisek Dvorak <valtri@civ.zcu.cz>, 2002-2008. # msgid "" msgstr "" "Project-Id-Version: xine-lib 1.0.1\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" -"PO-Revision-Date: 2005-12-11 20:47+0100\n" -"Last-Translator: FrantiÅ¡ek Dvořák <valtri@atlas.cz>\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" +"PO-Revision-Date: 2008-11-10 16:33+0200\n" +"Last-Translator: FrantiÅ¡ek Dvořák <valtri@civ.zcu.cz>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,9 +17,8 @@ msgstr "" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: lib/hstrerror.c:17 -#, fuzzy msgid "No error" -msgstr "neznámá chyba" +msgstr "Žádná chyba" # standarnà hláška hstrerror #: lib/hstrerror.c:18 @@ -42,9 +41,8 @@ msgid "Host name lookup failure" msgstr "Zjišťovánà jména selhalo" #: lib/hstrerror.c:22 -#, fuzzy msgid "Unknown error" -msgstr "neznámá chyba" +msgstr "Neznámá chyba" #: src/audio_out/audio_alsa_out.c:350 #, c-format @@ -57,6 +55,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() na %s selhalo: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" "audio_alsa_out: >>> zkontrolujte, jestli už jiný program nepoužÃvá PCM <<<\n" @@ -173,11 +172,13 @@ msgstr "snd_cm_open() selhalo:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Zkontrolujte, jestli už jiný program nepoužÃvá PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "uspořádánà reproduktorů" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -214,7 +215,7 @@ msgstr "" "Mono 1.0: Máte pouze jeden reproduktor.\n" "Stereo 2.0: Máte dva reproduktory na levý a pravý kanál.\n" "Headphones 2.0: PoužÃváte sluchátka.\n" -"Stereo 2.1: Máte dva reproduktory na levý a pravý kanál a jeden sobwoofer na " +"Stereo 2.1: Máte dva reproduktory na levý a pravý kanál a jeden subwoofer na " "nÃzké frekvence.\n" "Surround 3.0: Máte tÅ™i reproduktory na levý, pravý a zadnà kanál.\n" "Surround 4.0: Máte ÄtyÅ™i reproduktory na pÅ™ednà levý a pravý kanál a na " @@ -237,86 +238,86 @@ msgstr "" "surround dekodér schopný dekódovat formáty, které chcete pÅ™ehrát." #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : podporované režimy jsou " - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8bitový" +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : podporované režimy jsou" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16bitový" +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bitový" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24bitový" +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16bitový" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32bitový" +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24bitový" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono" +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32bitový" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "stereo" +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4kanálový" +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " stereo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4kanálový nenà povolen v konfiguraci xine)" +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4kanálový" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1kanálový" +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4kanálový nenà povolen v konfiguraci xine)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1kanálový nenà povolen v konfiguraci xine)" +msgid " 4.1-channel" +msgstr " 4.1kanálový" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5kanálový" +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1kanálový nenà povolen v konfiguraci xine)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5kanálový nenà povolen v kondifuraci xine)" +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5kanálový" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1kanálový" +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5kanálový nenà povolen v konfifuraci xine)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1kanálový nenà povolen v konfiguraci xine)" +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1kanálový" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "a/52 a DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1kanálový nenà povolen v konfiguraci xine)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(a/52 a DTS pass-through nejsou povoleny v konfiguraci xine)\n" +msgid " a/52 and DTS pass-through" +msgstr " a/52 a DTS pass-through" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (a/52 a DTS pass-through nejsou povoleny v konfiguraci xine)" + +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "mixovacà zaÅ™Ãzenà alsa" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." msgstr "" "ke zmÄ›nÄ› hlasitosti použije xine toto zaÅ™Ãzenà mixeru ALSA.\n" -"Informace o zaÅ™ÃzenÃch ALSA nalzeznete v dokumentaci k ALSA." +"Informace o zaÅ™ÃzenÃch ALSA naleznete v dokumentaci k ALSA." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "výstupnà zvukový modul xine použije zvuková zaÅ™ÃzenÃ/ovladaÄe alsa" @@ -328,205 +329,188 @@ msgstr "modul zvukového výstupu xine použije artsd" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "modul zvukového výstupu xine pro Coreaudio/Mac OS X" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "Chyba" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "úspÄ›ch" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "pÅ™Ãstup odepÅ™en" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "zdroj je již použÃván" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "objekt již byl inicializován" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "uvedený wave formát nenà podporován" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "paměťový buffer byl ztracen a musà být obnoven" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "požadované Å™Ãzenà bufferu nenà k dispozici" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" -msgstr "neurÄená chyba uvnitÅ™ sybsystéme DirectSound" +msgstr "neurÄená chyba uvnitÅ™ subsystému DirectSound" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "hardwarové zaÅ™Ãzenà DirectSound nenà k dispozici" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "pro stávajÃcà stav objektu nenà funkce platná" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "byl pÅ™edán neplatný parametr" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "objekt nepodporuje agregaci" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "nenà k dispozici žádný zvukový ovladaÄ k použitÃ" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "požadované COM rozhranà nenà k dispozici" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "jiná aplikace má vyššà úroveň priority" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "nedostatek pamÄ›ti" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "pro tuto funkci nÃzká úroveň priority" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "DirectSound nebyl inicializován" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "funkce nenà podporována" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "neznámá chyba" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "NepodaÅ™ilo se vytvoÅ™it objekt direct sound." -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." -msgstr "Nelze nastavit cooperativnà úroveň direct sound." +msgstr "Nelze nastavit kooperativnà úroveň direct sound." -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "NepodaÅ™ilo se vytvoÅ™it sekundárnà buffer direct sound" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "NepodaÅ™ilo se vytvoÅ™it poziÄnà události bufferu." - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "NepodaÅ™ilo se zÃskat rozhranà na upozorňovánà (notification interface)" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "NepodaÅ™ilo se nastavit pozice upozorňovánÃ" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "Nelze pÅ™ehrát zvukový buffer" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "Nelze zastavit zvukový buffer" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "Nelze zÃskat pozici bufferu" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "Nelze nastavit pozici bufferu" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "Nelze nastavit hlasitost zvuku" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": buffer ztracen, zkusà se obnovit\n" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "NeÅ¡lo zamknou buffer direct sound" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "NeÅ¡lo odemknout buffer direct sound" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "NepodaÅ™ilo se vytvoÅ™it primárnà buffer direct sound." -#: src/audio_out/audio_directx2_out.c:632 -#, c-format -msgid ": play cursor overran, flushing buffers\n" -msgstr ": kurzor pÅ™ehrávánà pÅ™ebÄ›hl, resetovánà bufferů\n" - -#: src/audio_out/audio_directx2_out.c:650 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": delayed by %ld msec\n" -msgstr ": zpoždÄ›no o %ld ms\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" +msgstr "" +": kurzor pÅ™ehrávánà se pÅ™edbÄ›hl (data %u, min %u), resetovánà bufferů\n" -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": nelze vytvoÅ™it pthread condition: %s\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": nelze vytvoÅ™it pthread mutex: %s\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": nelze vytvoÅ™it vlákno bufferu: %s\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": nelze zlikvidovat vlákno bufferu: %s\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ": nelze zlikvidovat pthread condition: %s\n" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": nelze zlikvidovat pthread mutex: %s\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr ": neznámý Å™Ãdicà pÅ™Ãkaz: %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "druhý modul zvukového výstupu xine použÃvajÃcà DirectX" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "modul zvukového výstupu xine pro win32 použÃvajÃcà directx" @@ -536,6 +520,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: pÅ™ipojuje se k serveru ESD %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: pÅ™ipojuje se k serveru ESD...\n" @@ -548,7 +533,7 @@ msgstr "audio_esd_out: nelze se pÅ™ipojit k ESD serveru %s: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "zpoždÄ›nà zvukového výstupu esd (upravà synchronizaci zvuku a videa)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -568,7 +553,7 @@ msgstr "modul zvukového výstupu xine do souboru" #: src/audio_out/audio_irixal_out.c:385 msgid "irixal audio output maximum gap length" -msgstr "maximálnà mezera zvukového výstupu irixalu" +msgstr "maximálnà mezera zvukového výstupu irix" #: src/audio_out/audio_irixal_out.c:386 msgid "" @@ -585,10 +570,21 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "zvukový výstupnà modul xine použije IRIX libaudio" -#: src/audio_out/audio_jack_out.c:406 -#, fuzzy +#: src/audio_out/audio_jack_out.c:743 +msgid "JACK audio device name" +msgstr "jméno zvukového zaÅ™Ãzenà JACK" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" +"Specifikuje jméno zvukového zaÅ™Ãzenà jack, na výchozà fyzické ponechte " +"prázdné" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" -msgstr "modul zvukového výstupu xine pro Coreaudio/Mac OS X" +msgstr "modul zvukového výstupu xine pro JACK Audio Connection Kit" #: src/audio_out/audio_none_out.c:223 msgid "xine dummy audio output plugin" @@ -613,26 +609,26 @@ msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" "audio_oss_out: rychlost zvuku : %d požadováno, %d poskytnuto zaÅ™ÃzenÃm\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "jméno zvukového zaÅ™Ãzenà OSS" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -"Specifikujte bázovou Äást jména zvukového zaÅ™ÃzenÃ, ke kterému se pÅ™idá " +"Specifikuje základnà Äást jména zvukového zaÅ™ÃzenÃ, ke kterému se pÅ™idá " "ÄÃslo OSS zaÅ™ÃzenÃ, aby se zÃskalo celé jméno zaÅ™ÃzenÃ.\n" "Vyberte \"auto\", jestliže chcete, aby xine automaticky zjistilo správné " "nastavenÃ." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "ÄÃslo zvukového zaÅ™Ãzenà OSS, -1 pro žádné ÄÃslo" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -648,21 +644,23 @@ msgstr "" "Rozsah této hodnoty je -1 nebo 0-15. Toto nastavenà je ignorováno, pokud je " "jméno zvukového zaÅ™Ãzenà nastaveno na \"auto\"." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "" "audio_oss_out: audio.device.oss_device_name = auto, zkoušà se zaÅ™ÃzenÃ\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: automatická zkouÅ¡ka zvukového zaÅ™Ãzenà selhala\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: použije se zaÅ™Ãzenà >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -671,11 +669,11 @@ msgstr "" "audio_oss_out: otevÃránà zvukového zaÅ™Ãzenà %s selhalo:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "metoda synchronizace zvuku a videa použitá OSS" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -721,7 +719,7 @@ msgstr "" "\n" "getoptr\n" "k dosaženà vÄ›rné synchronizace zvuku a videa použÃvá ioctl " -"SNDCTL_SDP_GETOPTR dokonce, když ovladaÄ podporuje preferované ioctl " +"SNDCTL_DSP_GETOPTR dokonce, když ovladaÄ podporuje preferované ioctl " "SNDCTL_DSP_GETODELAY\n" "\n" "softsync\n" @@ -735,7 +733,8 @@ msgstr "" "váš systém nepodporuje žádné ioctl reálného Äasu a zjistÃte, že je po " "dlouhém pÅ™ehrávánà špatná synchronizace" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -746,32 +745,38 @@ msgstr "" "reálného Äasu\n" " audio_oss_out: ...mohou zde být problémy se synchronizacà zvuku a videa\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "zpoždÄ›nà zvukového výstupu OSS (upravà synchronizaci zvuku a videa)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: synchronizace reálného Äasu zvukového zaÅ™Ãzenà zakázána...\n" -" audio_oss_out: ...zkoušà se velikost výstupnà vyrovnávacà pamÄ›ti: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d bytů\n" +"audio_oss_out: synchronizace reálného Äasu zvukového zaÅ™Ãzenà zakázána...\n" +"audio_oss_out: ...zkoušà se velikost výstupnà vyrovnávacà pamÄ›ti: %d bytů\n" "audio_oss_out: ...mohou zde být problémy se synchronizacà zvuku a videa\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: podporované režimy jsou" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr " a/52 pass-through" + +#: src/audio_out/audio_oss_out.c:1012 +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (a/52 pass-through nenà povoleno v konfiguraci xine)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "ÄÃslo zvukového mixeru OSS, -1 pro žádné" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -787,28 +792,26 @@ msgstr "" "Rozsah této hodnoty je -1 nebo 0-15. Toto nastavenà je ignorováno, pokud je " "jméno zvukového zaÅ™Ãzenà OSS nastaveno na \"auto\"." -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: open() mixer %s selhalo: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "výstupnà zvukový modul xine použije zvuková zaÅ™ÃzenÃ/ovladaÄe OSS" -#: src/audio_out/audio_pulse_out.c:548 -#, fuzzy +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" -msgstr "zaÅ™Ãzenà použité pro zvukové CD" +msgstr "zaÅ™Ãzenà použité pro pulseaudio" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." -msgstr "" +msgstr "pro nastavenà jÃmacÃho zaÅ™Ãzenà pulseaudia použijte '[server[:sink]]'" -#: src/audio_out/audio_pulse_out.c:582 -#, fuzzy +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" -msgstr "modul zvukového výstupu xine použije esound" +msgstr "modul zvukového výstupu xine použije server pulseaudio" #: src/audio_out/audio_sun_out.c:457 src/audio_out/audio_sun_out.c:950 #, c-format @@ -833,39 +836,221 @@ msgstr "" "skuteÄnÄ› náležité zvukové zaÅ™Ãzenà Sun." #: src/audio_out/audio_sun_out.c:968 -#, fuzzy, c-format +#, c-format msgid "audio_sun_out: audio ioctl on device %s failed: %s\n" -msgstr "audio_sun_out: otevÃránà zvukového zaÅ™Ãzenà %s selhalo: %s\n" +msgstr "audio_sun_out: zvukové ioctl na zaÅ™Ãzenà %s selhalo: %s\n" #: src/audio_out/audio_sun_out.c:1022 msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "výstupnà zvukový modul použije zvuková zaÅ™ÃzenÃ/ovladaÄe sun" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: zvÄ›tÅ¡enà bufferu na %d, aby se pÅ™edeÅ¡lo pÅ™eteÄenÃ.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "ffmpeg_audio_dec: nelze nalézt dekodér ffmpeg pro buffer typu 0x%X\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: pokus o otevÅ™enà kodeku null\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: nelze otevÅ™Ãt dekodér\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "dvaudio: zvÄ›tÅ¡enà bufferu na %d, aby se pÅ™edeÅ¡lo pÅ™eteÄenÃ.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: nepodporovaný formát, DR1 zakázáno.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: nepodporované rozmÄ›ry snÃmku, DR1 zakázáno.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "ffmpeg_video_dec: nelze nalézt dekodér ffmpeg pro buffer typu 0x%X\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: nelze otevÅ™Ãt dekodér\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: pÅ™Ãmé renderovánà povoleno\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_video_dec: zvÄ›tÅ¡enà bufferu na %d, aby se pÅ™edeÅ¡lo pÅ™eteÄenÃ.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "kvalita dodateÄného zpracovánà MPEG-4" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"Můžete pÅ™izpůsobit množstvà dodateÄného zpracovánà použitého na video MPEG-" +"4.\n" +"Vyššà hodnoty majà za následek lepšà kvalitu, ale vÃce zatÞà CPU. Menšà " +"hodnoty mohou mÃt za následek defekty v obrázku, napÅ™. blokové artefakty. " +"Pro vysokou kvalitu videa může pÅ™ÃliÅ¡ silné dodateÄné zpracovánà způsobit " +"horšà obraz tÃm, že ho vÃce rozmaže." + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "PoÄet vláken na dekódovánà videa FFmpegem" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Můžete upravit poÄet vláken dekódujÃcà video, které má FFmpeg použÃvat.\n" +"Vyššà hodnoty by mÄ›ly urychlit dekódovánÃ, ale záležà také na tom, jestli " +"daný kodek podporuje paralelnà dekódovánÃ. Zpravidla je dobré mÃt jedno " +"dekódovacà vlákno na jeden logický procesor (typicky od 1 do 4).\n" +"ZmÄ›na tohoto nastavenà se projevà pÅ™i pÅ™ehrávánà následujÃcÃho videa." + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "PÅ™eskakovánà filtru ve smyÄce" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Můžete Å™Ãdit, pro které snÃmky by mÄ›l být po dekódovánà pÅ™eskoÄen filtr ve " +"smyÄce.\n" +"PÅ™eskakovánà filtru ve smyÄce urychlà dekódovánÃ, ale může vést k " +"artefaktům. PoÄet pÅ™eskoÄených snÃmků je od 'none' (žádné) po " +"'all' (vÅ¡echny).Výchozà hodnota ponechává rozhodnutà na implementaci.\n" +"ZmÄ›na tohoto nastavenà se projevà pÅ™i pÅ™ehrávánà následujÃcÃho videa." + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "UpÅ™ednostnit rychlost pÅ™ed vyhovÄ›nÃm specifikacÃm" + +# "zneuctÃvajà specifikace kodeku" ;-) +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Můžete chtÃt umožnit rychlostnà cheaty, které poruÅ¡ujà specifikace kodeku.\n" +"Cheaty mohou urychlit dekódovánÃ, ale také vedou k dekódovacÃm artefaktům.\n" +"ZmÄ›na tohoto nastavenà se projevà pÅ™i pÅ™ehrávánà následujÃcÃho videa." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "výstupnà rychlost mpegu libavcodec (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" +"Bitová rychlost knihovny libavcodec kódujÃcà mpeg, jaká by se mÄ›la použÃvat " +"v režimu kódovánà DXR3. Vyššà hodnoty zvýšà využità procesoru a kvalitu.\n" +"Toto nastavenà je uvažováno pouze, když je zakázán režim konstantnà kvality." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "režim konstantnà kvality" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" +"Když bude povoleno, libavcodec použije režim konstantnà kvality dynamickou " +"kompresà obrázků na základÄ› jejich složitosti. Když bude zakázáno, " +"libavcodec použije režim konstantnà bitové rychlosti." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "minimálnà komprese" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" +"Minimálnà komprese, která se použije na obraz v režimu konstantnà kvality." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "Maximálnà kvantizér" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" +"Maximálnà komprese, která se použije na obraz v režimu konstantnà kvality." + +#: src/demuxers/demux_asf.c:450 +#, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: varovánÃ: Vypadá to, že tok dat chybÃ.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "ChybÄ›jÃcà data z média?" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: varovánÃ: Proud dat ÄÃslo %d je zaÅ¡ifrovaný.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Proud dat je zamÃchán/zaÅ¡ifrován" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Obnovuje se index..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "" "demux:avi: neplatný datový blok avi \"%c%c%c%c\" na pozici %<PRIdMAX>\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: index avi je poruÅ¡en\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -876,19 +1061,25 @@ msgstr "" msgid "invalid FILM chunk size\n" msgstr "neplatná velikost datového bloku FILM\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "nerozpoznaný datový blok FILM\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" -msgstr "" +msgstr "nepodporovaná verze FLV (%d).\n" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" -msgstr "" +msgstr "v tomto souboru žádné video ani zvuk\n" + +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "hlaviÄka posloupnosti pÅ™ÃliÅ¡ veliká (%u bytů)!\n" #: src/demuxers/demux_iff.c:233 #, c-format @@ -905,7 +1096,8 @@ msgstr "iff-ilbm: neznámá komprese: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: neznámý datový blok: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "demux_mpc: snÃmek pÅ™ÃliÅ¡ velký do bufferu" @@ -919,6 +1111,7 @@ msgstr "" "vývojářům xine.\n" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -939,7 +1132,7 @@ msgstr "" "demux_mpeg_block: varovánÃ: hlaviÄka PES indikuje, že tyto data mohou být " "zaÅ¡ifrována (Å¡ifrovacà mód: %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -948,18 +1141,18 @@ msgstr "" "xine-lib:demux_mpeg_pes: Nerozpoznané stream_id 0x%02x. ProsÃm oznamte to " "vývojářům xine.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "demux_mpeg_pes: varovánÃ: selhalo dekódovánà sekvence PACK id=0x%x.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" "demux_mpeg_pes: varovánÃ: 10 rezervovaných bitů hlaviÄky PES nenalezeno\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -968,7 +1161,7 @@ msgstr "" "demux_mpeg_pes: varovánÃ: hlaviÄka PES indikuje, že tyto data mohou být " "zaÅ¡ifrována (Å¡ifrovacà mód: %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -984,19 +1177,20 @@ msgstr "" "ogg: zjiÅ¡tÄ›na zvuková stopa vorbis, ale nenalezena žádná hlaviÄka dat " "vorbis.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: Å¡patné parametry hlaviÄky\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: nepodporovaný typ zvuku: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" -msgstr "" +msgstr "demux_tta: celkový poÄet snÃmků pÅ™ÃliÅ¡ velký\n" #: src/demuxers/demux_voc.c:103 #, c-format @@ -1015,7 +1209,7 @@ msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" "demux_wc3movie: datový blok SHOT odkazoval na neplatnou paletu (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "demux_wc3movie: Byl zde problém bÄ›hem naÄÃtánà datových bloků palety\n" @@ -1038,6 +1232,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: Selhalo otevÅ™enà zaÅ™Ãzenà titulků %s (%s)\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "požadované tlaÄÃtko nenà k dispozici\n" @@ -1118,7 +1313,7 @@ msgstr "" "Povolà logiku, která upravuje doby trvánà snÃmku nÄ›kterých mpeg streamů se " "Å¡patnými kódy rychlosti snÃmku. V souÄasnosti je implementována korekce pro " "NTSC streamy mylnÄ› oznaÄené jako PAL streamy. Povolte to pouze tehdy, když " -"se s takovými stramy setkáte." +"se s takovými streamy setkáte." #: src/dxr3/dxr3_decode_video.c:545 #, c-format @@ -1126,6 +1321,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Selhalo otevÅ™enà video zaÅ™Ãzenà %s (%s)\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: zápis do zaÅ™Ãzenà by blokoval. okamžité zapsánÃ\n" @@ -1140,16 +1336,19 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: VAROVÃNÃ: neznámý kód rychlosti snÃmků %d\n" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" "dxr3_decode_video: VAROVÃNÃ: oprava kódu rychlosti snÃmků z PAL na NTSC\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: selhala inicializace librte\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1157,10 +1356,12 @@ msgstr "" "dxr3_mpeg_encoder: rte pracuje pouze s rozmÄ›ry videa, které jsou násobky 16\n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: selhalo zÃskánà kontextu rte.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: neÅ¡lo vytvoÅ™it kodek.\n" @@ -1187,6 +1388,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: nelze zaÄÃt s kódovánÃm: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: NeÅ¡lo spustit knihovnu FAME\n" @@ -1291,18 +1493,22 @@ msgstr "" "takže tyto by nemusely fungovat." #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "video_out_dxr3: Selhala inicializace Mpeg kodéru.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: Selhala inicializace Mpeg kodéru rte.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: Selhala inicializace Mpeg kodéru fame.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1316,9 +1522,10 @@ msgstr "" "DVD,\n" "video_out_dxr3: ale pÅ™i použità tohoto ovladaÄe výstupu videa nebudete\n" "video_out_dxr3: moci pÅ™ehrávat ne-MPEG obsah. Detaily o konfiguraci kodéru\n" -"video_out_dxr3: viz. README.dxr3.\n" +"video_out_dxr3: viz README.dxr3.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1332,7 +1539,7 @@ msgstr "" "DVD,\n" "video_out_dxr3: ale pÅ™i použità tohoto ovladaÄe výstupu videa nebudete\n" "video_out_dxr3: moci pÅ™ehrávat ne-MPEG obsah. Detaily o konfiguraci kodéru\n" -"video_out_dxr3: viz. README.dxr3.\n" +"video_out_dxr3: viz README.dxr3.\n" #: src/dxr3/video_out_dxr3.c:386 msgid "video output mode (TV or overlay)" @@ -1375,7 +1582,7 @@ msgstr "" "\n" "letterboxed tv\n" "PosÃlat video pouze do výstupnÃho TV konektoru. Toto je režim použitý pro " -"standardnà nastavenà televize 4:3. Anamorfické video (16:9) bude zobrazeno " +"standardnà nastavenà televize 4:3. Anamorfotické video (16:9) bude zobrazeno " "4:3, média pan&scan budou mÃt oÅ™Ãznutý obraz na levé a pravé stranÄ›. Toto je " "běžné nastavenà pro sledovánà TV, která se chová stejnÄ› jako samotný DVD " "pÅ™ehrávaÄ.\n" @@ -1442,6 +1649,7 @@ msgstr "" "povolte, pokud vidÃte nahoÅ™e a dole zelené řádky." #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: spusÅ¥te prosÃm autocal, pÅ™ekrývánà zakázáno\n" @@ -1466,47 +1674,50 @@ msgstr "" "default: zachovat nastavenà karty" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: selhalo nastavenà režimu videa.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" msgstr "" "video_out_dxr3: K pÅ™ehrávánà ne-MPEG videa na dxr3 potÅ™ebujete MPEG kodér\n" -"video_out_dxr3: Detaily viz. README.dxr3.\n" +"video_out_dxr3: Detaily viz README.dxr3.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: CHYBA Ätenà souboru inicializace pÅ™ekrývánÃ. SpusÅ¥te " "autocal!\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: http: nelze se pÅ™ipojit k %s:%d\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: úspěšnÄ› pÅ™ipojeno k CDDB serveru '%s:%d'.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: nelze se pÅ™ipojit k CDDB serveru '%s:%d' (%s).\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "digitálnà zvukové CD (CDDA)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "zaÅ™Ãzenà použité pro zvukové CD" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." @@ -1514,11 +1725,11 @@ msgstr "" "Cesta k zeÅ™ÃzenÃ, obvykle CD nebo DVD mechanika, které máte v úmyslu " "použÃvat k pÅ™ehrávánà zvukových CD." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "dotazovat se CDDB" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1532,11 +1743,11 @@ msgstr "" "internetového serveru, který by pak mohl znát profil vaÅ¡ich poslechových " "zvyků." -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "jméno serveru CDDB" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1549,21 +1760,21 @@ msgstr "" "posÃlány informace o vaÅ¡ich poslechovÃch zvycÃch a také mohl by odpovÃdat na " "dotazy zákeÅ™nými odpovÄ›Ämi. UjistÄ›te se, že serveru můžete důvěřovat." -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "port serveru CDDB" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" "Port serveru, který se použije, aby se z nÄ›j zÃskávaly nadpisy a informace o " "stopÄ›." -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "adresář se záznamy CDDB" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1575,11 +1786,11 @@ msgstr "" "tomto adresáři vytvářeny soubory s nekontrolovatelnými jmény. UjistÄ›te se, " "že daný adresář nenà použÃván pro nic jiného než cachovánà CDDB." -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "zpomalit diskovou jednotku na tento rychlostnà faktor" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1593,61 +1804,71 @@ msgstr "" "potÅ™ebné, a tak by nemÄ›lo zpomalenà ovlivnit výkon pÅ™ehrávánÃ.\n" "Hodnota nula zde zakáže zpomalovánÃ." -#: src/input/input_dvb.c:895 -#, fuzzy, c-format +#: src/input/input_dvb.c:904 +#, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" -msgstr "input_dvb: selhalo otevÅ™enà souboru kanálu dvb '%s'\n" +msgstr "input_dvb: selhalo otevÅ™enà souboru kanálu dvb '%s': %s\n" -#: src/input/input_dvb.c:901 -#, fuzzy, c-format +#: src/input/input_dvb.c:910 +#, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" -msgstr "input_dvb: selhalo otevÅ™enà souboru kanálu dvb '%s'\n" +msgstr "input_dvb: soubor kanálu dvb '%s' nenà běžný soubor\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: selhalo nastavenà kanálu\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "input_dvb: DVB rozhranà %s\n" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: nelze otevÅ™Ãt zaÅ™Ãzenà dvb\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "input_dvb: kanál %d mimo rozsah, použije se výchozà 0\n" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: hledánà kanálu %s\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "input_dvb: pÅ™esná shoda pro %s nenalezena: zkusà se ÄásteÄné shody\n" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: nalezen odpovÃdajÃcà kanál %s\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "input_dvb: kanál %s nenalezen v channels.conf, použije se výchozÃ.\n" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" "input_dvb: neplatná specifikace kanálu, použije se naposledy sledovaný\n" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "input_dvb: neplatná specifikace kanálu, použije se výchozà kanál 0\n" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" @@ -1655,7 +1876,8 @@ msgstr "" "input_dvb: bylo uvedeno MRL DVBS, ale nezdá se, že by tuner byl QPSK (DVB-" "S)\n" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" @@ -1663,35 +1885,38 @@ msgstr "" "input_dvb: bylo uvedeno MRL DVBT, ale nezdá se, že by byl tuner OFDM (DVB-" "T)\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" "input_dvb: bylo uvedeno MRL DVBC, ale nezdá se, že by byl tuner QAM (DVB-C)\n" -#: src/input/input_dvb.c:2942 -#, fuzzy +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" -"input_dvb: bylo uvedeno MRL DVBC, ale nezdá se, že by byl tuner QAM (DVB-C)\n" +"input_dvb: bylo uvedeno MRL DVBA, ale nezdá se, že by byl tuner ATSC (DVB-" +"A)\n" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: nelze otevÅ™Ãt zaÅ™Ãzenà dvr '%s'\n" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_dvb: nelze vytvoÅ™it vlákno na aktualizace EPG\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "použÃt 'stÅ™edový výsek' DVB (zvÄ›tÅ¡enÃ)" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." @@ -1699,15 +1924,15 @@ msgstr "" "Toto dovolà pÅ™ehrát obsah 4:3 na celé obrazovce, který byl pÅ™enášen ve " "formátu 16:9." -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "vstupnà modul DVB (digitálnà TV)" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "Pamatovat si naposledy sledovaný kanál DVB" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " @@ -1715,57 +1940,78 @@ msgstr "" "PÅ™i automatickém pÅ™ehrávánà xine pÅ™epne na poslednà kanál uvedený v media." "dvb.last_channel." -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "Naposledy sledovaný kanál DVB" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" "Pokud je povoleno, xine si bude pamatovat tento kanál a bude se na nÄ›j " "automaticky pÅ™epÃnat." -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." -msgstr "" +msgstr "PoÄet sekund, než nechat ukonÄit ladÄ›nÃ." -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" +"Ponechánà na 0 znamená zkouÅ¡et bez pÅ™estánÃ. VÃce než 0 znamená Äekat na " +"zÃskánà zámku uvedený poÄet sekund. Minimum je 5 sekund." -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "PoÄet karet DVB, které se majà použÃt." -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" "Nechte to na nule, pokud opravdu nechcete ve vaÅ¡em systému vÃce než jednu " "kartu." -# what is it? -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "Povolit rozhranà DVB" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "Povolà rozhranà DVB - nahrávánà a pÅ™epÃnánà kanálů Å™Ãzené myÅ¡Ã." + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "KonfiguraÄnà soubor kanálů DVB" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" +"KonfiguraÄnà soubor kanálů DVB, který použÃt, mÃsto ~/.xine/channels.conf." + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" "input_dvd: values of \\beta will give rise to dom! (pÄ›t korun za pÅ™eklad)\n" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Chyba zÃskánà bloku z DVD (%s)\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: chyba otevÃránà zaÅ™Ãzenà DVD\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "zaÅ™Ãzenà použité pro pÅ™ehrávánà DVD" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." @@ -1773,11 +2019,11 @@ msgstr "" "Cesta k zaÅ™ÃzenÃ, obvykle DVD mechanice, které chcete použÃvat pro " "pÅ™ehrávánà DVD." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "cesta k raw zaÅ™Ãzenà nastavenému pro pÅ™Ãstup k DVD" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1793,13 +2039,13 @@ msgstr "" "obsahu cache tÃm, že by se zachovávala data DVD v cache. Použità cache " "blokového zaÅ™Ãzenà je pro DVD zbyteÄné, protože vÄ›tÅ¡ina vÅ¡ech dat DVD bude " "použita pouze jednou.\n" -"Dalšà informace viz. dokumentace o raw zaÅ™ÃzenÃch (man raw)." +"Dalšà informace viz dokumentace o raw zaÅ™ÃzenÃch (man raw)." -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "metoda deÅ¡ifrovánà CSS" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " @@ -1809,11 +2055,11 @@ msgstr "" "chránÄ›nÃch proti kopÃrovánÃ. Pokud máte problémy s pÅ™ehrávánÃm zakódovaných " "DVD, vyzkouÅ¡ejte různé metody." -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "cesta ke cache klÃÄů titulů" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1827,11 +2073,11 @@ msgstr "" "tomto adresáři vytvářeny soubory s nekontrolovatelnými jmény. UjistÄ›te se, " "že daný adresář nenà kromÄ› cachovánà DVD klÃÄů použÃván na nic jiného." -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "DVD pÅ™ehrávaÄ tvrdÃ, že je v oblasti (1 až 8)" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " @@ -1841,11 +2087,11 @@ msgstr "" "na Å¡patný kód oblasti. Nemá to nic dÄ›lat s kódem oblasti nastaveným v DVD " "mechanikách, je to ÄistÄ› softwarové." -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "výchozà jazyk pro pÅ™ehrávánà DVD" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" @@ -1855,11 +2101,11 @@ msgstr "" "bude podporovat, volby a zvukové stopy budou prezentovány v tomto jazyce.\n" "Hodnotou musà být dva znaky jazykového kódu ISO639." -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "read-ahead cachovánÃ" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " @@ -1869,11 +2115,11 @@ msgstr "" "To může vést na pomalých mechanikách ke Å¡kubavému pÅ™ehrávánÃ, ale na " "rychlejÅ¡Ãch mechanikách to zlepšà výsledek zmÄ›ny vrstvy DVD." -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "jednotka pro akci skoku" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1905,11 +2151,11 @@ msgstr "" "skip title\n" "pÅ™eskoÄà DVD titul, což je stavebnà jednotka reprezentujÃcà celé DVD" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "jednotka pro nastavenà pozice" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1933,11 +2179,11 @@ msgstr "" "nastavovánà pozice se týká programu DVD, což je navigaÄnà jednotka " "reprezentujÃcà kapitolu souÄasného dÄ›jstvÃ" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "režim pÅ™ehrávánÃ, když je zadán titul nebo kapitola" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1954,45 +2200,46 @@ msgstr "" "entire dvd\n" "pÅ™ehrát celé DVD od uvedené pozice.\n" "\n" -"one chapterpÅ™ehrát pouze uvedený titul nebo kapitolu a zastavit" +"one chapter\n" +"pÅ™ehrát pouze uvedený titul nebo kapitolu a zastavit" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: chyba Ätenà (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: PÅ™Ãstup odepÅ™en: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Soubor nenalezen >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Soubor prázdný: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "modul pro vstup ze souboru" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "poÄáteÄnà umÃstÄ›nà pÅ™i procházenà souborů" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "ProhlÞeÄ vybÃrajÃcà soubor k pÅ™ehránà zaÄne na tomto umÃstÄ›nÃ." -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "ukazovat skryté soubory" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." @@ -2000,91 +2247,91 @@ msgstr "" "Pokud je povoleno, bude prohlÞeÄ vybÃrajÃcà soubor k pÅ™ehránà ukazovat také " "skryté soubory." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "vstupnà modul gnome-vfs dodaný se xine" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: selhalo gethostbyname(%s): %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: chyba Ätenà %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "PÅ™ipojuje se k HTTP serveru..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: neplatná odpovÄ›Ä http\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: pÅ™esmÄ›rovánà 3xx: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: stav http nenà 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: délka obsahu = %<PRIdMAX> bytů\n" -#: src/input/input_http.c:957 -#, fuzzy, c-format +#: src/input/input_http.c:962 +#, c-format msgid "input_http: buffer exhausted after %d bytes." -msgstr "input_http: chyba Ätenà %d\n" +msgstr "input_http: buffer vyÄerpán po %d bytech" -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "vstupnà modul http" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "HTTP proxy host" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "Hostitelské jméno HTTP proxy." -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "HTTP proxy port" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "ÄŒÃslo portu HTTP proxy." -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "Uživatelské jméno HTTP proxy" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "Uživatelské jméno pro HTTP proxy." -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "Heslo HTTP proxy" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "Heslo pro HTTP proxy." -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "Domény, pro které ignorovat HTTP proxy" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -2095,15 +2342,15 @@ msgstr "" "Pokud bude doménové jméno zaÄÃnat na '=', pak bude zpracováno pouze jako " "hostitelské jméno (bude vyžadována rovnost celého jména)." -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "vstupnà modul mms pro streamovaná data" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "Å¡ÃÅ™ka pásma sÃtÄ›" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " @@ -2113,17 +2360,17 @@ msgstr "" "pÅ™ÃpadÄ›, že streamovacà servery poskytnou různé verze stejných dat s " "rozdÃlnými požadavky na Å¡ÃÅ™ku pásma." -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "protokol MMS" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." msgstr "" -"Vyberte protokol zapoudÅ™ujÃcà MMS. TCP je lepÅ¡Ã, ale za firewallem můžete " -"potÅ™ebvat HTTP." +"Vyberte protokol zapouzdÅ™ujÃcà MMS. TCP je lepÅ¡Ã, ale za firewallem můžete " +"potÅ™ebovat HTTP." #: src/input/input_net.c:121 src/input/input_net.c:151 #, c-format @@ -2145,51 +2392,53 @@ msgstr "input_net: nelze zjistit adresu '%s'.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: nelze se pÅ™ipojit k '%s'.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "vstupnà modul pro sÃÅ¥ dodaný se xine" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "vstupnà modul pnm pro streamovaná data" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: chyba vytvářenà souboru pvr (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: chyba otevÃránà souboru pvr (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: chyba Ätenà (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: chyba otevÃránà zaÅ™Ãzenà %s\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "input_pvr: selhalo IVTV_IOC_G_CODEC, možná se zmÄ›nilo API?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "input_pvr: selhalo IVTV_IOC_S_CODEC, možná se zmÄ›nilo API?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "Vstupnà modul WinTV-PVR 250/350" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "zaÅ™Ãzenà použité pro WinTV-PVR 250/350 (modul pvr)" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "Cesta k zaÅ™Ãzenà vašà karty WinTV." @@ -2242,91 +2491,114 @@ msgstr "nelze se pÅ™ipojit k '%s'.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: ukonÄuje se Ätecà vlákno...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: Ätecà vlákno ukonÄeno\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" -msgstr "OtevÃránà >filename:%s port:%d rozhranÃ:%s<\n" +msgstr "OtevÃránà >soubor:%s port:%d rozhranÃ:%s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: nelze vytvoÅ™it nové vlákno (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "vstupnà modul pro RTP a UDP dodaný se xine" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "vstupnà modul rtsp pro streamovaná data" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "Vstupnà modul CIFS/SMB založený na libsmbclient" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: nelze se posunout zpÄ›t! (%<PRIdMAX> < %<PRIdMAX>)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: selhalo otevÅ™enà '%s'\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "vstupnà modul pro data ze standardnÃho vstupu" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Buffer podtekl..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Buffer pÅ™etekl..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "PÅ™izpůsobuje se..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Jméno tuneru nenalezeno\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "vstupnà modul v4l tv" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "vstupnà modul v4l rádio" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "zaÅ™Ãzenà videa v4l" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "Cesta k vaÅ¡emu zaÅ™Ãzenà videa Video4Linux." -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +msgid "v4l ALSA audio input device" +msgstr "vstupnà zvukové zaÅ™Ãzenà v4l ALSA" + +#: src/input/input_v4l.c:1913 +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Název zvukového zaÅ™ÃzenÃ, které koresponduje s vaÅ¡Ãm Video4Linux." + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "TV standard v4l" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" +"VybÃrá televiznà standard vstupnÃho signálu. BuÄ AUTO, PAL, NTSC nebo SECAM." + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "zaÅ™Ãzenà rádia v4l" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "Cesta k vaÅ¡emu zaÅ™Ãzenà rádia Video4Linux." #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: Neplatné MRL. Použijte vcdo:/<stopa #>\n" @@ -2339,21 +2611,21 @@ msgstr "input_vcd: neplatná stopa %d (platný rozsah: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "Vstupnà modul pro video CD" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "nelze otevÅ™Ãt %s: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: nelze otevÅ™Ãt %s: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "zaÅ™Ãzenà použité pro pÅ™ehrávánà VCD" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." @@ -2361,12 +2633,12 @@ msgstr "" "Cesta k zaÅ™ÃzenÃ, obvykle CD nebo DVD mechanika, se kterým zamýšlÃte " "pÅ™ehrávat VideoCD." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: Å¡patné MRL: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: nelze se pÅ™ipojit k '%s'\n" @@ -2377,10 +2649,20 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: nelze se pÅ™ipojit k serveru %s\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: nelze zavést relaci.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "" +"rtsp_session: rtsp server vrátil pÅ™ÃliÅ¡ velké hlaviÄky, nemůže být zÅ™Ãzeno " +"sezenÃ.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "rtsp_session: typ rtsp serveru '%s' jeÅ¡tÄ› nenà podporován. bohužel.\n" @@ -2390,44 +2672,45 @@ msgstr "rtsp_session: typ rtsp serveru '%s' jeÅ¡tÄ› nenà podporován. bohužel. msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "input_dvd: Selhalo otevÅ™enà zaÅ™Ãzenà %s bÄ›hem volánà vysunutÃ\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "PÅ™ipojuje se k MMS serveru (pÅ™es TCP)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: chyba pÅ™i posÃlánÃ\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: Å¡patný formát odpovÄ›di\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: pÅ™esmÄ›rovánà 3xx nenà implementováno: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: stav http nenà 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: PÅ™esmÄ›rovánà umÃstÄ›nà nenà implementováno\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "PÅ™ipojuje se k MMS serveru (pÅ™es HTTP)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "neplatné URL\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "nepodporovaný protokol\n" @@ -2436,7 +2719,7 @@ msgstr "nepodporovaný protokol\n" msgid "Buffering..." msgstr "Nahrává se..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2445,12 +2728,13 @@ msgstr "" "input_pnm: bÄ›hem Ätenà proudu dat pÅ™iÅ¡la zpráva ze serveru:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: nelze se pÅ™ipojit k '%s'\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: selhalo nastavenà proudu dat\n" @@ -2490,48 +2774,48 @@ msgstr "Výše uvedené by mÄ›lo být pÅ™evedeno" msgid "failed to find a device with a VCD" msgstr "selhalo hledánà zaÅ™Ãzenà s VCD" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "byl pÅ™edán parametr tÅ™Ãdy null" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Neplatný typ aktuálnà položky" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "modul video CD s PBC a podporou: (X)VCD, (X)SVCD, HQVCD, CVD ... " -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "výbÄ›r nemá položku NÃVRAT" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "VÃCHOZà vybráno, ale PBC nenà zapnuto." -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "výbÄ›r nemá položku DALÅ Ã" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "výbÄ›r nemá položku PŘEDCHOZÃ" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "Neznámý typ události: " -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "Výše uvedená zpráva má neznámou logovacà úroveň vcdimageru" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "výchozà typ VCD, který se použije na automatické pÅ™ehránÃ" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" @@ -2539,11 +2823,11 @@ msgstr "" "Jednotka pÅ™ehrávánà VCD, kterou použÃt, jestliže nenà žádná uvedena v MRL. " "NapÅ™. vcd:// nebo vcd:///dev/dvd:" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "výchozà zaÅ™Ãzenà CD-ROM použité pro VCD, jestliže nenà žádné zadáno" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." @@ -2551,28 +2835,28 @@ msgstr "" "Co použÃt, jestliže nenà uvedeno zaÅ™ÃzenÃ. Jestliže je nastavenà prázdné, " "xine prozkoumá jednotky CD." -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "rozsah ukazatele pozice VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "Rozsah ukazatele pozice pÅ™ehrávánà pÅ™Ãtomného pÅ™i pÅ™ehrávánÃ." -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "read-ahead cachovánà VCD?" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "Na slabÅ¡Ãch strojÃch může toto vést k trhanému pÅ™ehrávánÃ" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "automaticky postupovat po stopách nebo položkách VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." @@ -2580,25 +2864,25 @@ msgstr "" "Jestliže je povoleno, mÄ›li bychom automaticky postoupit na dalšà položku " "nebo stopu. Použito pouze, když nenà zapnuta kontrola pÅ™ehrávánà (PBC)." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "zobrazit 'odmÃtané' VCD LID?" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -"Nekteré identifikátory seznamů pÅ™ehrávánà (LID) bývajà oznaÄeny, aby se " +"NÄ›které identifikátory seznamů pÅ™ehrávánà (LID) bývajà oznaÄeny, aby se " "nezobrazovaly. Ale pokud je nastavena tato volba, můžete je vidÄ›t v seznamu " "MRL. OdmÃtané položky jsou oznaÄeny hvÄ›zdiÄkou (*) pÅ™idanou na konec MRL." -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "VCD formát Å™etÄ›zce pro nápis na obrazovce" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2618,7 +2902,7 @@ msgid "" " A number between 1 and the volume count.\n" " %% : a %\n" msgstr "" -"Formát VCD použitý v nadpisu GUI. Podobá se zadánà unixovského datumu. " +"Formát VCD použitý v nadpisu GUI. Podobá se unixovému pÅ™Ãkazu date. " "Specifikátory formátu zaÄÃnajà znakem procento. Specifikátory jsou:\n" " %A : informace o albu\n" " %C : ÄÃtaÄ svazků VCD - poÄet CD v kolekci.\n" @@ -2629,34 +2913,35 @@ msgstr "" " %N : aktuálnà ÄÃslo ID playlistu - desÃtkové ÄÃslo\n" " %P : ID nakladatele\n" " %p : ID pÅ™ipravovatele\n" -" %S : pokud jsme v segmentu (menu), druch segmentu\n" +" %S : pokud jsme v segmentu (menu), druh segmentu\n" " %T : ÄÃslo stopy\n" " %V : ID sady svazků\n" " %v : ID svazku\n" " ÄÃslo 1 až poÄet svazků\n" " %% : %\n" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "formátovacà řetÄ›zec VCD pro pole komentáře proudu dat" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " "%N, %P, %p, %S, %T, %V, %v, and %%.\n" "See the help for the title_format for the meanings of these." msgstr "" -"Formát VCD použitý v titulku GUI. Podobá se zadánà unixovského datumu. " +"Formát VCD použitý v titulku GUI. Podobá se unixovému pÅ™Ãkazu date. " "Specifikátory formátu zaÄÃnajà znakem procento. Specifikátory jsou %A, %C, %" "c, %F, %I, %L, %N, %P, %p, %S, %T, %V, %v a %%.\n" -"Jejich význam viz. help k title_format." +"Jejich význam viz nápovÄ›da k title_format." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +# odvÅ¡ivovacà +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "debugovacà maska pÅ™Ãznaků VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2686,7 +2971,8 @@ msgstr "" "1024: nehybný snÃmek\n" "2048: debugovánà z VCDINFO\n" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "POMÓC! Zvukový ovladaÄ pouze mono?!\n" @@ -2735,156 +3021,33 @@ msgstr "" "surround dekódovánà jako napÅ™. prologic, mÄ›li byste tuto volbu povolit. Pak " "budou dodateÄné kanály pÅ™imixovávány do stereo signálu." -#: src/libfaad/xine_faad_decoder.c:128 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: selhala funkce NeAACDecOpen().\n" -#: src/libfaad/xine_faad_decoder.c:137 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: selhala funkce NeAACDecInit2.\n" -#: src/libfaad/xine_faad_decoder.c:148 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: selhala funkce NeAACDecInit.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: zvÄ›tÅ¡enà bufferu na %d, aby se pÅ™edeÅ¡lo pÅ™eteÄenÃ.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "ffmpeg_audio_dec: nelze nalézt dekodér ffmpeg pro buffer typu 0x%X\n" - -#: src/libffmpeg/ff_audio_decoder.c:253 -#, fuzzy -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: nelze otevÅ™Ãt dekodér\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: nelze otevÅ™Ãt dekodér\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: zvÄ›tÅ¡enà bufferu na %d, aby se pÅ™edeÅ¡lo pÅ™eteÄenÃ.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: nepodporovaný formát, DR1 zakázáno.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: nepodporované rozmÄ›ry snÃmku, DR1 zakázáno.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "ffmpeg_video_dec: nelze nalézt dekodér ffmpeg pro buffer typu 0x%X\n" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: nelze otevÅ™Ãt dekodér\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: pÅ™Ãmé renderovánà povoleno\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: zvÄ›tÅ¡enà bufferu na %d, aby se pÅ™edeÅ¡lo pÅ™eteÄenÃ.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "kvalita dodateÄného zpracovánà MPEG-4" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"Můžete pÅ™izpůsobit množstvà dodateÄného zpracovánà použitého na video MPEG-" -"4.\n" -"Vyššà hodnoty majà za následek lepšà kvalitu, ale vÃce zatÞà CPU. Menšà " -"hodnoty mohou mÃt za následek defekty v obrázku, napÅ™. blokové artefakty. " -"Pro vysokou kvalitu videa může pÅ™ÃliÅ¡ silné dodateÄné zpracovánà způsobit " -"horšà obraz tÃm, že ho vÃce rozmaže." - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "výstupnà rychlost libavcodec mpeg (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" -"Bitová rychlost knihovny libavcodec kódujÃcà mpeg, jaká by se mÄ›la použÃvat " -"v režimu kódovánà DXR3. Vyššà hodnoty zvýšà využità procesoru a kvalitu.\n" -"Toto nastavenà je uvažováno pouze, když je zakázán režim konstantnà kvality." - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "režim konstantnà kvality" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" -"Když bude povoleno, libavcodec použije režim konstantnà kvality dynamickou " -"kompresà obrázků na základÄ› jejich složitosti. Když bude zakázáno, " -"libavcodec použije režim konstantnà bitové rychlosti." - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "minimálné komprese" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" -"Minimálnà komprese, která se použije na obraz v režimu konstatnà kvality." - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "Maximálnà kvantizér" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "" -"Maximálnà komprese, která se použije na obraz v režimu konstantnà kvality." - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "libmusepack: mpc_streaminfo_read selhalo: %d\n" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "libmusepack: data po poslednÃm snÃmku ignorována\n" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "libmusepack: selhalo mpc_decoder_initialise\n" @@ -2899,7 +3062,6 @@ msgid "path to RealPlayer codecs" msgstr "cesta ke kodekům Real Playeru" #: src/libreal/real_common.c:140 -#, fuzzy msgid "" "If you have RealPlayer installed, specify the path to its codec directory " "here. You can easily find the codec directory by looking for a file named " @@ -2911,78 +3073,80 @@ msgstr "" "kodeky. Adresář s kodeky můžete jednoduÅ¡e nalézt hledánÃm souboru \"drv3." "so.6.0\", který je v nÄ›m. Pokud bude moci xine nalézt kodeky RealPlayeru, " "použije je pro vás k dekódovánà RealPlayer obsahu. VÃce informacÃ, jak " -"nainstalovat kodeky, zÃskáte ve xine FAQ." +"nainstalovat kodeky, zÃskáte z xine FAQ." -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "libreal: Chyba hledánà symbolů! (nekompatibilita verzÃ?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (audio) Nelze zjistit symboly - nekompatibilnà dll: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "libareal: selhala inicializace dekodéru, chybový kód: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "libareal: nastavenà esence dekodéru selhalo, chybový kód: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: jejda, real může mÃt vÃce než 2 kanály?\n" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "zobrazovat skryté titulky v sekvencÃch MPEG-2" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" "Skryté titulky jsou titulky urÄené hlavnÄ› na pomoc sluchovÄ› postiženým." -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "podoba skrytých titulků (popÅ™edÃ/pozadÃ)" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Vyberte váš oblÃbený způsob vykreslovánà skrytých titulků." -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "standardnà font skrytých titulků" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Vyberte font pro normálnà text u skrytých titulků." -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "font kurzÃvy skrytých titulků" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "Vyberte font pro text kurzÃvy u skrytých titulků." -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "velikost fontu skrytých titulků" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "Vyberte velikost fontu pro text skrytých titulků." -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "pÅ™izpůsobenà centrovánà skrytých titulků" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." @@ -2990,23 +3154,23 @@ msgstr "" "Pokud je povoleno, skryté titulky budou umisÅ¥ovány doprostÅ™ed jednotlivých " "řádků." -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "font externÃch titulků" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "vertikálnà posun titulků (vzhledem k velikosti okna)" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "kódovánà titulků" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "výchozà doba zobrazenà titulků v sekundách" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " @@ -3017,12 +3181,12 @@ msgstr "" "bude mÃt za následek, že titulek bude vždy zobrazen tak dlouho, než se " "objevà dalÅ¡Ã." -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "velikost titulků" # FIXME: correct original? -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." @@ -3030,12 +3194,12 @@ msgstr "" "Zde můžete upravit velikost titulků. Nastavenà bude bráno relativnÄ› k " "velikosti okna." -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "vertikálnà posun titulků" # FIXME: correct original? -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." @@ -3043,29 +3207,29 @@ msgstr "" "Můžete upravit svislou polohu titulků. Nastavenà bude bráni relativnÄ› k " "velikosti okna." -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "font titulků" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "Font z adresáře fontů xine, který se použije na text s titulky." -#: src/libsputext/xine_sputext_decoder.c:952 -#, fuzzy +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." -msgstr "Font z adresáře fontů xine, který se použije na text s titulky." +msgstr "" +"VnÄ›jšà font jako soubor (napÅ™. .ttf), který se použije na text s titulky." -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" -msgstr "" +msgstr "jestli použÃt vnÄ›jšà font freetype" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "kódovánà titulků" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -3077,11 +3241,11 @@ msgstr "" "znaky zobrazeny tak, jak oÄekáváte, zeptejte se toho, kdo titulky vytvářel, " "jaké bylo použito kódovánÃ." -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "použÃvat OSD bez zmÄ›n měřÃtka, je-li to možné" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -3179,22 +3343,22 @@ msgstr "w32codec: Chyba inicializace DMO zvuku\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: chyba pÅ™i provádÄ›nà dekomprese ByteRun1\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: V tomto okamžiku nenà Anim Opt 1 podporován\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: V tomto okamžiku nenà Anim Opt 2 podporován\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: V tomto okamžiku nenà Anim ASCIIJ podporován\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: V tomto okamžiku nenà tento typ anim podporován\n" @@ -3207,7 +3371,7 @@ msgid "" msgstr "" "Tento filtr bude provádÄ›t Äasové natahovánà - sekvence se pÅ™ehraje rychleji " "nebo pomaleji podle násobku. RozteÄ je volitelnÄ› zachovávána, takže je možné " -"napÅ™. použÃt tento filter ke shlédnutà filmu v kratÅ¡Ãm Äase, než byl původnÄ› " +"napÅ™. použÃt tento filtr ke shlédnutà filmu v kratÅ¡Ãm Äase, než byl původnÄ› " "natoÄen.\n" #: src/post/audio/upmix.c:134 @@ -3238,6 +3402,7 @@ msgstr "" "použÃt tento modul, aby poslouchal v daných datech pouze jeden kanál.\n" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr ": namixovánà Mono na Stereo.\n" @@ -3250,6 +3415,7 @@ msgstr[1] ": namixovánà jednoho kanálu z %d kanálů v původnÃch datech.\n" msgstr[2] ": namixovánà jednoho kanálu z %d kanálů v původnÃch datech.\n" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr ": zvukové zaÅ™Ãzenà nemá schopnost AO_CAP_MODE_STEREO.\n" @@ -3262,8 +3428,16 @@ msgid "" "weighted mean over past samples (default); 2: use several samples to smooth " "the variations via the standard weighted mean over past samples.\n" msgstr "" +"Normalizuje audio na maximálnà úroveň bez zkreslenà zvuku.\n" +"\n" +"Parametry:\n" +" metoda 1: použÃt jeden vzorek na vyhlazenà variacà využitÃm standardnÃho " +"váženého průmÄ›ru pÅ™es pÅ™edchozà vzorky (výchozÃ); 2: použÃt nÄ›kolik vzorků " +"na vyhlazenà variacà využitÃm standardnÃho váženého průmÄ›ru pÅ™es pÅ™edchozà " +"vzorky.\n" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 +#, fuzzy msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3277,6 +3451,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3328,7 +3505,7 @@ msgstr "" "\n" " Enabled: Povolit nebo zakázat modul.\n" "\n" -" Pulldown: Vybrat detekÄnà algoritmus 2-3 pulldown. Filmy s rychostà 24 " +" Pulldown: Vybrat detekÄnà algoritmus 2-3 pulldown. Filmy s rychlostà 24 " "snÃmků/s, které byly konvertovány do NTSC mohou být detekovány a " "inteligentnÄ› rekonstruovány do původnÃch (neprokládaných) snÃmků.\n" "\n" @@ -3340,7 +3517,7 @@ msgstr "" "jádra RedHatu a jádra 2.6 použÃvajà vyššà nastavenà HZ (512 a 1000, v " "poÅ™adÃ) a mÄ›ly by v pohodÄ› fungovat.\n" "\n" -" Judder_correction: Je-li povoleno 2-3 pulldown a je deketován filmový " +" Judder_correction: Je-li povoleno 2-3 pulldown a je detekován filmový " "materiál, je možné omezit rychlost snÃmků na původnà použitou rychlost (24 " "snÃmků/s). To způsobÃ, že snÃmky budou rovnomÄ›rnÄ› rozložené v Äase. Jejich " "Äas bude souhlasit a eliminuje se chvÄ›nÃ.\n" @@ -3368,7 +3545,8 @@ msgstr "" "platformy)\n" "\n" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "tvtime: Nejsou k dispozici žádné metody korekce prokládánÃ, konec.\n" @@ -3412,7 +3590,7 @@ msgstr "" "Můžete vybrat metodu konverze barevného prostoru použitou goomem.\n" "VýbÄ›ry k dispozici by mÄ›ly být samovysvÄ›tlujÃcÃ." -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3476,7 +3654,7 @@ msgid "" "\n" "* mplayer's denoise3d (C) 2003 Daniel Moreno\n" msgstr "" -"Tento filter má za cÃl snÞit Å¡um obrazu produkovánÃm vyhlazených snÃmků a " +"Tento filtr má za cÃl snÞit Å¡um obrazu produkovánÃm vyhlazených snÃmků a " "dÄ›lánÃm nehybného obrazu skuteÄnÄ› nehybným (to by mÄ›lo zvýšit " "komprimovatelnost). Může být zadáno od 0 do 3 parametrů. Jestliže vynecháte " "parametr, bude odhadnuta pÅ™iměřená hodnota.\n" @@ -3559,7 +3737,6 @@ msgstr "" "* eq2 mplayeru (C) Hampa Hug, Daniel Moreno, Richard Felker\n" #: src/post/planar/expand.c:251 -#, fuzzy msgid "" "The expand plugin is meant to take frames of arbitrary aspect ratio and " "converts them to a different aspect (4:3 by default) by adding black bars on " @@ -3573,14 +3750,15 @@ msgid "" " Centre_cut_out_mode: extracts 4:3 image contained in 16:9 frame\n" "\n" msgstr "" -"Modul expand je urÄen k tomu, aby pÅ™ijÃmal snÃmky s libovolnými pomÄ›ry stran " -"a konvertval je na jiný pomÄ›r (výchozà je 4:3) pÅ™idánÃm Äerných pruhů nahoru " -"a dolů. To dovolà posunout OSD nebo titulky tak, že nezasahujà do obrazu.\n" +"Modul expand je urÄen k tomu, aby bral snÃmky s libovolnými pomÄ›ry stran a " +"konvertoval je na jiný pomÄ›r (výchozà je 4:3) pÅ™idánÃm Äerných pruhů nahoru " +"a dolů. To dovolà posunovat OSD nebo titulky tak, že nezasahujà do obrazu.\n" "\n" "Parametry (FIXME: lepšà nápovÄ›da)\n" -" Enable_automatic_shift: Povolà automatické posunutà titulků\n" -" Overlay_y_offset: RuÄnà posun titulků svisle\n" +" Enable_automatic_shift: Povolà automatické posunutÃ\n" +" Overlay_y_offset: RuÄnà posun svisle\n" " aspect: Vybraný pomÄ›r stran (výchozà je 4:3)\n" +" Centre_cut_out_mode: vytáhne obraz 4:3 obsažený v 16:9\n" "\n" #: src/post/planar/noise.c:400 @@ -3600,8 +3778,22 @@ msgid "" "\n" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" +"PÅ™idává do videa náhodný Å¡um.\n" +"\n" +"Parametry:\n" +" luma_strength: intenzita Å¡umu pÅ™idaného ke kanálu luma (0-100, výchozÃ: " +"8)\n" +" chroma_strength: intenzita Å¡umu pÅ™idaného ke kanálu chroma (0-100, výchozà " +"5)\n" +" quality: úroveň kvality Å¡umu. fixed: konstantnà vzorek Å¡umu; temporal: " +"vzorek Å¡umu se mezi snÃmky mÄ›nÃ; averaged temporal: vzorek Å¡umu, který se " +"mÄ›nà mezi snÃmky plynule. (výchozÃ: averaged temporal)\n" +" type: typ Å¡umu: uniform nebo gaussian. (výchozÃ: gaussian)\n" +" pattern: mÃchat náhodný Å¡um s polopravidelným vzorkem. (výchozÃ: False)\n" +"\n" +"* noise mplayeru (C) Michael Niedermayer\n" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3613,7 +3805,7 @@ msgstr "" "Parametry\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3621,7 +3813,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3648,7 +3840,7 @@ msgid "" "\n" "* mplayer's unsharp (C) 2002 Remi Guyomarch\n" msgstr "" -"RozostÅ™ovacà maska / gausovské rozmazánÃ\n" +"RozostÅ™ovacà maska / gaussovské rozmazánÃ\n" "Je možné nastavit Å¡ÃÅ™ku a výšku matice s lichými velikostmi v obou smÄ›rech " "(min = 3x3, max = 13x11 nebo 11x13, obvykle nÄ›co mezi 3x3 až 7x7) a pomÄ›rné " "množstvà ostrosti/rozmazánÃ, které se má pÅ™idat k obrazu (rozumný rozsah by " @@ -3677,15 +3869,15 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "výstupnà modul videa xine použije knihovnu ascii-art" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "výstupnà modul videa xine použije knihovnu Color AsCii Art" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "režim bufferovánà vrstvy videa" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." @@ -3693,11 +3885,11 @@ msgstr "" "Vyberte režim bufferovánà výstupnà vrstvy. Dvojité nebo trojité bufferovánà " "dává hladšà pÅ™ehrávánÃ, ale spotÅ™ebuje vÃce videopamÄ›ti." -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "Äekat na zpÄ›tný bÄ›h" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." @@ -3705,11 +3897,11 @@ msgstr "" "Povolà synchronizaci zmÄ›n obrazu videa s pÅ™ekreslovánÃm celé obrazovky " "(\"vertikálnà zpÄ›tný bÄ›h paprsku\")." -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "povolit klÃÄovou barvu videa" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." @@ -3717,15 +3909,13 @@ msgstr "" "Povolà použità klÃÄové barvy, která Å™Ãká grafické kartÄ›, kde vykreslovat " "obraz videa." -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "klÃÄová barva videa" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." @@ -3734,20 +3924,20 @@ msgstr "" "videa. Jestliže zjistÃte, že se okna stávajà transparentnÃ, vyzkouÅ¡ejte jiné " "hodnoty." -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "filtr mihotánÃ" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -"Povolà filtr mihotánà k docÃlenà hladkého výstupu na prokládém zobrazovaÄi." +"Povolà filtr mihotánà k docÃlenà hladkého výstupu na prokládaném zobrazovaÄi." -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "parita pole" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." @@ -3755,84 +3945,89 @@ msgstr "" "U prokládaného zobrazovaÄe, povolà řÃzenà parity pole (\"none\" znamená " "zakázáno)." -#: src/video_out/video_out_directfb.c:1516 -#, fuzzy +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -"video_out_directfb: použije se hardwarovÄ› urychlované Å¡kálovánà obrazu.\n" +"video_out_directfb: použije se hardwarovÄ› urychlované renderovánà titulků.\n" -#: src/video_out/video_out_directfb.c:1530 -#, fuzzy +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" -msgstr "video_out_vidix: adaptér podporuje formát yuy2\n" +msgstr "video_out_directfb: vrstva podporuje výstup videa.\n" -#: src/video_out/video_out_directfb.c:1539 -#, fuzzy +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" -msgstr "video_out_syncfb: info. (modul SyncFB podporuje YUY2)\n" +msgstr "video_out_directfb: vrstva nepodporuje YV12!\n" -#: src/video_out/video_out_directfb.c:1546 -#, fuzzy +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" -msgstr "video_out_syncfb: info. (modul SyncFB podporuje YUY2)\n" +msgstr "video_out_directfb: vrstva nepodporuje YUY2!\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" +"video_out_directfb: k pÅ™ehrávánà na této vrstvÄ› potÅ™eba minimálnÄ› DirectFB " +"0.9.25!\n" -#: src/video_out/video_out_directfb.c:1592 -#, fuzzy, c-format +#: src/video_out/video_out_directfb.c:1588 +#, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" -msgstr "video_out_directfb: žádná použitelná vrstva výstupu nebyla nalezena!\n" +msgstr "video_out_directfb: vrstva nepodporuje režim bufferovánà %d!\n" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" -msgstr "" +msgstr "video_out_directfb: vrstva nepodporuje volby 0x%08x!\n" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" "video_out_directfb: použije se hardwarovÄ› urychlované Å¡kálovánà obrazu.\n" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" "video_out_directfb: Å¡kálovánà obrazu s korekcà prokládánà je hardwarovÄ› " -"urychklované.\n" +"urychlované.\n" -#: src/video_out/video_out_directfb.c:1782 -#, fuzzy +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" -msgstr "ID vrstvy videa" +msgstr "ID vrstvy videa (auto: -1)" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "Vybere vrstvu výstupu videa podle jeho ID." -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 -#, fuzzy, c-format +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 +#, c-format msgid "video_out_directfb: using display layer #%d.\n" -msgstr "video_out_directfb: žádná použitelná vrstva overlay nebyla nalezena!\n" +msgstr "video_out_directfb: použije se obrazová vrstva #%d.\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "výstupnà modul videa xine použije DirectFB." -#: src/video_out/video_out_directfb.c:2007 -#, fuzzy +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" -msgstr "video_out_directfb: žádná použitelná vrstva overlay nebyla nalezena!\n" +msgstr "" +"video_out_directfb: žádná použitelná obrazová vrstva nebyla nalezena!\n" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "výstupnà modul videa xine použije DirectFB pod XDirectFB." -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "výstupnà modul videa xine pro win32 použÃvajÃcà directx" @@ -3846,11 +4041,11 @@ msgstr "" "d).\n" " Zkontrolujte 'fbset -i' nebo zkuste 'fbset -depth 16'.\n" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "jméno zaÅ™Ãzenà framebufferu" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3864,6 +4059,7 @@ msgstr "" "skuteÄnÄ› je náležité zaÅ™Ãzenà framebufferu." #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Váš videorežim nebyl rozpoznán, bohužel.\n" @@ -3886,6 +4082,7 @@ msgstr "" " Mohlo by pomoci snÞenà rozliÅ¡enà bufferu.\n" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3913,11 +4110,11 @@ msgstr "výstupnà modul videa xine použije zaÅ™Ãzenà framebuffer" msgid "xine video output plugin which displays nothing" msgstr "výstupnà modul videa xine, které nezobrazuje nic" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "renderer OpenGL" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3969,11 +4166,11 @@ msgstr "" "Environment_Mapped_Torus\n" "Zobrazuje obrázky odražené v otáÄejÃcÃm se anuloidu. Hezký způsob =)" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "minimálnà rychlost snÃmků OpenGL" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" @@ -3981,13 +4178,12 @@ msgstr "" "Minimálnà rychlost snÃmků animaÄnÃch renderovacÃch podprogramů.\n" "Ignorováno u statických renderovacÃch podprogramů.\n" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "povolit dvojité bufferovánÃ" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" @@ -3998,13 +4194,14 @@ msgstr "" "ale také to velmi redukuje tÅ™epotánÃ.\n" "NemÄ›lo by to mÃt žádný dopad na výkon." -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" -msgstr "výstupnà modul videa xine použÃvajÃvà OpenGL 3D grafické API" +msgstr "výstupnà modul videa xine použÃvajÃcà OpenGL 3D grafické API" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" -msgstr "video_out_pgx32: Chyba: nelze zpoužÃt DGA drawable okno videa\n" +msgstr "video_out_pgx32: Chyba: nelze použÃt DGA drawable okno videa\n" #: src/video_out/video_out_pgx32.c:206 src/video_out/video_out_pgx32.c:220 #, c-format @@ -4017,6 +4214,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "video_out_pgx32: Chyba: '%s' nenà zaÅ™Ãzenà framebufferu pgx32\n" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx64: Chyba: nelze použÃt DGA drawable pro okno videa\n" @@ -4043,35 +4241,39 @@ msgstr "" "video_out_pgx64: Chyba: '%s' nenà zaÅ™Ãzenà framebufferu xvr100/pgx64/pgx24\n" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" -"video_out_pgx64: Chyba: pÅ™ekrývánà videa ja na této obrazovce již použÃváno\n" +"video_out_pgx64: Chyba: pÅ™ekrývánà videa je na této obrazovce již použÃváno\n" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "video_out_pgx64: Chyba: nelze nastavit vlastnosti okna\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "video_out_pgx64: VarovánÃ: málo videopamÄ›ti, multi-buffering zakázán\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Chyba: nedostatek videopamÄ›ti\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: VarovánÃ: málo videopamÄ›ti, double-buffering zakázán\n" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Chyba: selhalo ioctl (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "hodnota klÃÄové barvy pÅ™ekrývánÃ" @@ -4107,29 +4309,31 @@ msgid "" "memory." msgstr "Multi buffering zvýšà výkon na úkor využità vÃce grafické pamÄ›ti." -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "použÃt hardwarovou akceleraci videa, je-li k dispozici" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -"Pokud to systém podporuje, bude použita harwarová akcelerace vaÅ¡eho " +"Pokud to systém podporuje, bude použita hardwarová akcelerace vaÅ¡eho " "grafického hardwaru. Nemuselo by to správnÄ› fungovat, proto to můžete " "zakázat, pokud by to fungovalo chybnÄ›." -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "SDL musà emulovat 16bitové povrchy, to vÅ¡e zpomalÃ.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: celoobrazovkový režim NENà podporován\n" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "výstupnà modul videa xine použije Simple Direct Media Layer" @@ -4139,47 +4343,56 @@ msgstr "" "výstupnà modul videa xine použije knihovnu Libstk Surface Set-top Toolkit" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: chyba. (formát YUY2 nenà podporován vašà grafickou " "kartou)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: chyba. (formát YV12 nenà podporován vašà grafickou " "kartou)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" "video_out_syncfb: info. (modul SyncFB podporuje YUV 4:2:0 (3 roviny))\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" "video_out_syncfb: info. (modul SyncFB podporuje YUV 4:2:0 (2 roviny))\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "video_out_syncfb: info. (modul SyncFB podporuje YUV 4:2:2)\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: info. (modul SyncFB podporuje YUY2)\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: info. (modul SyncFB podporuje RGB565)\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" "video_out_syncfb: rušà se. (modul SyncFB nepodporuje YV12, YUY2 ani RGB565)\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " @@ -4189,27 +4402,27 @@ msgstr "" "se zdá, že je váš modul jádra SyncFB zastaralý. Informace o tom, jak ho " "aktualizovat, zÃskáte z README.syncfb.)\n" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "Výchozà poÄet opakovánà snÃmku" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "Toto urÄuje, kolikrát po sobÄ› se bude jeden videosnÃmek zobrazovat." -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "výstupnà modul videa xine použije modul SyncFB pro karty Matrox G200/G400" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "Jméno zaÅ™Ãzenà SyncFB" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -4222,33 +4435,31 @@ msgstr "" "obsahem. A tak by jste si mÄ›li být jisti, že hodnota, kterou zadáváte, je " "skuteÄnÄ› náležité zaÅ™Ãzenà framebufferu." -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "intenzita Äervené" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "Intenzita Äervené barevné složky." -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "intenzita zelené" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "Intenzita zelené barevné složky." -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "intenzita modré" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "Intenzita modré barevné složky." -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " @@ -4258,76 +4469,81 @@ msgstr "" "úplné obrazovky (\"vertikálnà zpÄ›tný bÄ›h paprsku\"). Toto eliminuje blikánà " "a trhané artefakty, ale bude použito vÃce grafické pamÄ›ti." -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: adaptér podporuje formát yuy2\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: adaptér podporuje formát yv12\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: Máte Å¡patnou verzi knihovny VIDIX\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: Nelze nalézt fungujÃcà ovladaÄ VIDIX\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: použije se ovladaÄ: %s od %s\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "klÃÄová barva pÅ™ekrývánà videa Äervené složky" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "klÃÄová barva pÅ™ekrývánà videa zelené složky" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "klÃÄová barva pÅ™ekrývánà videa modré složky" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "výstupnà modul videa xine použije libvidix pro X11" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "výstupnà modul videa xine použije libvidix pro linux frame buffer" -#: src/video_out/video_out_xcbshm.c:155 -#, fuzzy, c-format +#: src/video_out/video_out_xcbshm.c:150 +#, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xshm: %s: alokovánà obrázku\n" -"video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" +"video_out_xcbshm: %s: alokovánà obrázku\n" +"video_out_xcbshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xcbshm.c:164 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xshm: chyba sdÃlené pamÄ›ti (chyba adresy) bÄ›hem alokovánà obrázku\n" -"video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" +"video_out_xcbshm: chyba sdÃlené pamÄ›ti (chyba adresy) bÄ›hem alokovánà " +"obrázku\n" +"video_out_xcbshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xcbshm.c:175 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xshm: chyba x11 bÄ›hem vytvářenà XImage ve sdÃlené pamÄ›ti\n" -"video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" +"video_out_xcbshm: chyba x11 bÄ›hem vytvářenà XImage ve sdÃlené pamÄ›ti\n" +"video_out_xcbshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -4342,145 +4558,120 @@ msgstr "" "je doporuÄována hloubka 16 bitů/bod!\n" "\n" -#: src/video_out/video_out_xcbshm.c:1111 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" -"video_out_xshm: RozÅ¡ÃÅ™enà MIT shared memory nenà na displeji pÅ™Ãtomno.\n" +"video_out_xcbshm: RozÅ¡ÃÅ™enà MIT shared memory nenà na displeji pÅ™Ãtomno.\n" -#: src/video_out/video_out_xcbshm.c:1210 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" -msgstr "video_out_xshm: váš videorežim nebyl rozpoznán, bohužel :-(\n" +msgstr "video_out_xcbshm: váš videorežim nebyl rozpoznán, bohužel :-(\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "výstupnà modul videa xine použije rozÅ¡ÃÅ™enà MIT X shared memory" -#: src/video_out/video_out_xcbxv.c:268 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xv: funkce XvShmCreateImage vrátila nulovou velikost\n" -"video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" +"video_out_xcbxv: funkce XvShmCreateImage vrátila nulovou velikost\n" +"video_out_xcbxv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xcbxv.c:277 -#, fuzzy, c-format +#: src/video_out/video_out_xcbxv.c:279 +#, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xv: chyba sdÃlené pamÄ›ti v shmget: %s\n" -"video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" +"video_out_xcbxv: chyba sdÃlené pamÄ›ti v shmget: %s\n" +"video_out_xcbxv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xcbxv.c:296 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xv: chyba x11 bÄ›hem vytvářenà XImage\n" -"video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" +"video_out_xcbxv: chyba x11 bÄ›hem vytvářenà XImage\n" +"video_out_xcbxv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xcbxv.c:1289 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" -msgstr "video_out_xv: RozÅ¡ÃÅ™enà Xv nenà pÅ™Ãtomno.\n" +msgstr "video_out_xcbxv: RozÅ¡ÃÅ™enà Xv nenà pÅ™Ãtomno.\n" -#: src/video_out/video_out_xcbxv.c:1331 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "%s: nepodaÅ™ilo se otevÅ™Ãt Xv port %d - najde se automaticky\n" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support " "Xv?!\n" msgstr "" -"video_out_xv: RozÅ¡ÃÅ™enà Xv je pÅ™Ãtomno, ale nepodaÅ™ilo se nalézt použitelný " -"port yuv12.\n" +"video_out_xcbxv: RozÅ¡ÃÅ™enà Xv je pÅ™Ãtomno, ale nepodaÅ™ilo se nalézt " +"použitelný port yuv12.\n" " Vypadá to, jako by váš grafický hardwarový ovladaÄ " "nepodporoval Xv?!\n" -#: src/video_out/video_out_xcbxv.c:1339 -#, fuzzy, c-format +#: src/video_out/video_out_xcbxv.c:1413 +#, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -"video_out_xv: pro hardwarovou konverzi barevného prostoru a Å¡kálovánà se " -"použije Xv port %ld z adaptéru %s.\n" - -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "klÃÄová barva pro automatické vykreslovánÃ" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "PÅ™imÄ›t Xv automaticky kreslit svou klÃÄovou barvu." +"video_out_xcbxv: pro hardwarovou konverzi barevného prostoru a Å¡kálovánà se " +"použije Xv port %d z adaptéru %s.\n" -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "bilineárnà režim Å¡kálovánÃ" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "povolit synchronizaci s vblank" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -"Vybere bilineárnà režim Å¡kálovánà pro karty Permedia. Jednotlivé hodnoty " -"jsou:\n" -"\n" -"Permedia 2\n" -"0 - zakázat bilineárnà filtrovánÃ\n" -"1 - povolit bilineárnà filtrovánÃ\n" -"\n" -"Permedia 3\n" -"0 - zakázat bilineárnà filtrovánÃ\n" -"1 - horizontálnà lineárnà filtrovánÃ\n" -"2 - povolit plné bilineárnà filtrovánÃ" +"Tato volba synchronizuje aktualizaci obrazu videa s pÅ™ekreslovánÃm úplné " +"obrazovky (\"vertikálnà zpÄ›tný bÄ›h paprsku\"). To eliminuje blikánà a trhané " +"artefakty. Na kartách nVidia může být jeÅ¡tÄ› tÅ™eba spustit \"nvidia-settings" +"\" a v kartÄ› XVideo Settings vybrat, se kterým zaÅ™ÃzenÃm obrazovky " +"synchronizovat." -#: src/video_out/video_out_xcbxv.c:1507 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" -msgstr "video_out_xv: tento adaptér podporuje formát yv12.\n" +msgstr "video_out_xcbxv: tento adaptér podporuje formát yv12.\n" -#: src/video_out/video_out_xcbxv.c:1512 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" -msgstr "video_out_xv: tento adaptér podporuje formát yuy2.\n" - -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "obcházet chybu zarovnávánà rozteÄe" +msgstr "video_out_xcbxv: tento adaptér podporuje formát yuy2.\n" -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" -"NÄ›které chybové ovladaÄe videa potÅ™ebujà ke správnÄ› funkci tento workaround." - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "metoda korekce prokládánà (zavrženo)" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4553,12 +4744,13 @@ msgstr "" "K odstranÄ›nà hÅ™ebenových artefaktů použije lehké rozmazánÃ. Dobré výsledky " "se stÅ™ednà zátěžà CPU." -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "výstupnà modul videa xine použije rozÅ¡ÃÅ™enà MIT X video" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4566,7 +4758,7 @@ msgstr "" "video_out_xshm: chyba sdÃlené pamÄ›ti bÄ›hem alokovánà obrázku\n" "video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -4575,7 +4767,8 @@ msgstr "" "video_out_xshm: %s: alokovánà obrázku\n" "video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4583,7 +4776,8 @@ msgstr "" "video_out_xshm: chyba sdÃlené pamÄ›ti (chyba adresy) bÄ›hem alokovánà obrázku\n" "video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4591,16 +4785,19 @@ msgstr "" "video_out_xshm: chyba x11 bÄ›hem vytvářenà XImage ve sdÃlené pamÄ›ti\n" "video_out_xshm: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: RozÅ¡ÃÅ™enà MIT shared memory nenà na displeji pÅ™Ãtomno.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: váš videorežim nebyl rozpoznán, bohužel :-(\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4608,7 +4805,8 @@ msgstr "" "video_out_xv: selhalo XvShmCreateImage\n" "video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4616,7 +4814,7 @@ msgstr "" "video_out_xv: funkce XvShmCreateImage vrátila nulovou velikost\n" "video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -4625,7 +4823,8 @@ msgstr "" "video_out_xv: chyba sdÃlené pamÄ›ti v shmget: %s\n" "video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4633,11 +4832,18 @@ msgstr "" "video_out_xv: chyba x11 bÄ›hem vytvářenà XImage\n" "video_out_xv: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: RozÅ¡ÃÅ™enà Xv nenà pÅ™Ãtomno.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, fuzzy, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "%s: nepodaÅ™ilo se otevÅ™Ãt Xv port %d - najde se automaticky\n" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4648,7 +4854,7 @@ msgstr "" " Vypadá to, jako by váš grafický hardwarový ovladaÄ " "nepodporoval Xv?!\n" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " @@ -4657,23 +4863,27 @@ msgstr "" "video_out_xv: pro hardwarovou konverzi barevného prostoru a Å¡kálovánà se " "použije Xv port %ld z adaptéru %s.\n" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: tento adaptér podporuje formát yv12.\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: tento adaptér podporuje formát yuy2.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "výstupnà modul videa xine použije X video rozÅ¡ÃÅ™enà XvMC" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: rozÅ¡ÃÅ™enà XvMC nenà pÅ™Ãtomno.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4681,7 +4891,7 @@ msgstr "" "video_out_xvmc: rozÅ¡ÃÅ™enà Xv je pÅ™Ãtomno, ale nebyl nalezen použitelný port " "yuv12\n" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" @@ -4690,24 +4900,28 @@ msgstr "" "video_out_xvmc: pro hardwarovou konverzi barevného prostoru a Å¡kálovánÃ\n" " se použije Xv port %ld z adaptéru %s\n" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " idct a akcelerace kompenzace pohybu\n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " pouze akcelerace kompenzace pohybu\n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " žádná podpora XvMC\n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " S Overlay = %d; UnsignedIntra = %d.\n" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4715,7 +4929,8 @@ msgstr "" "video_out_xxmc: selhalo XvShmCreateImage\n" "video_out_xxmc: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4723,7 +4938,7 @@ msgstr "" "video_out_xxmc: funkce XvShmCreateImage vrátila nulovou velikost\n" "video_out_xxmc: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4732,7 +4947,8 @@ msgstr "" "video_out_xxmc: chyba sdÃlené pamÄ›ti v shmget: %s\n" "video_out_xxmc: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4740,11 +4956,13 @@ msgstr "" "video_out_xxmc: chyba x11 bÄ›hem vytvářenà XImage ve sdÃlené pamÄ›ti\n" "video_out_xxmc: => rozÅ¡ÃÅ™enà MIT Shared Memory se nepoužije.\n" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xxmc: rozÅ¡ÃÅ™enà Xv nenà pÅ™Ãtomno.\n" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4756,7 +4974,7 @@ msgstr "" " Vypadá to, jako by váš grafický hardwarový ovladaÄ\n" " nepodporoval Xv?!\n" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " @@ -4765,33 +4983,35 @@ msgstr "" "video_out_xxmc: pro hardwarovou konverzi barevného prostoru a Å¡kálovánà se " "použije Xv port %ld z adaptéru %s.\n" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xxmc: tento adaptér podporuje formát yv12.\n" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xxmc: tento adaptér podporuje formát yuy2.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." -msgstr "PÅ™imÄ›t XvMC alokovat vÃce snÃmků za úÄelem lepÅ¡Ãho buferrovánÃ." +msgstr "PÅ™imÄ›t XvMC alokovat vÃce snÃmků za úÄelem lepÅ¡Ãho bufferovánÃ." -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -"NÄ›ktré implementace XvMC dovolujà vÃce než 8 snÃmků.\n" +"NÄ›které implementace XvMC dovolujà vÃce než 8 snÃmků.\n" "Tato volba, pokud je zapnuta, pÅ™imÄ›je ovladaÄ zkusit alokovat 15 snÃmků. " "Nutnost pro unichrome a live VDR.\n" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "Å etÅ™enà procesoru unichrome" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" @@ -4801,23 +5021,23 @@ msgstr "" "Pouze pro jádra Linuxu Å™ady 2.6 nebo 2.4 s multimediálnÃm patchem.\n" "ExperimentálnÃ.\n" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "Opravovat chybné barvy elementů XvMC" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -"V knivovnÄ› XvMC od NVidie je chyba, která způsobuje, že Äervené barvy OSD " +"V knihovnÄ› XvMC od NVidie je chyba, která způsobuje, že Äervené barvy OSD " "vypadajà modÅ™e a naopak. Tato volba umožňuje chybu obejÃt.\n" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "PoužÃt 'bob' jako akcelerovanou metodu korekce prokládánÃ." -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" @@ -4826,38 +5046,46 @@ msgstr "" "pÅ™epÃná mezi vrchnÃm a spodnÃm polem k dosaženà dvojnásobné rychlosti " "snÃmků.\n" -#: src/video_out/video_out_xxmc.c:2663 +# TODO +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." -msgstr "" +msgstr "NepoužÃvat korekci prokládánà bob pro postupné snÃmky." -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" +"Postupné snÃmky nepotÅ™ebujà korekci prokládánÃ, takže zakázat ji podle " +"potÅ™eby by mÄ›lo vést k lepÅ¡Ãmu zobrazenÃ.\n" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." -msgstr "" +msgstr "NepoužÃvat korekci prokládánà bob, pokud je aktivnà škálované OSD" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" +"Korekce prokládánà bob pÅ™idává k vodorovným linkám Å¡um, takže zakázat ji " +"podle potÅ™eby by mÄ›lo vést k lepÅ¡Ãmu zobrazenà OSD.\n" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" "x11osd: rozÅ¡ÃÅ™enà XShape nenà k dispozici. Overlay bez zmÄ›n měřÃtka " "zakázán.\n" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "x11osd: chyba vytvoÅ™enà okna. Overlay bez zmÄ›n měřÃtka zakázán.\n" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "x11osd: chyba vytvářenà mapy bodů. Overlay bez zmÄ›n měřÃtka zakázán.\n" @@ -4866,6 +5094,86 @@ msgstr "x11osd: chyba vytvářenà mapy bodů. Overlay bez zmÄ›n měřÃtka zakà msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: overlay bez zmÄ›n měřÃtka vytvoÅ™en (režim %s).\n" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "klÃÄová barva pro automatické vykreslovánÃ" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "PÅ™imÄ›t Xv automaticky kreslit svou klÃÄovou barvu." + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "bilineárnà režim Å¡kálovánÃ" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" +"Vybere bilineárnà režim Å¡kálovánà pro karty Permedia. Jednotlivé hodnoty " +"jsou:\n" +"\n" +"Permedia 2\n" +"0 - zakázat bilineárnà filtrovánÃ\n" +"1 - povolit bilineárnà filtrovánÃ\n" +"\n" +"Permedia 3\n" +"0 - zakázat bilineárnà filtrovánÃ\n" +"1 - horizontálnà lineárnà filtrovánÃ\n" +"2 - povolit plné bilineárnà filtrovánÃ" + +#: src/video_out/xv_common.h:53 +msgid "Xv port number" +msgstr "ÄÃslo Xv portu" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "Vybere, který port Xv použÃt (0 na autodetekci)." + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "obcházet chybu zarovnávánà rozteÄe" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" +"NÄ›které chybové ovladaÄe videa potÅ™ebujà ke správnÄ› funkci tento workaround." + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "UpÅ™ednostnÄ›ná metoda zobrazenà videa" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" +"VybÃrá, která metoda zobrazenà videa je upÅ™ednostňována. Detekce se provádà " +"použitÃm oznámených jmen adaptérů Xv.\n" +"(Platà jen pÅ™i použità autodetekce portů Xv.)" + +#: src/video_out/xv_common.h:81 +#, fuzzy +msgid "bicubic filtering" +msgstr "filtr mihotánÃ" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "zakázat pÅ™esné alfa mÃchánà overlayů" @@ -4907,35 +5215,39 @@ msgstr "" "vnitÅ™nà frontÄ›. Vyššà hodnoty znamenajà hladšà pÅ™ehrávánà u nespolehlivých " "vstupů, ale také zvýšené zpoždÄ›nà a spotÅ™ebu pamÄ›ti." -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" "audio_out: výpoÄet Äekánà nenà možný, pokud nenà k dispozici zvukové " "zaÅ™ÃzenÃ\n" -#: src/xine-engine/audio_out.c:1248 -#, fuzzy +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" -msgstr "zápis do zvukové karty selhal. Nebylo odpojeno USB zaÅ™ÃzenÃ?\n" +msgstr "Zápis do zvukové karty selhal. ZaÅ™Ãzenà považováno za odpojené.\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "8 bitů nenà ovladaÄem podporováno, konvertuje se na 16 bitů.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "mono nenà ovladaÄem podporováno, konvertuje se na stereo.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "stereo nenà ovladaÄem podporováno, konvertuje se na mono.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "metoda synchronizace zvuku a videa" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4958,7 +5270,7 @@ msgid "" "form." msgstr "" "Do pÅ™ehrávánà zvuku a videa jsou zapojeny minimálnÄ› dvoje hodiny: systémové " -"hodiny, ke kterým se synchronizujà videosnÃmky, a hodiny ve vaÅ¡em zvukém " +"hodiny, ke kterým se synchronizujà videosnÃmky, a hodiny ve vaÅ¡em zvukovém " "hardwaru, které urÄujà rychlost pÅ™ehrávánà zvuku. Tyto hodiny nikdy netikajà " "stejnou rychlostà vyjma nÄ›kterých velmi vzácných pÅ™Ãpadů, kdy jsou fyzicky " "identické. Obvykle bude dvojice hodin běžet po nÄ›jakém Äase odliÅ¡nÄ› a xine " @@ -4972,15 +5284,15 @@ msgstr "" "U nÄ›kterého videohardware, který je limitován na pevnou rychlost snÃmků " "(jako jsou DXR3 nebo jiné dekódovacà karty), výše uvedené nefunguje, protože " "video se nemůže odchýlit. Proto pÅ™evzorkujeme zvuková data, aby byla delšà " -"nebo kratšà a komenzovalo to chybu zvukové odchylky. Toto nefunguje s " -"digital passtthrough, kde jsou zvuková data posÃlána do vnÄ›jÅ¡Ãho dekodéru v " +"nebo kratšà a kompenzovalo to chybu zvukové odchylky. Toto nefunguje s " +"digital passthrough, kde jsou zvuková data posÃlána do vnÄ›jÅ¡Ãho dekodéru v " "digitálnà formÄ›." -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "povolit pÅ™evzorkovávánÃ" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4992,11 +5304,11 @@ msgstr "" "\" (\"resampling\"). Zde můžete vybrat, zda je pÅ™evzorkovávánà povoleno, " "zakázáno nebo použito automaticky v pÅ™ÃpadÄ› potÅ™eby." -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "vždy pÅ™evzorkovat na danou frekvenci (0 zakáže)" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " @@ -5006,11 +5318,11 @@ msgstr "" "NastavenÃm hodnoty jiné, než je nula, můžete vnutit pÅ™evzorkovávánà " "zvukových dat na danou rychlost." -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "posun pro digital passthrough" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" @@ -5020,11 +5332,11 @@ msgstr "" "můžete zde zadat pevný posuv, který to bude kompenzovat.\n" "Jednotka hodnoty je jeden tik PTS, což je 1/90000 sekundy." -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "pÅ™ehrávat zvuk i pÅ™i pomalých a rychlých rychlostech" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -5036,71 +5348,75 @@ msgstr "" "Pokud chcete experimentovat se zachovánÃm výšky, můžete vyzkouÅ¡et mÃsto " "tohoto modulu zvukový post modul 'stretch'." -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "hlasitost zvuku pÅ™i startu" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "Celková úroveň hlasitosti pÅ™i startu." -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "obnovit úroveň hlasitosti pÅ™i startu" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "Pokud je zakázáno, xine nebude pÅ™i spuÅ¡tÄ›nà mÄ›nit žádná nastavenà mixeru." -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "audio_out: Litujeme, toto by se nemÄ›lo pÅ™ihodit. ProsÃm restartujte xine.\n" +# pÅ™ÃliÅ¡ mnoho svobody ;-) #: src/xine-engine/buffer.c:64 #, c-format msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" -msgstr "" +msgstr "xine-lib: buffer.c: DoÅ¡lo k fatálnà chybÄ›: PŘÃLIÅ MNOHO FREE\n" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "StávajÃcà konfiguraÄnà soubor byl upraven novÄ›jšà verzà xine." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" "configfile: VAROVÃNÃ: zálohovánà konfiguraÄnÃho souboru do %s selhalo\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: VAROVÃNÃ: vaÅ¡e konfigurace nebude uložena\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: VAROVÃNÃ: zápis konfigurace do %s selhal\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" "configfile: VAROVÃNÃ: odstranà se pravdÄ›podobnÄ› poÅ¡kozený konfiguraÄnà " "soubor %s\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: VAROVÃNÃ: mÄ›li byste zkontrolovat záložnà soubor %s\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: údaj '%s' nesmà být modifikován z MRL\n" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "info_helper: nelze zjistit aktuálnà kódovou stránku\n" @@ -5131,7 +5447,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: Ätenà vstupnÃm modulem selhalo\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: chyba zápisu %<PRIdMAX> bytů do souboru: %s\n" @@ -5156,12 +5472,12 @@ msgstr "input_rip: selhalo nastavenà pozice: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: zahozeno %<PRIdMAX> bytů\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: vstupnà modul nenà definován!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " @@ -5170,7 +5486,7 @@ msgstr "" "input_rip: cÃlový adresář nebyl specifikován, prosÃm vyplňte volbu 'misc." "save_dir'\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -5178,12 +5494,12 @@ msgstr "" "Vlastnost ukládánà dat je zakázána, dokud nenastavÃte v konfiguraci 'misc." "save_dir'." -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: ukládánà z tohoto zdroje nenà povoleno!\n" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" @@ -5191,12 +5507,12 @@ msgstr "" "xine nemá dovoleno ukládat z tohoto zdroje (možná materiál chránÄ›ný " "autorskými právy?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: nebyl dán název souboru!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: chyba otevÃránà souboru %s: %s\n" @@ -5233,9 +5549,9 @@ msgstr "io_helper: Spojenà odmÃtnuto\n" #: src/xine-engine/load_plugins.c:208 #, c-format msgid "map_decoder_list: no space for decoder, skipped.\n" -msgstr "" +msgstr "map_decoder_list: nenà prostor pro dekodér, pÅ™eskoÄen.\n" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" @@ -5243,12 +5559,12 @@ msgstr "" "load_plugins: ignoruje se zásuvný modul %s, nesprávná verze rozhranà %d " "(mÄ›la by být %d)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "priorita dekodéru %s" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" @@ -5256,9 +5572,9 @@ msgid "" msgstr "" "Priorita poskytuje poÅ™adà v pÅ™ÃpadÄ›, že by mohla být nÄ›která média " "zpracovávána vÃce než jednÃm dekodérem.\n" -"Priorita 0 povolà výchozà prioritu dekodéru." +"Priorita 0 povoluje výchozà prioritu dekodéru." -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " @@ -5267,7 +5583,7 @@ msgstr "" "load_plugins: demultiplexnà modul %s neposkytuje prioritu, xine-lib použije " "výchozà hodnotu.\n" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " @@ -5276,43 +5592,43 @@ msgstr "" "load_plugins: vstupnà modul %s neposkytuje prioritu, xine-lib použije " "výchozà hodnotu.\n" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: nalezen modul %s\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: nalezen statický modul\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: dosažen limit poÄtu modulů, %s nemohl být nahrán\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" "load_plugins: dosažen limit poÄtu modulů, statický modul nemohl být nahrán\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: neznámý typ modulu %d v %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" -msgstr "load_plugins: neznámý typ %d staticky liknovaného modulu\n" +msgstr "load_plugins: neznámý typ %d staticky linkovaného modulu\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: nelze provést stat na %s\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -5321,7 +5637,7 @@ msgstr "" "load_plugins: nelze otevÅ™Ãt knihovnu modulu %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -5330,12 +5646,12 @@ msgstr "" "load_plugins: nelze zÃskat informace modulu z %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: pÅ™eskoÄà se adresář s moduly %s.\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -5344,27 +5660,28 @@ msgstr "" "load_plugins: nelze (fáze 2) otevÅ™Ãt knihovnu modulu %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: Co?! %s neobsahuje informace modulu.\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: neznámá strategie %d zjišťovánà obsahu\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: použije se demultiplexor '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: nelze naÄÃst zvukový modul <%s>\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -5372,7 +5689,7 @@ msgstr "" "load_plugins: automatické testovánà zvukového výstupu nenaÅ¡lo žádný " "použitelný zvukový ovladaÄ.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -5381,50 +5698,52 @@ msgstr "" "load_plugins: nelze uvolnit knihovnu modulu %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "font '%s-%d' je již nahrán, divné.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "naÄÃtánà fontu '%s' selhalo (%d < %d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "nesprávná verze u fontu '%s'. oÄekávána %d, nalezena %d.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: nelze inicializovat knihovnu ft2\n" -#: src/xine-engine/osd.c:847 -#, fuzzy, c-format +#: src/xine-engine/osd.c:855 +#, c-format msgid "osd: error matching font %s with FontConfig" -msgstr "osd: chyba naÄÃtánà fontu %s pomocà ft2\n" +msgstr "osd: chyba pÅ™iÅ™azenà fontu %s pomocà FontConfig" -#: src/xine-engine/osd.c:861 -#, fuzzy, c-format +#: src/xine-engine/osd.c:869 +#, c-format msgid "osd: error loading font %s with FontConfig" -msgstr "osd: chyba naÄÃtánà fontu %s pomocà ft2\n" +msgstr "osd: chyba naÄÃtánà fontu %s pomocà FontConfig" -#: src/xine-engine/osd.c:864 -#, fuzzy, c-format +#: src/xine-engine/osd.c:872 +#, c-format msgid "osd: error looking up font %s with FontConfig" -msgstr "osd: chyba naÄÃtánà fontu %s pomocà ft2\n" +msgstr "osd: chyba hledánà fontu %s pomocà FontConfig" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: chyba naÄÃtánà fontu %s pomocà ft2\n" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "osd: chyba pÅ™i nastavovánà velikosti fontu (font nenà škálovatelný?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -5433,41 +5752,46 @@ msgstr "" "osd: neznámá sekvence zaÄÃnajÃcà bytem 0x%02X v kódovánà \"%s\", pÅ™eskoÄà " "se\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: nelze zjistit aktuálnà kódovou stránku\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: nepodporovaná konverze %s -> %s, nebude provádÄ›na\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: font nenà definován\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: chyba naÄÃtanà glyfu\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: chyba v renderovánà glyfu\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: chyba naÄÃtánà glyfu %i\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: chyba pÅ™i renderovánÃ\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "paleta (popÅ™edÃ-okraj-pozadÃ) použitá na titulky a OSD" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " @@ -5476,21 +5800,21 @@ msgstr "" "Paleta on-screen-display a nÄ›kterých formátů titulků, které samy o sobÄ› " "nespecifikujà žádnou barvu. Paleta je uvedena ve formÄ›: popÅ™edÃ-okraj-pozadÃ." -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: nenà k dispozici žádný modul ke zpracovánà '%s'\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: chyba, neznámý typ bufferu: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "poÄet bufferů videa" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " @@ -5501,13 +5825,13 @@ msgstr "" "vstupů, ale také zvýšené zpoždÄ›nà a spotÅ™ebu pamÄ›ti." # This message should match with FAQ_cs. -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d snÃmků pÅ™edaných, %d snÃmků pÅ™eskoÄených, %d snÃmků zahozených\n" # This message should match with FAQ_cs. -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -5516,22 +5840,23 @@ msgstr "" "video_out: zahozenà obrazu s pts %<PRId64>, protože je pÅ™ÃliÅ¡ starý " "(rozdÃl : %<PRId64>).\n" -#: src/xine-engine/video_out.c:1793 -#, fuzzy +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" -msgstr "Výchozà poÄet opakovánà snÃmku" +msgstr "výchozà poÄet videosnÃmků" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" +"Výchozà poÄet videosnÃmků, který se bude žádat z videovýstupnÃho ovladaÄe " +"xine. NÄ›které ovladaÄe použijà své vlastnà hodnoty mÃsto této." -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" -msgstr "procento pÅ™eskoÄených snÃmků, které se bude tolerovat" +msgstr "procentnà tolerance pÅ™eskoÄených snÃmků" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." @@ -5539,11 +5864,11 @@ msgstr "" "Pokud se nezobrazà vÃce než toto procento snÃmků, protože nebyly vÄas " "dekódovány, poÅ¡le xine hlášenÃ." -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "procentnà tolerance zahozených snÃmků" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." @@ -5551,7 +5876,8 @@ msgstr "" "Pokud se nezobrazà vÃce než toto procento snÃmků, protože nebyly vÄas " "naplánovány k zobrazenÃ, poÅ¡le xine hlášenÃ." -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out: Litujeme, toto by se nemÄ›lo pÅ™ihodit. ProsÃm restartujte xine.\n" @@ -5567,7 +5893,7 @@ msgid "" "The position is given as a percentage, so a value of 50 means \"in the middle" "\", while 0 means \"at the very left\" and 100 \"at the very right\"." msgstr "" -"Pokud je vodorovná velikost okna videa vÄ›tšà než aktuálný obraz k zobrazenÃ, " +"Pokud je vodorovná velikost okna videa vÄ›tšà než aktuálnà obraz k zobrazenÃ, " "můžete pÅ™izpůsobit pozici, kam se obraz umÃstÃ.\n" "Pozice se zde udává jako procento, takže hodnota 50 znamená \"uprostÅ™ed\", " "zatÃmco 0 znamená \"co nejvÃce vlevo\" a 100 \"co nejvÃce vpravo\"." @@ -5605,139 +5931,154 @@ msgstr "" "Pokud chcete, aby se zobrazoval obraz videa vždy v jeho původnÃm rozliÅ¡enÃ, " "můžete zakázat veÅ¡keré zmÄ›ny měřÃtka.\n" "Toto samozÅ™ejmÄ› znamená, že se obraz nebude dále pÅ™izpůsobovat velikosti " -"okna videa a videa s pomÄ›rem stran bodu jiným než je 1:1 (napÅ™. anamorfické " -"DVD) se budou zobrazovat deformovanÄ›. Ale na druhou stranu, s nÄ›kterými " -"videovýstupy jako je XShm, kde nenà škálovánà obrazu hardwarovÄ› urychlováno, " -"může toto dramaticky snÞit využità CPU." - -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +"okna videa a videa s pomÄ›rem stran bodu jiným než je 1:1 (napÅ™. " +"anamorfotické DVD) se budou zobrazovat deformovanÄ›. Ale na druhou stranu, s " +"nÄ›kterými videovýstupy jako je XShm, kde nenà škálovánà obrazu hardwarovÄ› " +"urychlováno, může toto dramaticky snÞit využità CPU." + +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: chyba bÄ›hem zpracovánà MRL\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: nelze nalézt vstupnà modul: %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: vstupnà modul nemůže otevÅ™Ãt MRL [%s]\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: nelze nalézt vstupnà modul pro MRL [%s]\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: selhalo spuÅ¡tÄ›nà demultiplexoru %s\n" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: pÅ™ipojen ripovacà vstupnà modul\n" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: chyba otevÃránà instance ripovacÃho vstupnÃho modulu\n" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: selhalo spuÅ¡tÄ›nà poslednÃho vyzkouÅ¡eného demultiplexoru %s\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "ignoruje se video\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "ignoruje se zvuk\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "ignorujà se titulky\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "vstupnà modul cache zakázán\n" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "otevÅ™eno MRL titulků '%s'\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: chyba otevÃránà MRL titulků\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: chyba bÄ›hem zpracovánà MRL\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" -msgstr "xine: zmÄ›na volby '%s' z MRL nanà povolena\n" +msgstr "xine: zmÄ›na volby '%s' z MRL nenà povolena\n" + +#: src/xine-engine/xine.c:1205 +#, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "" +"xine: nepodaÅ™ilo se naÄÃst demultiplexor %s požadovaný vstupnÃm modulem pro >" +"%s<\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: nelze nalézt demultiplexor pro >%s<\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: nalezen demultiplexnà modul: %s\n" -#: src/xine-engine/xine.c:1198 -#, fuzzy, c-format +#: src/xine-engine/xine.c:1252 +#, c-format msgid "xine: demuxer is already done. that was fast!\n" -msgstr "xine: selhalo spuÅ¡tÄ›nà demultiplexoru\n" +msgstr "xine: demultiplexor již skonÄil. to bylo rychlé!\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: selhalo spuÅ¡tÄ›nà demultiplexoru\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: žádný dostupný demultiplexor\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: selhalo spuÅ¡tÄ›nà demultiplexoru\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" "xine: Uvedený adresář pro ukládánà \"%s\" by mohl znamenat bezpeÄnostnà " "riziko.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "Uvedený adresář pro ukládánà by mohl znamenat bezpeÄnostnà riziko." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: locale nenà podporováno knihovnou C\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" -msgstr "strategie zjiÅ¡továnà formátu dat" +msgstr "strategie zjišťovánà formátu dat" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5768,11 +6109,11 @@ msgstr "" "extension\n" "Detekovat pouze podle pÅ™Ãpony jména souboru.\n" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "adresář pro ukládánà dat" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5788,11 +6129,11 @@ msgstr "" "Proto byste si mÄ›li být jisti, že je v uvedeném adresáři bezproblémový " "jakýkoliv obsah v jakémkoliv souboru." -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "povolit implicitnà zmÄ›ny v konfiguraci (napÅ™. pomocà MRL)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5809,88 +6150,84 @@ msgstr "" "dovolÃte libovolnÄ› mÄ›nit vaÅ¡i konfiguraci, můžete skonÄit s úplnÄ› rozhozeným " "xine." -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" -msgstr "" +msgstr "Timeout Ätenà dat ze sÃtÄ› (v sekundách)" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" +"Specifikuje timeout pÅ™i Ätenà dat ze sÃtÄ› v sekundách. PÅ™ÃliÅ¡ nÃzké hodnoty " +"by mohly pÅ™eruÅ¡ovat pÅ™ehrávánÃ, pokud je zdroj pomalý nebo je zabrané pásmo, " +"pÅ™ÃliÅ¡ vysoké hodnoty zablokujà pÅ™ehrávaÄ, pokud se ztratà spojenÃ." -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "zprávy" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "modul" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "trasovánÃ" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" -msgstr "" +msgstr "VarovánÃ:" # standarnà hláška hstrerror -#: src/xine-engine/xine_interface.c:956 -#, fuzzy +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" -msgstr "Neznámý poÄÃtaÄ" +msgstr "Neznámý host:" -#: src/xine-engine/xine_interface.c:957 -#, fuzzy +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" -msgstr "Neznámý typ události: " +msgstr "Neznámé zaÅ™ÃzenÃ: " -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" -msgstr "" +msgstr "SÃÅ¥ nenà dosažitelná" -#: src/xine-engine/xine_interface.c:959 -#, fuzzy +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" -msgstr "io_helper: Spojenà odmÃtnuto\n" +msgstr "Spojenà odmÃtnuto:" -#: src/xine-engine/xine_interface.c:960 -#, fuzzy +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" -msgstr "io_helper: Soubor nenalezen\n" +msgstr "Soubor nenalezen:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" -msgstr "" +msgstr "Chyba Ätenà z:" -#: src/xine-engine/xine_interface.c:962 -#, fuzzy +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" -msgstr "osd: chyba naÄÃtanà glyfu\n" +msgstr "Chyba naÄÃtánà knihovny:" -#: src/xine-engine/xine_interface.c:963 -#, fuzzy +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" -msgstr "ogg: detekována zvuková data vorbis\n" +msgstr "Detekována Å¡ifrovaná multimediálnà data" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" -msgstr "" +msgstr "BezpeÄnostnà zpráva:" -#: src/xine-engine/xine_interface.c:965 -#, fuzzy +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" -msgstr "jméno zvukového zaÅ™Ãzenà Sun" +msgstr "Zvukové zaÅ™Ãzenà nenà k dispozici" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" -msgstr "" +msgstr "Chyba povolenà pÅ™Ãstupu" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" -msgstr "" +msgstr "Soubor je prázdný:" #: src/xine-utils/memcpy.c:479 msgid "memcopy method used by xine" @@ -5904,1424 +6241,9 @@ msgid "" msgstr "" "KopÃrovánà objemných paměťových bloků je jednou z nejnároÄnÄ›jÅ¡Ãch operacà na " "dneÅ¡nÃch poÄÃtaÄÃch. Proto xine poskytuje různé vyladÄ›né metody, které " -"provádÄ›jà toto kopÃrovánÃ. Obvykle je nejlepšà metoda deketována automaticky." +"provádÄ›jà toto kopÃrovánÃ. Obvykle je nejlepšà metoda zjišťována automaticky." #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Výkonnostnà testovánà metod memcpy (menšà je lepÅ¡Ã):\n" - -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: Å patná verze ASX: %s\n" - -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "dvbsub: nelze vytvoÅ™it Äasovacà vlákno\n" - -#~ msgid "make the overlay behave like a fixed layer (for debugging)" -#~ msgstr "chovánà overlay jako pevná vrstva (pro ladÄ›nÃ)" - -#~ msgid "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) failed.\n" -#~ msgstr "Selhala funkce avcodec_find_decoder (CODEC_ID_MPEG1VIDEO)\n" - -#~ msgid "video brightness" -#~ msgstr "jas videa" - -#~ msgid "The brightness of the video image." -#~ msgstr "Jas videoobrazu." - -#~ msgid "The saturation of the video image." -#~ msgstr "Sytost videoobrazu." - -#~ msgid "brightness correction" -#~ msgstr "korekce jasu" - -#~ msgid "" -#~ "The brightness correction can be used to lighten or darken the image. It " -#~ "changes the blacklevel without modifying the contrast, but it limits the " -#~ "tonal range." -#~ msgstr "" -#~ "Korekce jasu může být použita na svÄ›tlejšà nebo tmavšà obraz. ZmÄ›nà se " -#~ "úroveň Äerné bez úpravy kontrastu, ale omezà se tÃm tónový rozsah." - -#~ msgid "Do we use read-ahead caching?" -#~ msgstr "MÄ›lo by se použÃvat cachovánà read-ahead?" - -#~ msgid "This integer is a debugging mask when interpreted in binary." -#~ msgstr "Toto celé ÄÃslo v binárnà reprezentaci je debugovacà maska." - -#~ msgid "audio_oss_out: open() %s failed: %s\n" -#~ msgstr "audio_oss_out: open() %s selhalo: %s\n" - -#~ msgid "display DVB channel name" -#~ msgstr "zobrazovat jméno kanálu DVB" - -#~ msgid "" -#~ "This will display the current channel name in xine's on-screen-display. " -#~ "Menu button 7 will disable this temporarily." -#~ msgstr "" -#~ "Toto zobrazà jméno aktuálnÃho kanálu v OSD xine. TlaÄÃtko volby 7 to " -#~ "doÄasnÄ› zakáže." - -# FIXEM: correct the original -#~ msgid "" -#~ "A Comma separated list of domain names, where the proxy is to be ignored." -#~ msgstr "Seznam domén oddÄ›lený Äárkami, kde nebude použito proxy." - -#~ msgid "selection has no DEFAULT entry" -#~ msgstr "výbÄ›r nemá položku VÃCHOZÃ" - -#~ msgid "" -#~ "You can disable video scaling globally. The image will then no longer " -#~ "adapt to the size of the video window, which can dramatically reduce CPU " -#~ "usage." -#~ msgstr "" -#~ "Můžete globálnÄ› zakázat zmÄ›nu měřÃtka videa. Obraz pak už nebude " -#~ "pÅ™izpůsobován na velikost okna videa, což může dramaticky snÞit využità " -#~ "CPU." - -#~ msgid "device used for 5+ channel output" -#~ msgstr "zaÅ™Ãzenà použité pro 5+ kanálový výstup" - -#~ msgid "used to inform xine about what the sound card can do" -#~ msgstr "použito k informovánà xine o tom, co umà zvuková karta" - -#~ msgid "Adjust a/v sync for OSS softsync" -#~ msgstr "úprava synchronizace zvuku a videa pro softsync OSS" - -#~ msgid "Use this to manually adjust a/v sync if you're using softsync" -#~ msgstr "" -#~ "Toto použijte k ruÄnà úpravÄ› synchronizace zvuku a videa, jestliže " -#~ "použÃváte softwarovou synchronizaci" - -#~ msgid "Enable 4.0 channel analog surround output" -#~ msgstr "povolit 4.0 kanálový analogový surround výstup" - -#~ msgid "Enable 5.0 channel analog surround output" -#~ msgstr "povolit 5.0 kanálový analogový surround výstup" - -#~ msgid "Enable 5.1 channel analog surround output" -#~ msgstr "povolit 5.1 kanálový analogový surround výstup" - -#~ msgid "device used for audio output with the 'Sun' audio plugin" -#~ msgstr "zaÅ™Ãzenà použité pro výstup se zvukovým modulem 'Sun'" - -#~ msgid "The device file of the dxr3 mpeg decoder card control device." -#~ msgstr "Soubor Å™ÃdÃcÃho zaÅ™Ãzenà dxr3 karty na dekódovánà MPEGů." - -#~ msgid "This is relevant for progressive video only (most PAL films)." -#~ msgstr "Toto má význam jen pro postupné video (vÄ›tÅ¡ina filmů PAL)" - -#~ msgid "Enable this for streams with wrong frame durations." -#~ msgstr "Toto povolte pro sekvence s nesprávnou délkou snÃmků." - -#~ msgid "The encoding quality of the libfame mpeg encoder library." -#~ msgstr "Kvalita kódovánà knihovny libfame generujÃcà MPEG." - -#~ msgid "Scr priorities greater 5 make the dxr3 xine's master clock." -#~ msgstr "Priorita SCR vÄ›tšà než 5 udÄ›lá z dxr3 hlavnà hodiny xine." - -#~ msgid "If disabled, will assume source has 4:3 aspect ratio." -#~ msgstr "" -#~ "Jestliže je zakázáno, bude se pÅ™edpokládat video s pomÄ›rem stran 4:3." - -#~ msgid "" -#~ "Content other than mpeg has to pass an additional reencoding stage, " -#~ "because the dxr3 handles mpeg only." -#~ msgstr "" -#~ "Obsah jiný než mpeg musà projÃt dalšà pÅ™ekódovávacà fázÃ, protože dxr3 " -#~ "pracuje pouze s mpegy." - -#~ msgid "A greater value widens the tolerance for the overlay keycolor" -#~ msgstr "VÄ›tšà hodnota rozÅ¡Ãřà toleranci pro klÃÄové barvy pÅ™ekrývánÃ" - -#~ msgid "input_cdda: cannot connect to host.\n" -#~ msgstr "input_cdda: nelze se pÅ™ipojit k serveru.\n" - -#~ msgid "use cddb feature" -#~ msgstr "PoužÃt vlastnosti cddb" - -#~ msgid "path to your local vcd device file" -#~ msgstr "Cesta k vaÅ¡emu mÃstnÃmu souboru VCD zaÅ™ÃzenÃ" - -#~ msgid "a/52 volume control" -#~ msgstr "nastavenà hlasitosti a/52" - -#~ msgid "Relative path to libdivxdecore.so to open" -#~ msgstr "relativnà cesta k libdivxdecore.so" - -#~ msgid "the postprocessing level, 0 = none and fast, 6 = all and slow" -#~ msgstr "" -#~ "úroveň dodateÄného zpracovánÃ, 0 = žádné a rychle, 6 = vÅ¡echno a pomalu" - -#~ msgid "use divx4 plugin for msmpeg4v3 streams" -#~ msgstr "použÃt modul divx4 pro sekvence msmpeg4v3" - -#~ msgid "Divx version to check for (set to 0 (default) if unsure)" -#~ msgstr "" -#~ "nejmenšà dovolená verze Divx (jestli nevÃte, nastavte 0 (pÅ™edvolené))" - -#~ msgid "" -#~ "The bitrate the libavcodec mpeg encoder should use for dxr3's encoding " -#~ "mode" -#~ msgstr "" -#~ "Bitová rychlost mpeg kodéru libavcodec by mÄ›la být použita pro kódovacà " -#~ "režim dxr3" - -#~ msgid "Dxr3enc: Use quantizer instead of bitrate" -#~ msgstr "Dxr3enc: PoužÃt kvantizér namÃsto bitového toku" - -#~ msgid "Dxr3enc: Minimum quantizer" -#~ msgstr "Dxr3enc: Minimálnà kvantizér" - -#~ msgid "Subtitle size (relative window size)" -#~ msgstr "Velikost titulků (vzhledem k velikosti okna)" - -#~ msgid "" -#~ "xvid: there is mismatch between API used by currently installed XviD\n" -#~ "xvid: library (%d.%d) and library used to compile this plugin (%d.%d).\n" -#~ "xvid: Compiling this plugin against current XviD library should help.\n" -#~ msgstr "" -#~ "xvid: je zde nekompatibilita mezi programovým rozhranÃm v souÄasné dobÄ›\n" -#~ " instalované knihovny Xvid (%d.%d) a knihovny použité ke kompilaci\n" -#~ " tohoto modulu (%d.%d).\n" -#~ " PÅ™ekompilovánà tohoto modulu se souÄasnou knihovnou XviD by mÄ›lo\n" -#~ " pomoci.\n" - -#~ msgid "gamma correction for OpenGL driver" -#~ msgstr "gama korekce pro ovladaÄ OpenGL" - -#~ msgid "syncfb (teletux) device node" -#~ msgstr "uzel zaÅ™Ãzenà syncfb (teletux)" - -#~ msgid "gamma correction for XShm driver" -#~ msgstr "gama korekce pro ovladaÄ XShm" - -#~ msgid "Colorkey used for Xv video overlay" -#~ msgstr "KlÃÄová barva použitá pro pÅ™ekrývánà videa u Xv" - -#~ msgid "double buffer to sync video to the retrace" -#~ msgstr "Dvojitý buffer k synchronizaci videa se zpÄ›tným bÄ›hem paprsku" - -#~ msgid "workaround for some (buggy) XVideo drivers" -#~ msgstr "Obcházet chybu nÄ›kterých ovladaÄů XVidea" - -#~ msgid "Software deinterlace method (Key I toggles deinterlacer on/off)" -#~ msgstr "" -#~ "Softwarová metoda korekce prokládánà (klávesa I zapÃná a vypÃná " -#~ "deinterlacer)" - -#~ msgid "" -#~ "'resample' might be better if you use a DXR3/H+ card and (analog) audio " -#~ "is processed by your sound card" -#~ msgstr "" -#~ "'resample' by mohlo být lepÅ¡Ã, jestliže použÃváte kartu DXR3/H+ a zvuk " -#~ "(analogový) je zpracováván vašà zvukovou kartou" - -#~ msgid "adjust whether resampling is done or not" -#~ msgstr "nastavit, jestli se má pÅ™evzorkovávat nebo ne" - -#~ msgid "adjust if audio is offsync" -#~ msgstr "upravte, jestliže bude zvuk nesynchronizovaný (A52 nebo AC5)" - -#~ msgid "Streams will be saved only into this directory" -#~ msgstr "Sekvence budou ukládány pouze do tohoto adresáře" - -#~ msgid "Memcopy method to use in xine for large data chunks." -#~ msgstr "Metoda memcopy použitá ve xine pro velké datové bloky" - -#~ msgid "/dev/dsp# device to use for oss output, -1 => auto_detect" -#~ msgstr "zaÅ™Ãzenà /dev/dsp# použité pro výstup oss, -1 => autodetekce" - -#~ msgid "" -#~ "demux_mpeg_block: too many errors, stopping playback. Maybe this stream " -#~ "is scrambled?\n" -#~ msgstr "" -#~ "demux_mpeg_block: pÅ™ÃliÅ¡ mnoho chyb, zastavuje se pÅ™ehrávánÃ. Možná jsou " -#~ "tyto data zakódována.\n" - -#~ msgid "RTP: waiting for preview data\n" -#~ msgstr "RTP: Äeká se na poÄáteÄnà data\n" - -#~ msgid "RTP: waiting for preview data: timeout\n" -#~ msgstr "RTP: Äekánà na poÄáteÄnà data: Äas vyprÅ¡el\n" - -#~ msgid "Opening >%s<\n" -#~ msgstr "OtvÃrá se >%s<\n" - -#~ msgid "subtitle size (relative window size)" -#~ msgstr "Velikost titulků (vzhledem k velikosti okna)" - -#~ msgid "" -#~ "FLI: in chunk FLI_COPY : source data (%d bytes) bigger than image, " -#~ "skipping chunk\n" -#~ msgstr "" -#~ "FLI: v datovém bloku FLI_COPY : zdrojová data (%d bytů) vÄ›tšà než data " -#~ "snÃmku, datový blok se pÅ™eskoÄÃ\n" - -#~ msgid "FLI: Unrecognized chunk type: %d\n" -#~ msgstr "FLI: Nerozpoznaný datový blok: %d\n" - -#~ msgid "" -#~ " warning: processed FLI chunk where chunk size = %d\n" -#~ " and final chunk ptr = %d\n" -#~ msgstr "" -#~ " varovánÃ: zpracován datový blok FLI s velikostà = %d\n" -#~ " a koncovým ukazatelem = %d\n" - -#~ msgid "MS RLE: stream ptr just went out of bounds (1)\n" -#~ msgstr "MS RLE: ukazatel na data vyÅ¡el z mezà (1)\n" - -#~ msgid "MS RLE: frame ptr just went out of bounds (1)\n" -#~ msgstr "MS RLE: ukazatel na snÃmek vyÅ¡el z mezà (1)\n" - -#~ msgid "MS RLE: stream ptr just went out of bounds (2)\n" -#~ msgstr "MS RLE: ukazatel na data vyÅ¡el z mezà (2)\n" - -#~ msgid "MS RLE: frame ptr just went out of bounds (2)\n" -#~ msgstr "MS RLE: ukazatel na snÃmek vyÅ¡el z mezà (2)\n" - -#~ msgid "MS RLE: ended frame decode with bytes left over (%d < %d)\n" -#~ msgstr "MS RLE: koncový rámec dekódován i se zbytkem bytů (%d < %d)\n" - -#~ msgid "warning: block counter just went negative (this should not happen)\n" -#~ msgstr "" -#~ "varovánÃ: ÄÃtaÄ bloků právÄ› pÅ™eÅ¡el do mÃnusu (toto by se nemÄ›lo stát)\n" - -#~ msgid "First chunk byte is 0x%02x instead of 0x1e\n" -#~ msgstr "Byte prvnà Äásti dat je 0x%02x namÃsto 0x1e\n" - -#~ msgid "MOV chunk size != encoded chunk size; using MOV chunk size\n" -#~ msgstr "" -#~ "Velikost Äásti dat MOV != velikost zakódované Äásti; použije se MOV\n" - -#~ msgid "" -#~ "Unknown opcode %d in rpza chunk. Skip remaining %d bytes of chunk data.\n" -#~ msgstr "" -#~ "Neznámý kód %d v Äásti dat rpza. PÅ™eskoÄà se %d zbývajÃcÃch bytů dat.\n" - -#~ msgid "" -#~ "warning: MOV chunk size != encoded chunk size (%d != %d); using MOV chunk " -#~ "size\n" -#~ msgstr "" -#~ "VarovánÃ: velikost Äásti dat MOV != zakódovaná velikost (%d != %d); " -#~ "použije se MOV\n" - -#~ msgid "" -#~ "SMC decoder just went out of bounds (stream ptr = %d, chunk size = %d)\n" -#~ msgstr "SMC dekodér právÄ› vyÅ¡el z mezà (stream ptr = %d, velikost = %d)\n" - -#~ msgid "SMC decoder just went out of bounds (row ptr = %d, height = %d)\n" -#~ msgstr "SMC dekodér právÄ› vyÅ¡el z mezà (row ptr = %d, výška = %d)\n" - -#~ msgid "encountered repeat block opcode (%02X) but no blocks rendered yet\n" -#~ msgstr "" -#~ "vyskytl se kód opakovánà bloku (%02X), ale žádný blok jeÅ¡tÄ› nebyl " -#~ "zpracován\n" - -#~ msgid "" -#~ "encountered repeat block opcode (%02X) but not enough blocks rendered " -#~ "yet\n" -#~ msgstr "" -#~ "vyskytl se kód opakovánà bloku (%02X), ale nebylo jeÅ¡tÄ› zpracováno dost " -#~ "bloků\n" - -#~ msgid "0xF0 opcode seen in SMC chunk (xine developers would like to know)\n" -#~ msgstr "V Äásti dat SMC vidÄ›n kód 0xF0 (vývojáři xine by to rádi vÄ›dÄ›li)\n" - -#~ msgid "Default x position" -#~ msgstr "PÅ™edvolená pozice X" - -#~ msgid "Default y position" -#~ msgstr "PÅ™edvolená pozice Y" - -#~ msgid "Default width" -#~ msgstr "PÅ™edvolená Å¡ÃÅ™ka" - -#~ msgid "Default height" -#~ msgstr "PÅ™edvolená výška" - -#~ msgid "Default active stream" -#~ msgstr "PÅ™ednastavená aktivnà sekvence" - -#~ msgid "input not seekable, can not handle!\n" -#~ msgstr "u tohoto vstupu nenà nastavitelná pozice, nelze zpracovat!\n" - -#~ msgid "valid mrls for pes demuxer" -#~ msgstr "platná MRL pro demultiplexor PES" - -#~ msgid "valid mrls ending for pes demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor PES" - -#~ msgid "Connecting MMS server..." -#~ msgstr "PÅ™ipojuje se k MMS serveru..." - -#~ msgid "osd: trying iso-8859-1 -> UCS-2\n" -#~ msgstr "osd: zkusà se iso-8859-1 -> UCS-2\n" - -#~ msgid "demux_smjpeg.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_smjpeg.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_wc3movie: encountered unknown chunk: %c%c%c%c\n" -#~ msgstr "demux_wc3movie: vyskytl se neznámý datový blok: %c%c%c%c\n" - -#~ msgid "Enable A52 / AC5 digital audio output via spdif" -#~ msgstr "povolit A52 / AC5 digitálnà zvukový výstup pÅ™es spdif" - -#~ msgid "demux_fli.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_fli.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "input_http: unable to resolve >%s<\n" -#~ msgstr "input_http: nelze zjistit adresu >%s<\n" - -#~ msgid "input_http: opening >/%s< on host >%s<" -#~ msgstr "input_http: otvÃrá se >/%s< na serveru >%s<" - -#~ msgid "%s via proxy >%s<" -#~ msgstr "%s pÅ™es proxy >%s<" - -#~ msgid "input_http: EAGAIN\n" -#~ msgstr "input_http: EAGAIN\n" - -#~ msgid "demux_roq.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_roq.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "input_http: timeout\n" -#~ msgstr "input_http: Äas vyprÅ¡el\n" - -#~ msgid "NVidia TV-Out support." -#~ msgstr "Podpora TV-výstupu NVidia" - -#~ msgid "demux_wav.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_wav.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_aiff.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_aiff.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_snd.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_snd.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_voc.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_voc.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "Dxr3: contrast control" -#~ msgstr "Dxr3: ovládánà kontrastu" - -#~ msgid "Dxr3: saturation control" -#~ msgstr "Dxr3: ovládánà sytosti" - -#~ msgid "demux_qt.c: input is block organized, can not handle!\n" -#~ msgstr "demux_qt.c: vstup je blokovÄ› organizovaný, nelze zpracovat!\n" - -#~ msgid "demux_film.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_film.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_idcin.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_idcin.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_mve.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_mve.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "OUCH - ran out of buffers\n" -#~ msgstr "JEJDA - buffery vyÄerpány\n" - -#~ msgid "OUCH - dropped input packet %d %d\n" -#~ msgstr "JEJDA - zahozen vstupnà paket %d %d\n" - -#~ msgid "demux_mpgaudio: no audio driver!\n" -#~ msgstr "demux_mpgaudio: žádný zvukový ovladaÄ!\n" - -#~ msgid "demux_cda.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_cda.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "input_cda: ioctl(CDROM_MEDIA_CHANGED) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDROM_MEDIA_CHANGED): %s.\n" - -#~ msgid "input_cda: ioctl(CDROMSUBCHNL) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMSUBCHNL): %s.\n" - -#~ msgid "input_cda: ioctl(CDIOCSTART) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDIOCSTART): %s.\n" - -#~ msgid "input_cda: ioctl(CDROMSTART) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMSTART): %s.\n" - -#~ msgid "input_cda: ioctl(CDIOCPLAYMSF) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDIOCPLAYMSF): %s.\n" - -#~ msgid "input_cda: ioctl(CDROMPLAYMSF) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMPLAYMSF): %s.\n" - -#~ msgid "input_cda: No rights to open %s.\n" -#~ msgstr "input_cda: Nejsou práva k otevÅ™enà %s.\n" - -#~ msgid "input_cda: ioctl(CDROMCLOSETRAY) failed: %s\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMCLOSETRAY): %s\n" - -#~ msgid "input_cda: ioctl(CDROMEJECT) failed: %s\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMEJECT): %s\n" - -#~ msgid "input_cda: ioctl(CDROM_DRIVE_STATUS) failed: %s\n" -#~ msgstr "input_cda: selhalo ioctl(CDROM_DRIVE_STATUS): %s\n" - -#~ msgid "input_cda: ioctl(CDROMALLOW) failed: %s\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMALLOW): %s\n" - -#~ msgid "input_cda: ioctl(CDIOREADTOCHEADER) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDIOREADTOCHEADER): %s.\n" - -#~ msgid "input_cda: ioctl(CDROMREADTOCHDR) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMREADTOCHDR): %s.\n" - -#~ msgid "input_cda: ioctl(CDIOREADTOCENTRYS) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDIOREADTOCENTRYS): %s.\n" - -#~ msgid "input_cda: ioctl(CDROMREADTOCENTRY) failed: %s.\n" -#~ msgstr "input_cda: selhalo ioctl(CDROMREADTOCENTRY): %s.\n" - -#~ msgid "input_cda: malformed MRL. Use cda:/<track #>\n" -#~ msgstr "input_cda: neplatné MRL. Použijte cda://<stopa #>\n" - -#~ msgid "input_cda: invalid track %d (valid range: 1 .. %d)\n" -#~ msgstr "input_cda: neplatná stopa %d (platný rozsah: 1 .. %d)\n" - -#~ msgid "input_cda: error seek to origin %d not implemented!\n" -#~ msgstr "input_cda: posuv na cÃl typu %d nenà implementován!\n" - -#~ msgid "demux_qt: Apple Quicktime file, %srunning time: %d min, %d sec\n" -#~ msgstr "demux_qt: Soubor Apple Quicktime, %sdoba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "demux_qt: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_qt: '%c%c%c%c' video @ %dx%d\n" - -#~ msgid "demux_qt: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_qt: '%c%c%c%c' zvuk @ %d Hz, %d bitů, %d %s\n" - -#~ msgid "demux_film: FILM version %c%c%c%c, running time: %d min, %d sec\n" -#~ msgstr "demux_film: FILM verze %c%c%c%c, doba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "demux_film: %c%c%c%c video @ %dx%d, %d Hz playback clock\n" -#~ msgstr "demux_film: %c%c%c%c video @ %dx%d, hodiny pro pÅ™ehrávánà %d Hz\n" - -#~ msgid "demux_film: %d Hz, %d-bit %s%s PCM audio\n" -#~ msgstr "demux_film: %d Hz, %d-bitový %s%s PCM zvuk\n" - -#~ msgid "demux_roq: RoQ file, video is %dx%d, %d frames/sec\n" -#~ msgstr "demux_roq: Soubor RoQ, video je %dx%d, %d snÃmků/s\n" - -#~ msgid "demux_roq: 16-bit, 22050 Hz %s RoQ DPCM audio\n" -#~ msgstr "demux_roq: 16 bitů, 22050 Hz %s RoQ DPCM zvuk\n" - -#~ msgid "demux_fli: FLI type: %04X, speed: %d/%d\n" -#~ msgstr "demux_fli: typ FLI: %04X, rychlost: %d/%d\n" - -#~ msgid "demux_fli: %d frames, %dx%d\n" -#~ msgstr "demux_fli: %d rámců, %dx%d\n" - -#~ msgid "demux_fli: running time: %d min, %d sec\n" -#~ msgstr "demux_fli: doba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "demux_idcin: Id CIN file, video is %dx%d, 14 frames/sec\n" -#~ msgstr "demux_idcin: Soubor Id CIN, video je %dx%d, 14 snÃmků/s\n" - -#~ msgid "demux_idcin: %d-bit, %d Hz %s PCM audio\n" -#~ msgstr "demux_idcin: %d-bitový, %d Hz %s PCM zvuk\n" - -#~ msgid "demux_smjpeg: SMJPEG file, running time: %d min, %d sec\n" -#~ msgstr "demux_smjpeg: Soubor SMJPEG, doba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "demux_smjpeg: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_smjpeg: '%c%c%c%c' video @ %dx%d\n" - -#~ msgid "demux_smjpeg: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_smjpeg: '%c%c%c%c' zvuk @ %d Hz, %d bitů, %d %s\n" - -#~ msgid "demux_wav: format 0x%X audio, %d Hz, %d bits/sample, %d %s\n" -#~ msgstr "demux_wav: formát zvuku 0x%X, %d Hz, %d bitů/vzorek, %d %s\n" - -#~ msgid "demux_wav: running time = %lld min, %lld sec\n" -#~ msgstr "demux_wav: doba pÅ™ehrávánà = %lld min, %lld s\n" - -#~ msgid "demux_wav: average bytes/sec = %d, block alignment = %d\n" -#~ msgstr "demux_wav: průmÄ›rnÄ› %d bytů/s, zarovnánà bloku %d\n" - -#~ msgid "demux_aiff: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_aiff: %d Hz, %d kanálů, %d bitů, %d snÃmků\n" - -#~ msgid "demux_aiff: running time: %d min, %d sec\n" -#~ msgstr "demux_aiff: doba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "demux_snd: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_snd: %d Hz, %d kanálů, %d bitů, %d snÃmků\n" - -#~ msgid "demux_snd: running time: %d min, %d sec\n" -#~ msgstr "demux_snd: doba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "" -#~ "demux_voc: VOC format 0x%X audio, %d Hz, running time: %d min, %d sec\n" -#~ msgstr "" -#~ "demux_voc: formát zvuku VOC 0x%X, %d Hz, doba pÅ™ehrávánÃ: %d min, %d s\n" - -#~ msgid "subtitle time offset in 1/100 sec" -#~ msgstr "Äasový posun titulků v 1/100 s" - -#~ msgid "target encoding for subtitles (have to match font encoding)" -#~ msgstr "cÃlové kódovánà titulků (musà souhlasit s kódovánÃm fontu)" - -#~ msgid "xine audio output plugin using arts-compliant audio devices/drivers" -#~ msgstr "zvukový výstupnà modul xine použije zvuková zaÅ™ÃzenÃ/ovladaÄe arts" - -#~ msgid "allow illegal vlc codes in mpeg4 streams" -#~ msgstr "dovolit nepÅ™Ãpustné kódy VLC v sekvencÃch mpeg4" - -#~ msgid "demux_vqa.c: input not seekable, can not handle!\n" -#~ msgstr "" -#~ "demux_vqa.c: u tohoto vstupu nelze nastavovat pozici v datech, nelze " -#~ "zpracovat!\n" - -#~ msgid "demux_vqa: %dx%d VQA video; %d-channel %d Hz IMA ADPCM audio\n" -#~ msgstr "demux_vqa: %dx%d video VQA; %d-kanálový %d Hz IMA ADPCM zvuk\n" - -#~ msgid "demux_ts: FIXME: (unsupported )PAT spans multiple TS packets\n" -#~ msgstr "demux_ts: FIXME: (nepodporováno) PAT pÅ™esahuje vÃce paketů TS\n" - -#~ msgid "" -#~ "demux_ts: FIXME: (unsupported) PAT consists of multiple (%d) sections\n" -#~ msgstr "demux_ts: FIXME: (nepodporováno) PAT se skládá z vÃce (%d) sekcÃ\n" - -#~ msgid "" -#~ "demux_ts: demux error! PAT with invalid CRC32: packet_crc32: %.8x " -#~ "calc_crc32: %.8x\n" -#~ msgstr "" -#~ "demux_ts: chyba z demultiplexoru! PAT s neplatným CRC32: packet_crc32: " -#~ "%.8x calc_crc32: %.8x\n" - -#~ msgid "demux_ts: error %02x %02x %02x (should be 0x000001)\n" -#~ msgstr "demux_ts: chyba %02x %02x %02x (mÄ›lo by být 0x000001)\n" - -#~ msgid "fifo unavailable (%d)\n" -#~ msgstr "nedostupné fifo (%d)\n" - -#~ msgid "demux_ts: unexpected cc %d (expected %d)\n" -#~ msgstr "demux_ts: neoÄekávané cc %d (oÄekáváno: %d)\n" - -#~ msgid "demux_ts: corrupted pes encountered\n" -#~ msgstr "demux_ts: vyskytla se poruÅ¡ená hlaviÄka PES\n" - -#~ msgid "demux error! PMT with invalid pointer\n" -#~ msgstr "chyba z demultiplexoru! PMT s neplatným ukazatelem\n" - -#~ msgid "" -#~ "demux_ts: demux error! PMT with invalid CRC32: packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" -#~ msgstr "" -#~ "demux_ts: chyba z demultiplexoru! PMT s neplatným CRC32: packet_crc32: %" -#~ "#.8x calc_crc32: %#.8x\n" - -#~ msgid "demux error! PMT with inconsistent progInfo length\n" -#~ msgstr "chyba z demultiplexoru! PMT s nekonzistentnà délkou progInfo\n" - -#~ msgid "demux error! PMT with inconsistent streamInfo length\n" -#~ msgstr "chyba z demultiplexoru! PMT s nekonzistentnà délkou streamInfo\n" - -#~ msgid "demux error! invalid ts sync byte %.2x\n" -#~ msgstr "chyba z demultiplexoru! neplatný synchronizaÄnà byte ts %.2x\n" - -#~ msgid "demux error! transport error\n" -#~ msgstr "chyba z demultiplexoru! chyba pÅ™enosu\n" - -#~ msgid "demux_ts: demux error! invalid payload size %d\n" -#~ msgstr "demux_ts: chyba z demultiplexoru! neplatná velikost dat %d\n" - -#~ msgid "valid mrls for ts demuxer" -#~ msgstr "platná MRL pro demultiplexor TS" - -#~ msgid "demux %u ts_open!\n" -#~ msgstr "demultiplexor %u ts_open!\n" - -#~ msgid "valid mrls ending for ts demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor TS" - -#~ msgid "input_vcd : error in ioctl CDROMREADTOCHDR\n" -#~ msgstr "input_vcd : chyba pÅ™i ioctl CDROMREADTOCHDR\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY for track %d\n" -#~ msgstr "input_vcd: chyba pÅ™i ioctl CDROMREADTOCENTRY pro stopu %d\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY for lead-out\n" -#~ msgstr "input_vcd: chyba pÅ™i ioctl CDROMREADTOCENTRY pro lead-out\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY\n" -#~ msgstr "input_vcd: chyba pÅ™i ioctl CDROMREADTOCENTRY\n" - -#~ msgid "scsi command failed with status %d\n" -#~ msgstr "pÅ™Ãkaz scsi selhal s výsledkem %d\n" - -#~ msgid "input_vcd: error in CDRIOCSETBLOCKSIZE %d\n" -#~ msgstr "input_vcd: chyba pÅ™i ioctl CDRIOCSETBLOCKSIZE %d\n" - -#~ msgid "input_vcd: error in CDROMREADRAW\n" -#~ msgstr "input_vcd: chyba pÅ™i ioctl CDROMREADRAW\n" - -#~ msgid "input_vcd: seek error %d\n" -#~ msgstr "input_vcd: chyba pÅ™i posuvu %d\n" - -#~ msgid "input_vcd: read error %d\n" -#~ msgstr "input_vcd: chyba Ätenà %d\n" - -#~ msgid "input_vcd: error seek to origin %d not implemented!\n" -#~ msgstr "input_vcd: posuv na cÃl typu %d nenà implementován!\n" - -#~ msgid "input_vcd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_vcd: selhalo ioctl CDROMCLOSETRAY: %s\n" - -#~ msgid "input_vcd: CDROMEJECT failed: %s\n" -#~ msgstr "input_vcd: selhalo ioctl CDROMEJECT: %s\n" - -#~ msgid "input_vcd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_vcd: selhalo ioctl CDROM_DRIVE_STATUS: %s\n" - -#~ msgid "vcd_read_toc failed\n" -#~ msgstr "selhala funkce vcd_read_toc\n" - -#~ msgid "valid mrls ending for elementary demuxer" -#~ msgstr "platná zakonÄenà MRL pro základnà demultiplexor" - -#~ msgid "valid mrls for mpeg demuxer" -#~ msgstr "platná zakonÄenà pro demultiplexor MPEG" - -#~ msgid "demux_mpeg: please specify mpeg(mpeg1/mpeg2) stream type.\n" -#~ msgstr "demux_mpeg: prosÃm uveÄte typ mpegu (mpeg1/mpeg2).\n" - -#~ msgid "valid mrls ending for mpeg demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor MPEG" - -#~ msgid "valid mrls ending for ogg demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor OGG" - -#~ msgid "valid mrls for mpeg block demuxer" -#~ msgstr "platná MRL pro blokový demultiplexor MPEG" - -#~ msgid "valid mrls ending for mpeg block demuxer" -#~ msgstr "platná zakonÄenà MRL pro blokový demultiplexor MPEG" - -#~ msgid "valid mrls ending for smjpeg demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor SMJPEG" - -#~ msgid "valid mrls ending for aiff demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor AIFF" - -#~ msgid "valid mrls ending for snd demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor SND" - -#~ msgid "valid mrls ending for voc demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor VOC" - -#~ msgid "valid mrls ending for vqa demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor VQA" - -#~ msgid "valid mrls ending for avi demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor AVI" - -#~ msgid "valid mrls ending for mpeg audio demuxer" -#~ msgstr "platná zakonÄenà pro zvukový demultiplexor MPEG" - -#~ msgid "valid mrls ending for qt demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor QT" - -#~ msgid "valid mrls ending for asf demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor ASF" - -#~ msgid "valid mrls ending for film demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor FILM" - -#~ msgid "demux_film: unknown video codec %c%c%c%c\n" -#~ msgstr "demux_film: neznámý kodek videa %c%c%c%c\n" - -#~ msgid "valid mrls ending for roq demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor ROQ" - -#~ msgid "valid mrls ending for idcin demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor IdCIN" - -#~ msgid "valid mrls ending for wav demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor WAV" - -#~ msgid "valid mrls ending for mve demuxer" -#~ msgstr "platná zakonÄenà MRL pro demultiplexor MVE" - -#~ msgid "lstat failed for %s{%s}\n" -#~ msgstr "selhalo lstat pro %s{%s}\n" - -#~ msgid "%s(%d): readlink() failed: %s\n" -#~ msgstr "%s(%d): selhal readlink(): %s\n" - -#~ msgid "input_file: get optional data, type %08x, sub %p\n" -#~ msgstr "input_file: volitelná data, typ %08x, podtyp %p\n" - -#~ msgid "Xv property" -#~ msgstr "vlastnost Xv" - -#~ msgid "xine_notify_stream_finished: can't create new thread (%s)\n" -#~ msgstr "xine_notify_stream_finished: nelze vytvoÅ™it nové vlákno (%s)\n" - -#~ msgid "demux_avi: video format = %s\n" -#~ msgstr "demux_avi: video formát = %s\n" - -#~ msgid "demux_avi: video frame size %ld x %ld\n" -#~ msgstr "demux_avi: velikost rámce videa %ld x %ld\n" - -#~ msgid "demux_avi: audio format[%d] = 0x%lx\n" -#~ msgstr "demux_avi: zvukový formát[%d] = 0x%lx\n" - -#~ msgid "demux_avi: unknown audio type 0x%lx\n" -#~ msgstr "demux_avi: neznámý typ zvuku 0x%lx\n" - -#~ msgid "demux_avi: audio type %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_avi: typ zvuku: %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_avi: unknown video codec '%.4s'\n" -#~ msgstr "demux_avi: neznámý kodek videa: '%.4s'\n" - -#~ msgid "demux_avi: video codec is '%s'\n" -#~ msgstr "demux_avi: kodek videa je '%s'\n" - -#~ msgid "demux_mpgaudio: MPEG %s Layer %d %ldkbps\n" -#~ msgstr "demux_mpgaudio: MPEG %s Layer %d %ld kb/s\n" - -#~ msgid "demux_asf: audio format : %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_asf: zvukový formát: %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_asf: video format : %s\n" -#~ msgstr "demux_asf: formát videa: %s\n" - -#~ msgid "demux_asf: stream length is %d sec, rate is %d bytes/sec\n" -#~ msgstr "demux_asf: délka videa je %d s, rychlost dat je %d bytů/s\n" - -#~ msgid "demux_asf: title : %s\n" -#~ msgstr "demux_asf: název : %s\n" - -#~ msgid "demux_asf: author : %s\n" -#~ msgstr "demux_asf: autor : %s\n" - -#~ msgid "demux_asf: comment : %s\n" -#~ msgstr "demux_asf: komentář : %s\n" - -#~ msgid "demux_mpeg_block: unknown block size. try using demux_mpeg.\n" -#~ msgstr "" -#~ "demux_mpeg_block: Neznámá velikost bloku. Zkuste použÃt demux_mpeg.\n" - -#~ msgid "system layer format '%s' detected.\n" -#~ msgstr "systémová vrstva zjistila formát '%s'.\n" - -#~ msgid "stream format" -#~ msgstr "formát dat" - -#~ msgid "" -#~ "demux_ts: plugin doesn't support plugin API version %d.\n" -#~ " This means there's a version mismatch between xine and this " -#~ "demuxer plugin.\n" -#~ " Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ts: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ " Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo " -#~ "pomoci.\n" - -#~ msgid "" -#~ "demux_avi: this plugin doesn't support plugin API version %d.\n" -#~ "demux_avi: this means there's a version mismatch between xine and this " -#~ "demux_avi: demuxer plugin.\n" -#~ "Installing current demuxer plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: tento modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_elem: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_elem: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_mpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_pes: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_qt: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_ogg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_asf: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_cda: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_cda: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_film: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_film: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_mpeg_block: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg_block: modul nepodporuje programové rozhranà modulů ve verzi %" -#~ "d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_roq: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_roq: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_idcin: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_idcin: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_smjpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins " -#~ "should help.\n" -#~ msgstr "" -#~ "demux_smjpeg: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "demux_wav: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_wav: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " demultiplexnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch demultiplexnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "net input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Modul pro vstup ze sÃtÄ› nepodporuje programové rozhranà ve verzi %d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "rtp input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Vstupnà modul rtp nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "stdin/fifo input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Vstupnà modul stdin/fifo nepodporuje programové rozhranà modulů ve verzi %" -#~ "d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "file input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Modul pro vstup ze souborů nepodporuje programové rozhranà ve verzi %d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "vcd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Modul pro vstup z VCD nepodporuje programové rozhranà ve verzi %d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "http input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Modul pro vstup pomocà protokolu http nepodporuje programové rozhranà ve " -#~ "verzi %d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "cda input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Vstupnà modul cda nepodporuje programové rozhranà ve verzi %d.\n" -#~ "MODUL NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "libmpeg2: plugin doesn't support plugin API version %d.\n" -#~ "libmpeg2: this means there's a version mismatch between xine and this " -#~ "libmpeg2: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libmpeg2: tento modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "libmpg123: plugin doesn't support plugin API version %d.\n" -#~ "libmpg123: this means there's a version mismatch between xine and this " -#~ "libmpg123: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libmpg123: tento modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "libspudec: Doesn't support plugin API version %d.\n" -#~ "libspudec: This means there is a version mismatch between XINE and\n" -#~ "libspudec: this plugin.\n" -#~ msgstr "" -#~ "libspudec: Nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi XINE a\n" -#~ " tÃmto modulem.\n" - -#~ msgid "" -#~ "w32codec: plugin doesn't support plugin API version %d.\n" -#~ "w32codec: this means there's a version mismatch between xine and this " -#~ "w32codec: decoder plugin.\n" -#~ "Installing current decoder plugins should help.\n" -#~ msgstr "" -#~ "w32codec: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů na dekódovánà by mÄ›lo pomoci.\n" - -#~ msgid "%s(%d) wrong first stage = %d !!\n" -#~ msgstr "%s(%d) chybná prvnà fáze (%d) !!\n" - -#~ msgid "%s(%s@%d): parameter should be non null, exiting\n" -#~ msgstr "%s(%s@%d): parametr by nemÄ›l být null, konec\n" - -#~ msgid "load_plugins: demux plugin found : %s\n" -#~ msgstr "load_plugins: nalezen demultiplexnà modul : %s\n" - -#~ msgid "load_plugins: too many demux plugins installed, exiting.\n" -#~ msgstr "" -#~ "load_plugins: instalováno pÅ™ÃliÅ¡ mnoho demultiplexnÃch modulů, konec.\n" - -#~ msgid "" -#~ "load_plugins: %s is no valid input plugin (lacks init_input_plugin() " -#~ "function)\n" -#~ msgstr "" -#~ "load_plugins: %s nenà platný vstupnà modul (postrádá se funkce " -#~ "init_input_plugin()\n" - -#~ msgid "%s(%d): too many input plugins installed, exiting.\n" -#~ msgstr "%s(%d): instalováno pÅ™ÃliÅ¡ mnoho modulů, konec.\n" - -#~ msgid "" -#~ "load_plugins: no input plugins found in %s! - Did you install xine " -#~ "correctly??\n" -#~ msgstr "" -#~ "load_plugins: v adresáři %s nenalezen žádný vstupnà modul! - Byl xine " -#~ "korektnÄ› nainstalován??\n" - -#~ msgid "spu decoder plugin found : %s\n" -#~ msgstr "nalezen dekodér titulků : %s\n" - -#~ msgid "" -#~ "liblpcm: plugin doesn't support plugin API version %d.\n" -#~ "liblpcm: this means there's a version mismatch between xine and this " -#~ "liblpcm: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "liblpcm: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "ffmpeg: plugin doesn't support plugin API version %d.\n" -#~ "ffmpeg: this means there's a version mismatch between xine and this " -#~ "ffmpeg: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "ffmpeg: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "dxr3_decode_spu: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_spu: this means there's a version mismatch between xine and " -#~ "this dxr3_decode_spu: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "dx3_decode_spu: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "dxr3_decode_video: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_video: this means there's a version mismatch between xine and " -#~ "this\n" -#~ "dxr3_decode_video: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "dx3_decode_video: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "Dxr3: video decoder priority" -#~ msgstr "Dxr3: priorita dekodéru videa" - -#~ msgid "" -#~ "Decoder priorities greater 5 enable hardware decoding, 0 disables it." -#~ msgstr "" -#~ "Priority dekodéru vÄ›tšà než 5 povolà hardwarové dekódovánÃ, 0 ho zakáže." - -#~ msgid "" -#~ "libmad: plugin doesn't support plugin API version %d.\n" -#~ "libmad: this means there's a version mismatch between xine and this " -#~ "libmad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libmad: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "liba52: plugin doesn't support plugin API version %d.\n" -#~ "liba52: this means there's a version mismatch between xine and this " -#~ "liba52: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "liba52: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "libdts: plugin doesn't support plugin API version %d.\n" -#~ "libdts: this means there's a version mismatch between xine and this " -#~ "libdts: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libdts: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "divx4: plugin doesn't support plugin API version %d.\n" -#~ "divx4: this means there's a version mismatch between xine and this divx4: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "divx4: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "priority of the divx4 plugin (>5 => enable)" -#~ msgstr "priorita modulu divx4 (>5 => povolit)" - -#~ msgid "" -#~ "libvorbis: plugin doesn't support plugin API version %d.\n" -#~ "libvorbis: this means there's a version mismatch between xine and this " -#~ "libvorbis: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libvorbis: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "libsputext: doesn't support plugin api version %d.\n" -#~ "libsputext: This means there is a version mismatch between xine and\n" -#~ "libsputext: this plugin.\n" -#~ msgstr "" -#~ "libsputext: nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a \n" -#~ " tÃmto modulem.\n" - -#~ msgid "" -#~ "libspucc: doesn't support plugin api version %d.\n" -#~ "libspucc: This means there is a version mismatch between xine and\n" -#~ "libspucc: this plugin.\n" -#~ msgstr "" -#~ "libspucc: nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a \n" -#~ " tÃmto modulem.\n" - -#~ msgid "" -#~ "xvid: plugin doesn't support plugin API version %d.\n" -#~ "xvid: this means there's a version mismatch between xine and this\n" -#~ "xvid: decoder plugin. Installing current plugins should help.\n" -#~ msgstr "" -#~ "xvid: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "priority of the xvid plugin (>5 => enable)" -#~ msgstr "priorita modulu xvid (>5 => povolit)" - -#~ msgid "" -#~ "cinepak: plugin doesn't support plugin API version %d.\n" -#~ "cinepak: this means there's a version mismatch between xine and this " -#~ "cinepak: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "cinepak: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "RoQ: plugin doesn't support plugin API version %d.\n" -#~ "RoQ: this means there's a version mismatch between xine and this RoQ: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "RoQ: modul nepodporuje programové rozhranà modulů ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "" -#~ "RoQ Audio: plugin doesn't support plugin API version %d.\n" -#~ "RoQ Audio: this means there's a version mismatch between xine and this\n" -#~ "RoQ Audio: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "RoQ Audio: modul nepodporuje programové rozhranà ve verzi %d.\n" -#~ " Toto znamená nesluÄitelnost verzà mezi xine a tÃmto\n" -#~ " dekódovacÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "USCSICMD dvd_read_copyright: %s" -#~ msgstr "USCSICMD dvd_read_copyright: %s" - -#~ msgid "bad status: READ DVD STRUCTURE (copyright)\n" -#~ msgstr "neúspÄ›ch: ÄŒTENà STRUKTURY DVD (autorská práva)\n" - -#~ msgid "input_dvd: Could not read Copyright Structure\n" -#~ msgstr "input_dvd: NeÅ¡lo pÅ™eÄÃst strukturu s autorskými právy\n" - -#~ msgid "" -#~ "input_dvd: Could not read Copyright Structure.\n" -#~ " Assuming disk is not encrypted.\n" -#~ msgstr "" -#~ "input_dvd: NeÅ¡lo pÅ™eÄÃst strukturu s autorskými právy.\n" -#~ " Bude se pÅ™edpokládat, že disk nenà zaÅ¡ifrovaný.\n" - -#~ msgid "" -#~ "\n" -#~ "input_dvd: Sorry, this plugin doesn't play encrypted DVDs. The legal " -#~ "status\n" -#~ " of CSS decryption is unclear and we can't provide such code.\n" -#~ " Please check http://dvd.sf.net for more information.\n" -#~ msgstr "" -#~ "\n" -#~ "input_dvd: Litujeme, xine nepÅ™ehrává zaÅ¡ifrovaná DVD. Legálnà status CSS\n" -#~ " deÅ¡ifrovánà je nejasný a my neposkytujeme takový kód.\n" -#~ " VÃce informacà zÃskáte na adrese http://dvd.sf.net\n" - -#~ msgid "input_dvd: Unable to find >%s< on dvd.\n" -#~ msgstr "input_dvd: Na DVD nelze nalézt >%s<.\n" - -#~ msgid "input_dvd: error read: %Ld bytes is not a sector!\n" -#~ msgstr "input_dvd: chyba ÄtenÃ: %Ld bytů nenà sektor!\n" - -#~ msgid "input_dvd: read error in input_dvd plugin (%s)\n" -#~ msgstr "input_dvd: chyba Ätenà v modulu input_dvd (%s)\n" - -#~ msgid "input_dvd: short read in input_dvd (%d != %d)\n" -#~ msgstr "input_dvd: krátké Ätenà v modulu input_dvd (%d != %d)\n" - -#~ msgid "" -#~ "input_dvd: error in input_dvd plugin read: %Ld bytes is not a sector!\n" -#~ msgstr "input_dvd: chyba Ätenà v modulu input_dvd: %Ld bytů nenà sektor!\n" - -#~ msgid "input_dvd: seek: %d is an unknown origin\n" -#~ msgstr "input_dvd: seek: %d je neznámý poÄátek\n" - -#~ msgid "input_dvd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_dvd: ioctl CDROMCLOSETRAY selhalo: %s\n" - -#~ msgid "input_dvd: CDROMEJECT failed: %s\n" -#~ msgstr "input_dvd: ioctl CDROMEJECT selhalo: %s\n" - -#~ msgid "input_dvd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_dvd: ioctl CDROM_DRIVE_STATUS selhalo: %s\n" - -#~ msgid "ioctl(cdromallow): %s" -#~ msgstr "ioctl(cdromallow): %s" - -#~ msgid "ioctl(cdromeject): %s" -#~ msgstr "ioctl(cdromeject): %s" - -#~ msgid "" -#~ "dvd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "vstupnà modul pro DVD nepodporuje programové rozhranà %d.\n" -#~ "PLUGIN NEAKTIVNÃ.\n" -#~ "Toto znamená nesluÄitelnost verzà mezi xine a tÃmto vstupnÃm modulem.\n" -#~ "Nainstalovánà aktuálnÃch vstupnÃch modulů by mÄ›lo pomoci.\n" - -#~ msgid "path to your local dvd device file" -#~ msgstr "cesta k vaÅ¡emu souboru DVD zaÅ™ÃzenÃ" - -#~ msgid "unable to open %s: %s." -#~ msgstr "nelze otevÅ™Ãt %s: %s." - -#~ msgid "" -#~ "demux_qt: video codec %s (%f fps), audio codec %s (%ld Hz, %d bits)\n" -#~ msgstr "" -#~ "demux_qt: video kodek %s (%f snÃmků/s), zvukový kodek %s (%ld Hz, %d " -#~ "bitů)\n" - -#~ msgid "demux_ts: PUSI set but no PES header (corrupt stream?)\n" -#~ msgstr "" -#~ "demux_ts: nastaven pÅ™Ãznak PUSI, ale nenalezena hlaviÄka PES (poruÅ¡ená " -#~ "data?)\n" - -#~ msgid "RE-Sync failed\n" -#~ msgstr "Resynchronizace selhala\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xine-lib 1.1.6\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2007-04-18 11:00+0200\n" "Last-Translator: Philipp Hahn <pmhahn@users.sf.net>\n" "Language-Team: German <de@li.org>\n" @@ -50,6 +50,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() von %s schlug fehl: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" "audio_alsa_out: >>> Überprüfen Sie, ob ein anderen Programm PCM bereits " @@ -168,11 +169,13 @@ msgstr "snd_pcm_open() schlug fehl:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Überprüfen Sie, ob ein anderen Programm bereis PCM benutzt <<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "Lautsprecherplazierung" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -234,78 +237,78 @@ msgstr "" "kann, die Sie über den digitalen Ausgang Ihrer Soundkarte abspielen wollen." #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : Unterstützte Modi sind " - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8Bit " +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : Unterstützte Modi sind" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16Bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8Bit" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24Bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16Bit" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32Bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24Bit" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "Mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32Bit" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "Stereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " Mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-Kanal " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " Stereo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4-Kanal nicht aktiviert in xine Konfiguration) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-Kanal" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1-Kanal " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4-Kanal nicht aktiviert in xine Konfiguration)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-Kanal nicht aktiviert in xine Konfiguration) " +msgid " 4.1-channel" +msgstr " 4.1-Kanal" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5-Kanal " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-Kanal nicht aktiviert in xine Konfiguration)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5-Kanal nicht aktiviert in xine Konfiguration) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5-Kanal" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1-Kanal " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5-Kanal nicht aktiviert in xine Konfiguration)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-Kanal nicht aktiviert in xine Konfiguration) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-Kanal" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "a/52 und DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-Kanal nicht aktiviert in xine Konfiguration)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(a/52 und DTS pass-through nicht aktiviert in xine Konfiguration)\n" +msgid " a/52 and DTS pass-through" +msgstr " a/52 und DTS pass-through" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (a/52 und DTS pass-through nicht aktiviert in xine Konfiguration)" + +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "ALSA Mixergerät" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." @@ -313,7 +316,7 @@ msgstr "" "xine benutzt dieses ALSA Mixergerät, um die Lautstärke zu ändern.\n" "Lesen Sie die ALSA-Dokumentation für Informationen zu ALSA-Geräten." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "xine Soundausgabe benutzt ALSA-kompatibles Gerät/Treiber" @@ -325,205 +328,187 @@ msgstr "xine Soundausgabe benutzt kde artsd" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "xine Soundausgabe benutzt Coreaudio/Mac OS X" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "Fehler" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "Erfolg" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "Zugriff verweigert" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "Ressource bereits in Benutzung" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "Objekt bereits initialisiert" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "Angegebenes wave-Format nicht unterstützt" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "Speicherpuffer verloren und muß wiederhergesteööt werden" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "Angeforderter Puffereinstellung nicht verfügbar" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "Unbestimmter Fehler in DirectSound-System" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "DirectSound-Hardware nicht verfügbar" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "Funktion ist ungültig im aktuellen Zustand des Objekts" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "Ungültiger Parameter wurde übergeben" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "Objekt unterstützt keine Aggregation" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "Kein Sound-Treiber verfügbar" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "Angeforderte COM-Schnittstelle nicht verfügbar" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "Eine andere Anwendung hat eine höhere Priorität" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "Ungenügend Speicher" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "Niedrige Priorität für diese Funktion" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "DirectSound wurde nicht initialisiert" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "Funtkion wird nicht unterstützt" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "Unbekannter Fehler" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "Kann DirectSound-Objekt nicht erzeugen." -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "Konnte DirectSound-Kooperationslevel nicht setzen." -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "Konnte keinen sekundären DirectSound-Puffer erzeugen" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "Konnte kein Pufferposition-Ereignis erzeugen." - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "Konnte Benachrichtigungs-Schnittstelle nicht bekommen " - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "Konnte Benachrichtigungs-Position nicht setzen" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "Konnte Soundpuffer nicht wiedergeben" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "Konnte Soundpuffer nicht stoppen" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "Konnte Pufferposition nicht ermitteln" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "Konnte Pufferposition nicht setzen" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "Konnte Lautstärke nicht setzen" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": Puffer verloren, versuche wiederherzustellen\n" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "Konnte DirectSound-Puffer nicht belegen" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "Konnte DirectSound-Puffer nicht freigeben" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "Konnte keinen primären DirectSound-Puffer erzeugen." -#: src/audio_out/audio_directx2_out.c:632 -#, c-format -msgid ": play cursor overran, flushing buffers\n" +#: src/audio_out/audio_directx2_out.c:596 +#, fuzzy, c-format +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr ": Wiedergabeposition überrannt, leere Puffer\n" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr ": %ld msec verzögert\n" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": Kann PThread-Bedingung nicht erzeugen: %s\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": Kann PThread-Mutex nicht erzeugen: %s\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": Kann Puffer-PThread nicht erzeugen: %s\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": Kann Puffer-PThread nicht freigeben: %s\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ": Kann PThread-Bedigung nicht freigeben: %s\n" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": Kann PThread-Mutex nicht freigeben: %s\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr ": Unbekanntes Steuerkommando %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "2. xine Soundausgabe benutzt directx" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "xine Soundausgabe benutzt directx für win32" @@ -533,6 +518,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: Verbinde ESD Server %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: Verbinde ESD Server...\n" @@ -545,7 +531,7 @@ msgstr "audio_esd_out: Kann ESD Server %s nicht verbinden: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "Verzögerung der esd Audioausgabe (Verändert A/V Synchronisation)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -584,7 +570,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "xine Soundausgabe benutzt IRIX-kompatibles Gerät/Treiber" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "OSS Audio-Gerätename" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "xine Soundausgabe für JACK Audio System" @@ -610,11 +607,11 @@ msgstr "" msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "audio_oss_out: Audiodatenrate: %d gefordert, %d genutzt von Gerät\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "OSS Audio-Gerätename" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" @@ -625,11 +622,11 @@ msgstr "" "Wählen Sie \"auto\", falls xine automatisch die korrekte Einstellung wählen " "soll." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "OSS Audio-Gerätename, -1 für keinen" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -645,20 +642,22 @@ msgstr "" "Der gültige Bereich ist -1 oder 0-15. Diese Einstellung wird ignoriert, " "falls OSS Audio-Gerätenamen auf \"auto\" steht." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "audio_oss_out: audio.device.oss_device_name = auto, suche Geräte\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: Automatische Suche nach Audiogeräten schlug fehl\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: Benutze Gerät >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -667,11 +666,11 @@ msgstr "" "audio_oss_out: Öffnen des Audiogeräts %s schlug fehl:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "A/V Synchronisationmethode für OSS" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -729,7 +728,8 @@ msgstr "" "Ihr System keine ioctls zu Echtzeitwiedergabe anbietet und " "Synchronisationsprobleme nach langer Wiedergabe auftreten." -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -739,32 +739,39 @@ msgstr "" "audio_oss_out: ...System-Realzeituhr wird zur soft-Synchronisation benutzt\n" "audio_oss_out: ...es könnn Audio/Video-Synchronisationsprobleme auftreten\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "Verzögerung der OSS Audioausgabe (Verändert A/V Synchronisation)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: Audio-Realzeit-Synchronisation deaktiviert...\n" -"audio_oss_out: ...Untersuche Größe des Ausgabepuffers: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d Bytes\n" +"audio_oss_out: Audio-Realzeit-Synchronisation deaktiviert...\n" +"audio_oss_out: ...Untersuche Größe des Ausgabepuffers: %d Bytes\n" "audio_oss_out: ...es könnn Audio/Video-Synchronisationsprobleme auftreten\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: Unterstützte Modi sind" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr " a/52 pass-through" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (a/52 pass-through nicht aktiviert in xine Konfiguration)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "OSS Mixernummer, -1 für keine" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -780,24 +787,24 @@ msgstr "" "Der gültige Bereich ist -1 oder 0-15. Diese Einstellung wird ignoriert, " "falls OSS Audio-Gerätenamen auf \"auto\" steht." -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: open() Mixer %s schlug fehl: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "xine Soundausgabe benutzt OSS-kompatibles Gerät/Treiber" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "Gerät für Pulse-Audio" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "Benutze 'Server[:Senke]' um das Zeil des Puse-Audio Gerätes zu setzen." -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" msgstr "xine Soundausgabe benutzt Pulse-Audio Soundserver" @@ -832,30 +839,197 @@ msgstr "audio_sun_out: Audio ioctl auf Gerät %s schlug fehl: %s\n" msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "xine Soundausgabe benutzt SUN-kompatibles Gerät/Treiber" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: Vergrößere Puffer auf %d um Überlauf zu vermeiden.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_audio_dec: Konnte keinen ffmpeg-Dekoder für Puffertyp 0x%X finden\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: Besuche NULl-Codec zu öffnen\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: Konnte Dekoder nicht öffnen\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "dvaudio: Vergrößere Puffer auf %d um Überlauf zu vermeiden.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: Nichtunterstütztes Bildformat, DR1 deaktiviert.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: Nichtunterstütztes Bildformat, DR1 deaktiviert.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_video_dec: Konnte keinen ffmpeg-Dekoder für Puffertyp 0x%X finden\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: Konnte Dekoder nicht öffnen\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: Direktausgabe aktiviert\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_video_dec: Vergrößere Puffer auf %d um Überlauf zu vermeiden.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "Qualität der MPEG-4 Nachbearbeitungsstufe" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"Die Umfang der Nachbearbeitung bei MPEG-4 Videos kann angepasst werden.\n" +"Höhere Werte verwessern die Qualität zu Lasten der CPU-Belastunga. Niedrige " +"Werte können zu Defekten wie Artefakte führen. Bei hochqualitativen Inhalten " +"kann zu starke Nachbearbeitung das Bild durch zu starkes verwischen " +"verschlechtern." + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "libavcodec MPEG Ausgangsbitrate (kBit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" +"Bitrate für die MPEG-Enkodierungsbibliothek libavcodec zur DXR3 Enkodierung. " +"Höhere Werte verwessern die Qualität zu Lasten der CPU-Belastung.\n" +"Diese Einstellung ist nur wirksam, wenn der Modus für konstante Qualität " +"deaktiviert ist." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "Modus für konstante Qualität" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" +"Falls aktiviert benutzt libavcodec einen Modus für konstante Qualität, bei " +"der Bilder je nach Komplexität dynamische komprimiert werden. Anderenfalls " +"benutzt libavcodec eine Modus mit konstanter Bitrate." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "Minimale Kompression" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "Minimale Kompression für ein Bild im Modus konstanter Qualität" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "Maximaler Quantisierer" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "Maximale Kompression für ein Bild im Modus konstanter Qualität" + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: Warnung: Datenstrom id=%d ist verschlüsselt.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: Warnung: Datenstrom id=%d ist verschlüsselt.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Medienstrom gestört/verschlüsselt" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Stelle Index wiederher..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "demux_avi: Ungültiges AVI-Paket \"%c%c%c%c\" an Position %<PRIdMAX>\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: AVI-Index ist fehlerhaft\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -867,20 +1041,26 @@ msgstr "" msgid "invalid FILM chunk size\n" msgstr "Ungültige Größe des FILM-Pakets\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "Nicht erkanntes FILM-Paket\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "Nicht unterstützte FLV-Version (%d).\n" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "Weder ein Video- noch ein Audio-Datenstrom in dieser Datei.\n" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -896,7 +1076,8 @@ msgstr "iff-ilbm: Unbekannte Kompression: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: Unbekanntes Paket: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "demux_mpc: Bild zu grpß für Puffer" @@ -910,6 +1091,7 @@ msgstr "" "Entwicklern melden.\n" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -930,7 +1112,7 @@ msgstr "" "demux_mpeg_block: Warnung: PES-Header deutet an, das dieser Datenstrom " "verschlüsselt sein könnte (Verschlüsselungsmodus %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -939,20 +1121,20 @@ msgstr "" "xine-lib:demux_mpeg_ps: Unbekannte Strom-Id 0x%02x. Bitte bei den xine-" "Entwicklern melden.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" "demux_mpeg_pes: Warnung: PACK-Datenstrom id=0x%x Dekodierung " "fehlgeschlagen.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" "demux_mpeg_pes: Warnung: PES-Header reserviert 10 Bits nicht gefunden\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -961,7 +1143,7 @@ msgstr "" "demux_mpeg_pes: Warnung: PES-Header deutet an, das dieser Datenstrom " "verschlüsselt sein könnte (Verschlüsselungsmodus %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -976,17 +1158,18 @@ msgstr "" msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" msgstr "ogg: vorbis Tonspur erkannt, aber kein Heder im Datenstrom gefunden.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: Ungültige Header-Parameter\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: Unbekannter Audiotyp: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "demux_tta: Gesamt-Bildanzahl zu hoch\n" @@ -1009,7 +1192,7 @@ msgstr "" msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "demux_wc3movie: SHOT Paket referenziert ungültige Palette (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "demux_wc3movie: Beim Laden der Palette ist ein Problem aufgetreten\n" @@ -1032,6 +1215,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: Öffnen des SPU-Geräts %s (%s) schlug fehl\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "Angeforderter Knopf nicht verfügbar\n" @@ -1120,6 +1304,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Öffnen des Video-Geräts %s (%s) schlug fehl\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: Schreibzugriff würde blockieren. Leeren\n" @@ -1134,6 +1319,7 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: WARNUNG: Unbekannter Code für Wiederholrate %d\n" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" @@ -1141,10 +1327,12 @@ msgstr "" "NTSC\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: Initialisierung von librte schlug fehl\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1153,10 +1341,12 @@ msgstr "" "sind\n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: rte-Kontext konnte nicht geholt werden.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: CODEC konnte nicht erzeugt werden.\n" @@ -1183,6 +1373,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: Kodierung kann nicht gestartet werden: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: FAME-Bibliothek konnte nicht gestartet werden\n" @@ -1290,20 +1481,24 @@ msgstr "" "sie ist veraltet und evtl. sogar defekt." #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" "video_out_dxr3: MPEG-Kodierer libavcodec konnte nicht initialisiert werden.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: MPEG-Kodierer rte konnte nicht initialisiert werden.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "" "video_out_dxr3: MPEG-Kodierer fame konnte nicht initialisiert werden.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1320,6 +1515,7 @@ msgstr "" "konfigurieren.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1442,6 +1638,7 @@ msgstr "" "Sie dies, falls Sie grüne Linien am oberen oder unteren Rand sehen." #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: Starten Sie autocal, Überlagerung deaktiviert\n" @@ -1466,10 +1663,12 @@ msgstr "" "default: Einstellungen der Karte beibehalten" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: Setzen des Videomodus schlug fehl.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" @@ -1478,37 +1677,38 @@ msgstr "" "Videos on dxr3\n" "video_out_dxr3: Lesen Sie README.dxr3 für Details.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: Fehler beim Lesen der Überlagerungsdatei. Starten Sie " "autocal!\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: Kann keine Verbindung zu '%s:%d' aufbauen\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: Verbindung zum CDDB-Server '%s:%d' steht.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "" "input_cdda: Kann keine Verbindung zum CDDB-Server '%s:%d' (%s) herstellen.\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "CD Digital Audio (CDDA)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "Gerät für CD-Audio" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." @@ -1516,11 +1716,11 @@ msgstr "" "Pfadangabe zum Gerät (normalerweise CD oder DVD Laufwerk), das zur " "Wiedergabe von Audio-CDs benutzt werden soll." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "CDDB abfragen" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1533,11 +1733,11 @@ msgstr "" "Informationen von einem Internetserver bezogen werden, der ein Profil Ihrer " "Hörgewohnheiten erstellen kann." -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "CDDB Servername" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1549,19 +1749,19 @@ msgstr "" "Ihren Hörgewohnheiten erhält und bösartige Antworten senden kann. Geben Sie " "nur einen Server ihres Vertrauens an." -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "CDDB Serverport" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "Der Serverport, vom dem Titelinformationen bezogen werden sollen." -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "CDDB Cacheverzeichnis" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1574,11 +1774,11 @@ msgstr "" "Namen innerhalb dieses Verzeichnises angelegt werden. Stellen Sie sicher, " "daß das Verzeichnis nur für CDDB Zwischenpufferung genutzt wird." -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "Laufwerk auf diesen Faktor verlangsamen" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1593,63 +1793,73 @@ msgstr "" "auf die Wiedergabeleistung haben sollte.\n" "Ein Wert von Null deaktiviert das Bremsen." -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, fuzzy, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_dvb: Öffnen der DVB-Kanaldatei '%s' schlug fehl\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, fuzzy, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_dvb: Öffnen der DVB-Kanaldatei '%s' schlug fehl\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: tuner_set_channel schlug fehl\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: Kann DVB-Gerät nicht öffnen\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "input_dvb: Kanal %d außerhalb des Bereis, benutzt 0\n" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: Suche nach Kanal %s\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" "input_dvb: Keine exakte Übereinstimmung für %s gefunden: versuche teilweise " "Übereinstimmung\n" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: Übereinstimmung mit Kanal %s gefunden\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "input_dvb: Kanal %s nicht in channels.conf gefunden, Standardkanal.\n" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" "input_dvb: Ungültige Kanalspezifikation, benutze zulest gesehenen Kanal.\n" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "input_dvb: Ungültige Kanalspezifikation, benutze Kanal 0\n" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" @@ -1657,7 +1867,8 @@ msgstr "" "input_dvb: DVB-S MRL angegeben, aber Tuner scheint kein QPSK (DVB-S) zu " "sein\n" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" @@ -1665,35 +1876,37 @@ msgstr "" "input_dvb: DVB-T MRL angegeben, aber Tuner scheint kein OFDM (DVB-T) zu " "sein\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" "input_dvb: DVB-C MRL angegeben, aber Tuner scheint kein QAM (DVB-C) zu sein\n" -#: src/input/input_dvb.c:2942 -#, fuzzy +#: src/input/input_dvb.c:2958 +#, fuzzy, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" "input_dvb: DVB-C MRL angegeben, aber Tuner scheint kein QAM (DVB-C) zu sein\n" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: Kann DVR-Gerät '%s' nicht öffnen\n" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_dvb: Kann EPG-Aktualisierungsthread nicht erstellen\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "Benutze DVB 'center cutout' (Zoom)" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." @@ -1701,15 +1914,15 @@ msgstr "" "Dies erlaubt Vollbildwiedergabe von 4:3 Inhalten, die in 16:9 übertragen " "werden." -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "DVB (Digital TV) Plugin" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "Zuletzt gesehenen DVB-Kanal vermerken" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " @@ -1717,52 +1930,71 @@ msgstr "" "Bei automatischer Widergabe wechselt xine zum zuletztgesehenen Kanal media." "dvb.last_channel. " -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "Zuletzt gesehener DVB-Kanal" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "Falls aktiviert vermerkt xine den Kanal und wechselt zu diesem. " -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "Nummer der zu benutzenden DVB-Karte." -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" "Belassen Sie den Wert 0, außer Sie haben mehr als eine Karte in ihrem System." -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "input_dvd: Werte von \\beta werden dom erhöhen!\n" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Fehler beim Lesen des nächsten Blocks von DVD (%s)\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Fehler beim Öffnen des DVD-Geräts\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "Gerät für DVD Wiedergabe" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." @@ -1770,11 +2002,11 @@ msgstr "" "Pfadangabe zum Gerät (normalerweise ein DVD Laufwerk), das zur Wiedergabe " "von DVDs benutzt werden soll." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "Pfad zum RAW-Device des DVD-Laufwerks" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1792,11 +2024,11 @@ msgstr "" "Lesen Sie die Dokumentation zu RAW-Devices (man raw) für weitere " "Informationen." -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "CSS Entschlüsselungsmethode" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " @@ -1807,11 +2039,11 @@ msgstr "" "Methoden, falls Probleme bei der Wiedergabe von verschlüsselten DVDs " "auftreten." -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "Pfad zum Titelschlüsselcache" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1827,11 +2059,11 @@ msgstr "" "daß das Verzeichnis nur für die Zwischenpufferung von DVD Titelschlüssel " "genutzt wird." -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "Region (1-8), aus der der DVD Player zu kommen scheint" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " @@ -1841,11 +2073,11 @@ msgstr "" "sich über ein falscher Regionscode beschwert wird. Dies hat nichts mit dem " "Regionscode im DVD-Laufwerk zu tun, dies ist nur für die Software." -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "Standardsprache für die DVD-Wiedergabe" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" @@ -1855,11 +2087,11 @@ msgstr "" "DVD dies unterstützt, werden Menüs und Titel in dieser Sparche angezeigt.\n" "Der Wert muß ein zweibuchstabiger ISO639-Sprachcode sein." -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "Vorauseilendes Caching benutzen" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " @@ -1869,11 +2101,11 @@ msgstr "" "Dies kann bei langsamen Laufwerken zu einer stotternden Wiedergabe führen, " "verbessert aber den Einfluß von DVD-Ebenenwechseln bei schnellen Laufwerken." -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "Einheit für die Überspringen-Aktion" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1908,11 +2140,11 @@ msgstr "" "Überspringt eine DVD-Titel, was eine Struktureinheit ist, die einem " "kompletten DVD Film entspricht" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "Einheit beim Suchen" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1936,11 +2168,11 @@ msgstr "" "Der Suchbereich umfaßt ein DVD-Programm, was eine Navigationseinheit ist, " "die einem Kapitel des aktuellen Films entspricht" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "Wiedergabemodus falls Titel/Kapitel angegeben" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1960,133 +2192,133 @@ msgstr "" "one chapter\n" "Nur Wiedergabe des angegebenen Titels/Kapitels, danach Stopp." -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: Lesefehler (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: Zugriff verweigert: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Datei nicht gefunden: >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Datei leer: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "Datei Plugin" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "Startverzeichnis für Dateisuche" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "Die Dateiauswahl startet an dieser angegebenen Pfadposition" -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "Versteckte Dateien anzeigen" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "Fals aktiviert zeigt die Dateiauswahl auch versteckte Dateien." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "Mit xine ausgeliefertes gnome-vfs Plugin" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s) schlug fehl: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: Lesefehler %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "Kontaktiere HTTP Server..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: Ungültige http-Antwort\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx Weiterleitung : >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: http-Status ungleich 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: Inhaltslänge = %<PRIdMAX> bytes\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: Puffer erschöpft nach %d Bytes." -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "http Plugin" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "HTTP Proxy Rechnername" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "Der Rechnername des HTTP Proxys." -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "HTTP Proxy Portnummer" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "Die Portnummer des HTTP Proxys." -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "HTTP Proxy Benutzername" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "Der Benutzername für den HTTP Proxy." -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "HTTP Proxy Passwort" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "Das Passwort für den HTTP Proxy." -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "Domains, die den HTTP Proxy umgehen" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -2098,15 +2330,15 @@ msgstr "" "Wenn ein Domain-Name mit einem '=' beginnt, trifft er nur auf Hostnamen zu " "(vollständige Übereinstimmung nötig)." -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "MMS-Streaming-Plugin" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "Netzwerkbandbreite" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " @@ -2116,11 +2348,11 @@ msgstr "" "benutzt, falls Streaming-Server verschiedene Versionen eines Datenstroms mit " "unterschiedlichen Bandbreitenanforderungen anbieten." -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "MMS-Protokoll" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -2148,51 +2380,53 @@ msgstr "input_net: Kann '%s' nicht auflösen.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: Kann keine Verbindung zu '%s' herstellen.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "Mit xine ausgeliefertes net Plugin" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "PNM Streaming-Plugin" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: Fehler beim Erstellen der PVR-Datei (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: Fehler beim Öffnen der PVR-Datei (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: Lesefehler (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: Fehler beim Öffnen der Geräts %s\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_G_CODEC schlug fehl, vielleicht API-Änderung?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_S_CODEC schlug fehl, vielleicht API-Änderung?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "WinTV-PVR 250/350 Plugin" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "Gerät für WinTV-PVR 250/350 (PVR) Plugin" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "Pfadangame zum Gerät der WinTV-Karte" @@ -2245,91 +2479,115 @@ msgstr "Kann keine Verbindung zu '%s' herstellen.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: Stoppe Lese-Thread...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: Lese-Thread terminiert\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Öffne >Dateiname:%s Port:%d Schnittstelle:%s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: Kann neuen Thread (%s) nicht erstellen\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "Mit xine ausgeliefertes RTP und UDP Plugin" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "RTSP Streaming-Plugin" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "CIFS/SMB Plugin basierend auf libsmbclient" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "Standardeingabe: Kann nicht zurückspulen! (%<PRIdMAX> > %<PRIdMAX>)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "Standardeingabe: Öffnen von '%s' schlug fehl\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "Standardeingabe Streaming-Plugin" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Pufferunterlauf..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Pufferüberlauf..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "Anpassen..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Empfängername nicht gefunden\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "V4L TV Plugin" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "V4L Radio Plugin" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "Pfad zum V4L Videogerät" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "Pfad zum Video4Linux Videogerät" -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "Pfad zum V4L Radiogerät" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Pfad zum Video4Linux Videogerät" + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "Pfad zum V4L Radiogerät" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "Pfad zum Video4Linux Radiogerät" #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: Ungültige MRL: Benutze vcdo:/<Track #>\n" @@ -2342,21 +2600,21 @@ msgstr "input_vcd: Fehlerhafter Track %d (Gültiger Bereich: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "Video-CD Plugin" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "Kann %s nicht öffnen: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: Kann %s nicht öffnen: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "Gerät für VCD Wiedergabe" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." @@ -2364,12 +2622,12 @@ msgstr "" "Pfadangabe zum Gerät (normalerweise CD oder DVD Laufwerk), das zur " "Wiedergabe von Video-CDs benutzt werden soll." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: Fehlerhafte mrl: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: Kann keine Verbindung zu '%s' aufbauen\n" @@ -2380,10 +2638,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: Kann keine Verbindung zum Server %s aufbauen\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: Sitzung kann nicht eingerichtet werden.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: Sitzung kann nicht eingerichtet werden.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "rtsp_session: RTSP-Servertyp '%s' wird nicht unterstützt. Ups.\n" @@ -2393,44 +2659,45 @@ msgstr "rtsp_session: RTSP-Servertyp '%s' wird nicht unterstützt. Ups.\n" msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "input_dvd: Gerät %s konnte zum Auswerfen nicht geöffnet werden\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "Kontaktiere MMS Server (über TCP)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: Sendefehler\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: Fehlerhaftes Empfangsformat\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: 3xx Weiterleitung nicht implementiert: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: http-Status ungleich 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: Weiterleitung nicht implementiert\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "Kontaktiere MMS Server (über HTTP)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "Ungültige URL\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "Nichtunterstütztes Protokoll\n" @@ -2439,7 +2706,7 @@ msgstr "Nichtunterstütztes Protokoll\n" msgid "Buffering..." msgstr "Puffern..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2448,12 +2715,13 @@ msgstr "" "input_pnm: Während dem Lesen ist eine Nachricht vom Server eingetroffen:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: Kann keine Verbindung zu '%s' herstellen.\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: Datenstrom konnte nicht eingerichtet werden\n" @@ -2493,50 +2761,50 @@ msgstr "Sollte bereis konvertiert worden sein" msgid "failed to find a device with a VCD" msgstr "Konnte kein Gerät mit einer VCD finden" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "Es wurde ein NULL-Klassenparameter übergeben" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Ungültiger Eintragstyp" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" "Video-CD Plugin mit PBC und Unterstützung für (X)VCD, (X)SVCD, HQVCD, " "CVD, ... " -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "Auswahl hat keinen RETURN-Eintrag" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "DEFAULT ausgewählt, aber PBC ist nicht an." -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "Auswahl hat keinen NEXT-Eintrag" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "Auswahl hat keinen PREVIOUS-Eintrag" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "Unbekannter Ereignistyp" -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "Die vorherige Nachricht hat einen unbekannten Log-Level" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "Standardlaufwerk für VCD bei automatischer Wiedergabe" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" @@ -2544,11 +2812,11 @@ msgstr "" "Das zu benutzende Laufwerk, wenn keins in der MRL angegeben ist (z.B. vcd:// " "oder vcd:///dev/dvd:)" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "Standard CD-ROM-Laufwerk für VCD, wenn keins angegeben wird" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." @@ -2556,29 +2824,29 @@ msgstr "" "Welches Laufwerk benutzt werden soll, falls kein angegeben ist. Falls die " "Einstellung leer ist, wird xine nach CD-Laufwerken suchen." -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "VCD Positionierungsbereich" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" "Der Bereich, den der Positionsschieber bei Wiedergabe von VCDs repräsentiert." -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "Vorauseilendes Caching für VCDs benutzen?" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "Kann zu ruckliger Wiedergabe auf leistungsschwachen Rechnern führen." -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "Automatisch Spur/Eintrag weiterschalten bei VCDs" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." @@ -2587,11 +2855,11 @@ msgstr "" "weitergeschaltet. Wird nur benutzt, wenn die Wiedergabekontrolle PBC nicht " "aktiviert ist." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "'Ablegehnte' VCD LIDs anzeigen" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " @@ -2601,11 +2869,11 @@ msgstr "" "Anwahl dieser Option werden sie trozem angezeigt und mit einem Stern (*) am " "Ende der MRL gekennzeichnet." -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "Formatvorlage für Fenstertitle bei VCDs" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2644,11 +2912,11 @@ msgstr "" " Eine Nummer zwischen 1 und der Serienlänge.\n" " %% : ein %\n" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "Formatvorlage für Kommentarfeld eines VCD Datenstroms." -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2660,11 +2928,11 @@ msgstr "" "c, %F, %I, %L, %N, %P, %p, %S, %T, %V, %v, und %%.\n" "Siehe Hilfe für title_format bezüglich deren Bedeutung." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "Bitfeld für VCD Fehlersuche" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2694,7 +2962,8 @@ msgstr "" "1024: Standbilder\n" "2048: Debugging von VCDINFO\n" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "HILFE! Ein nur-Mono-Audiogerät?!\n" @@ -2745,155 +3014,33 @@ msgstr "" "Dekodierung wie ProLogic unterstützt, damit die zusätzlichen Kanäle in das " "Stereo-Signal gemixt werden." -#: src/libfaad/xine_faad_decoder.c:128 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad NeAACDecOpen() schlug fehl.\n" -#: src/libfaad/xine_faad_decoder.c:137 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad NeAACDecInit2 schlug fehl.\n" -#: src/libfaad/xine_faad_decoder.c:148 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad NeAACDecInit schlug fehl.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: Vergrößere Puffer auf %d um Überlauf zu vermeiden.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_audio_dec: Konnte keinen ffmpeg-Dekoder für Puffertyp 0x%X finden\n" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: Besuche NULl-Codec zu öffnen\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: Konnte Dekoder nicht öffnen\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: Vergrößere Puffer auf %d um Überlauf zu vermeiden.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: Nichtunterstütztes Bildformat, DR1 deaktiviert.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: Nichtunterstütztes Bildformat, DR1 deaktiviert.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_video_dec: Konnte keinen ffmpeg-Dekoder für Puffertyp 0x%X finden\n" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: Konnte Dekoder nicht öffnen\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: Direktausgabe aktiviert\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: Vergrößere Puffer auf %d um Überlauf zu vermeiden.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "Qualität der MPEG-4 Nachbearbeitungsstufe" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"Die Umfang der Nachbearbeitung bei MPEG-4 Videos kann angepasst werden.\n" -"Höhere Werte verwessern die Qualität zu Lasten der CPU-Belastunga. Niedrige " -"Werte können zu Defekten wie Artefakte führen. Bei hochqualitativen Inhalten " -"kann zu starke Nachbearbeitung das Bild durch zu starkes verwischen " -"verschlechtern." - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "libavcodec MPEG Ausgangsbitrate (kBit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" -"Bitrate für die MPEG-Enkodierungsbibliothek libavcodec zur DXR3 Enkodierung. " -"Höhere Werte verwessern die Qualität zu Lasten der CPU-Belastung.\n" -"Diese Einstellung ist nur wirksam, wenn der Modus für konstante Qualität " -"deaktiviert ist." - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "Modus für konstante Qualität" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" -"Falls aktiviert benutzt libavcodec einen Modus für konstante Qualität, bei " -"der Bilder je nach Komplexität dynamische komprimiert werden. Anderenfalls " -"benutzt libavcodec eine Modus mit konstanter Bitrate." - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "Minimale Kompression" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "Minimale Kompression für ein Bild im Modus konstanter Qualität" - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "Maximaler Quantisierer" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "Maximale Kompression für ein Bild im Modus konstanter Qualität" - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "libmusepack: mpc_streaminfo_read schlug fehl: %d\n" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "libmusepack: Daten nach letzem Bild ignoriert\n" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "libmusepack: mpc_decoder_initialise schlug fehl\n" @@ -2922,76 +3069,78 @@ msgstr "" "Konsultieren Sie die xine FAQ für weitere Informationen, wie die Codecs zu " "installieren sind." -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "libreal: Kann Symbole nicht auflösen! (Version inkompatibel?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (Audio) Kann Symbole nicht auflösen - Inkompatible DLL: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "libareal: Dekoderinitialisierung schluf fehl, Fehlercode: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" "libareal: Einrichtung der Dekodervariante schlug fehl, Fehlercode: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: Ups, Real ünterstützt mehr als 2 Kanäle?\n" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "Untertitel in MEPG-2-Strömen anzeigen" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "Untertitel sollen Hörgeschädigten helfen." -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "Untertitelschema für Vordergrund-/Hintergrundfarbe" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Wählen Sie eine Darstellung für Untertitel." -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "Standard Zeichensatz für Untertitel" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Wählen Sie den Zeichensatz für standard Untertiteltexte." -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "Italic Zeichensatz für Untertitel" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "Wählen Sie den Zeichensatz für kursive Untertiteltexte." -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "Zeichensatzgröße für Untertitel" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "Wählen Sie die Zeichensatzgröße für Untertiteltexte." -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "Zentrieren von Untertiteln" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." @@ -2999,23 +3148,23 @@ msgstr "" "Falls aktiviert werden die Zeilen des Untertitels jeweils mittig " "ausgerichtet." -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "Zeichensatz für externe Untertitel" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "Vertikaler Versatz für Untertitel (Relativ zu Fenstergröße)" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "Zeichenkodierung für Untertitel" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "Standardzeitspanne in Sekunden bis zum Ausblenden des Untertitels" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " @@ -3026,22 +3175,22 @@ msgstr "" "angegeben, werden die Untertitel solange angezeigt, bis sie vom nächsten " "ersetzt werden." -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "Untertitelgröße" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" "Passt die Untertitelgröße an. Diese Einstellung ist relativ zur Fenstergröße." -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "Vertikaler Versatz für Untertitel" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." @@ -3049,29 +3198,29 @@ msgstr "" "Passt den vertikalen Versatz der Untertitel an. Diese Einstellung ist " "relativ zur Fenstergröße." -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "Zeichensatz für Untertitel" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" "Ein Zeichensatz aus xines font-Verzeichnis zur Anzeige von Untertiteln." -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "Ein Zeichensatz (z.B. .ttf) zur Anzeige von Untertiteln." -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "ob Freetype-Zeichensätze genutzt werden" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "Zeichenkodierung für Untertitel" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -3083,11 +3232,11 @@ msgstr "" "anders als erwartet dargestellt werden, fragen Sie den Ersteller der " "Untertitel nach der verwendeten Kodierung." -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "Benutze unskaliertes OSD falls möglich" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -3188,22 +3337,22 @@ msgstr "w32codec: Fehler beim Initialisieren von DMO Audio\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: Fehler beim ByteRun1-Dekomprimieren\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 wird momentan nicht unterstützt\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 wird momentan nicht unterstützt\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ wird momentan nicht unterstützt\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: Dieser anim-Type wird momentan nicht unterstützt\n" @@ -3248,6 +3397,7 @@ msgstr "" "eines Tonsignals wiederzugeben.\n" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr ": mische Mono zu Stereo hoch.\n" @@ -3259,6 +3409,7 @@ msgstr[0] ": mische einen Kanal von ursprünglich %d Kanal hoch.\n" msgstr[1] ": mische einen Kanal von ursprünglich %d Kanälen hoch.\n" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr ": Audiogerät ist nicht AO_CAP_MODE_STEREO fähig.\n" @@ -3280,7 +3431,8 @@ msgstr "" "(Standard); 2: Benutzt mehrere Abtastpunkte, um die Variationen mit Hilfe " "des gewichteten Mittels über vorherige Abtastpunkte zu glätten.\n" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 +#, fuzzy msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3294,6 +3446,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3387,7 +3542,8 @@ msgstr "" "Verfügung)\n" "\n" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "tvtime: Keine Deinterlacingmethoden verfügbar, beendet.\n" @@ -3431,7 +3587,7 @@ msgstr "" "Sie können die Methode zum Konvertieren des Farmraums in Goom wählen.\n" "Die auswählbaren Möglichkeiten sollten selbsterklärend sein." -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3639,7 +3795,7 @@ msgstr "" "\n" "* mplayer's noise (C) Michael Niedermayer\n" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3651,7 +3807,7 @@ msgstr "" "Parameter\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3659,7 +3815,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3709,15 +3865,15 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "xine Videoausgabe benutzt ASCII-Art Bibliothek" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "xine Videoausgabe benutzt Farb-ASCII-Art Bibliothek" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "Videoebenen-Puffermodus" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." @@ -3726,11 +3882,11 @@ msgstr "" "Dreifachpufferung führen zu einer weicheren Wiedergabe, verbrauchen aber " "mehr Videospeicher." -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "Warte auf vertikalen Strahlenrücklauf" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." @@ -3738,11 +3894,11 @@ msgstr "" "Synchronisiert die Aktualisierung des Videobilds mit der Neudarstellung des " "Bildschirms (\"Vertikaler Strahlenrücklauf\")." -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "Aktiviert Farbschlüssel für Overlay" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." @@ -3750,15 +3906,13 @@ msgstr "" "Aktiviert die Benutzung eines Farbschlüssel, um der Grafikkarte mitzuteilen, " "wo das Videobild angezeigt werden soll." -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "Farbschlüssel für Overlay" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." @@ -3767,21 +3921,21 @@ msgstr "" "eingeblendet werden kann. Probieren Sie verschiedenen Werte, falls einige " "Fenster durchscheinend werden." -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "Flackerfilterung" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" "Aktiviert die Flackerfilterung für eine weichere Wiedergabe auf " "Bildschirmen, die das Halbzeilenverfahren verwenden." -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "Feldpriorität" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." @@ -3789,45 +3943,52 @@ msgstr "" "Für einen Bildschirm im Halbzeilenverfahren, erlaubt die Kontrolle der " "Feldpriorität (\"none\"=deaktiviert)." -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "video_out_directfb: Benutzt Hardwarebeschleunigung für Untertitel.\n" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_directfb: Ebene unterstützt Videoausgabe.\n" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_directfb: Ebene unterstützt kein YV12!\n" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_directfb: Ebene unterstützt kein YUT2!\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" "video_out_directfb: Benötige mindestens DirectFB 0.9.25 zur Wiedergabe auf " "dieser Ebene!\n" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "video_out_directfb: Ebene unterstützt keinen Buffermode %d!\n" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "video_out_directfb: Ebene unterstützt keine Option 0x%08x!\n" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" "video_out_directfb: Benutzt Hardwarebeschleunigung für Bildskalierung.\n" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" @@ -3835,33 +3996,34 @@ msgstr "" "video_out_directfb: Bildskalierung mit deinterlating ist " "hardwarebeschleunigt.\n" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "Videoebenen-Id (automatisch: -1)" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "Wählt die Ausgabeebene für videos bei Id." -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_directfb: Benutze Anzeigenebene #%d.\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "xine Videoausgabe benutzt DirectFB" -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "video_out_directfb: Keine benutzbare Anzeigenebene gefunden!\n" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "xine Videoausgabe benutzt DirectFB unter XDirectFB" -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "xine Videoausgabe benutzt für win32 benutzt directx" @@ -3874,11 +4036,11 @@ msgstr "" "video_out_fb: Nur packed truecolor/directcolor wird unterstützt (%d).\n" " Überprüden Sie 'fbset -i' oder versuchen Sie 'fbset -depth 16'.\n" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "Framebuffer Gerät" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3892,6 +4054,7 @@ msgstr "" "Framebuffer-Gerät bezeichnet." #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Ihr Videomodues wurde nicht erkannt, Entschuldigung.\n" @@ -3915,6 +4078,7 @@ msgstr "" " der Framebuffer-Auflösung kann helfen.\n" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3941,11 +4105,11 @@ msgstr "xine Videoausgabe benutzt Linux Framebuffer" msgid "xine video output plugin which displays nothing" msgstr "xine Videoausgabe zeigt nichts an" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "OpenGL Renderer" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -4001,11 +4165,11 @@ msgstr "" "Environment_Mapped_Torus\n" "Zeigt Bilder auf einem sich drehenden spiegelndem Torus. Sehr cool =)" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "Minimale OpenGL Bildrate" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" @@ -4013,13 +4177,12 @@ msgstr "" "Minimale Bildrate für animierte Renderroutinen.\n" "Ignoriert für statische Renderroutinen.\n" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "Doppelpufferung benutzen" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" @@ -4029,11 +4192,12 @@ msgstr "" "sondern reduziert auch Flackern.\n" "Es sollte keine Leistungseinbußen haben." -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "xine Videoausgabe mit OpenGL 3D Grafikschnittstelle" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx32: Fehler: DGA Zeichenfläche für Videofenster nicht bekommen\n" @@ -4049,6 +4213,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "video_out_pgx32: Fehler: '%s' ist kein pgx32 Framebuffer Gerät\n" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx64: Fehler: DGA Zeichenfläche für Videofenster nicht bekommen\n" @@ -4074,6 +4239,7 @@ msgstr "" "video_out_pgx64: Fehler: '%s' ist kein xvr100/pgx64/pgx24 Framebuffer Gerät\n" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" @@ -4081,32 +4247,35 @@ msgstr "" "benutzt\n" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "" "video_out_pgx64: Fehler: Fenstereigenschaften kónnen nicht gesetzt werden\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" "video_out_pgx64: Warnung: Wenig Videospeicher, Mehrfachpufferung " "deaktiviert\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Fehler: Ungenügend Videospeicher\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: Warnung: Wenig Videospeicher, Doppelpufferung deaktiviert\n" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Fehler: ioctl(FBIOGATTR) schlug fehl\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "Farbschlüssel für Overlay" @@ -4144,11 +4313,11 @@ msgstr "" "Mehrfachpufferung erhöht die Leistung auf Kosten eines erhöhten Verbrauchs " "von Grafikspeicher." -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "Benutze Hardwarebeschleunigung falls verfügbar" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " @@ -4158,15 +4327,17 @@ msgstr "" "Grafikhardware benutzt. Falls es nicht funktioniert, können Sie dies " "deaktivieren." -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "SDL muß eine 16 Bit Ausgabe emulieren, was alles verlangsamt.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: Vollbildmodus wird NICHT unterstützt\n" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "xine Videoausgabe benutzt 'Simple Direct Media Layer'" @@ -4175,38 +4346,46 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "xine Videoausgabe benutzt LibStk Surface Set-top Toolkit" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: Fehler. (YUY2 wird von der Grafikkarte nicht unterstützt)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: Fehler. (YV12 wird von der Grafikkarte nicht unterstützt)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" "video_out_syncfb: Info. (SyncFB-Modul unterstützt YUV 4:2:0 (3 Ebenen))\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" "video_out_syncfb: Info. (SyncFB-Modul unterstützt YUV 4:2:0 (2 Ebenen))\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "video_out_syncfb: Info. (SyncFB-Modul unterstützt YUV 4:2:2)\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: Info. (SyncFB-Modul unterstützt YUY2)\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: Info. (SyncFB-Modul unterstützt RGB565)\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" @@ -4214,7 +4393,8 @@ msgstr "" "video_out_syncfb: Abbruch. (SyncFB unterstützt weder YV12, YUY2 noch " "RGB565)\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " @@ -4224,26 +4404,26 @@ msgstr "" "das SyncFB-Kernelmodul veraltet scheint. Lesen Sie bitte README.syncfb zu " "Updateinformationen.)\n" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "Standardanzahl von Bildwiederholungen" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "Gibt an, wie oft ein einzelnes Videobild fortlaufend angezeigt wird." -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "xine Videoausgabe benutzt SyncFB-Modul für Matrox G200/G400-Karten" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "SyncFB Gerätename" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -4256,33 +4436,31 @@ msgstr "" "sollten sich deshalb sehr sicher sein, daß Ihre Eingabe wirklich das " "Framebuffer-Gerät bezeichnet." -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "Rot-Intensität" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "Die Intensität rotet Farbanteile" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "Grün-Intensität" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "Die Intensität grüner Farbanteile" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "Blau-Intensität" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "Die Intensität blauer Farbanteile" -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " @@ -4292,48 +4470,52 @@ msgstr "" "Darstellung des gesamten Bildschirms (\"Strahlenrücklauf\"). Dies verhindert " "Flackern und Fransenbildung, benötigt aber mehr Grafikspeicher." -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: Adapter unterstützt das YUY2 Format\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: Adapter unterstützt das YV12 Format\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: Sie haben die falsche Version der VIDIX-Bibliothek\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: Kein funktionierende VIDIX-Treiber gefunden\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: Benutzer Treiber: %s von %s\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "Rot-Komponente des Farbschlüssels für Overlays" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "Grün-Komponente des Farbschlüssels für Overlays" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "Blau-Komponente des Farbschlüssels für Overlays" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "xine Videoausgabe benutzt libvidix für X11" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "xine Videoausgabe benutzt libvidix für Linux Framebuffer" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" @@ -4342,7 +4524,8 @@ msgstr "" "video_out_xcbshm: %s: Belege Bild\n" "video_out_xcbshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" @@ -4352,7 +4535,8 @@ msgstr "" "Bilds\n" "video_out_xcbshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" @@ -4360,7 +4544,7 @@ msgstr "" "video_out_xcbshm: X11-Fehler bei Shared-Memory-XImage-Erstellung\n" "video_out_xcbshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -4374,22 +4558,25 @@ msgstr "" "WARNUNG: Aktuelle Farbtiefe ist %d. Für bessere Leistung wird eine Farbtiefe " "von 16 bpp empfohlen!\n" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xcbshm: MIT-Shared-Memory-Erweiterung für Anzeige nicht " "vorhanden.\n" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "" "video_out_xcbshm: Der Videomodus wurde nicht erkannt, Entschuldigung :-(\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "xine Videoausgabe benutzt 'MIX X Shared Memory' Erweiterung" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4397,7 +4584,7 @@ msgstr "" "video_out_xcbv: XvShmCreateImage lieferte Größe 0 zurück\n" "video_out_xcbv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" @@ -4406,7 +4593,8 @@ msgstr "" "video_out_xcbxv: Shared-Memory-Fehler bei shmget: %s\n" "video_out_xcbxv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4414,11 +4602,24 @@ msgstr "" "video_out_xcbxv: X11-Fehler bei Shared-Memory-XImage-Erstellung\n" "video_out_xcbxv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xcbxv: Xv-Erweiterung nicht vorhanden.\n" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4429,7 +4630,7 @@ msgstr "" "benutzbarer YUV12-Port gefunden.\n" " Unterstützt die Grafikhardware evtl. kein Xv?!\n" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " @@ -4438,73 +4639,39 @@ msgstr "" "video_out_xcbxv: Benutze Xv-Port %d von Adapter %s for Hardware-" "Farbraumtransformation und Skalierung.\n" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "automatischer Farbschlüssel" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "Veranlasst Xv automatisch den Farbschlüssel zu zeichnen." - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "Bilinearer Skalierungsmodus" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 +#, fuzzy msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -"Wählt den bilinearen Skalierungsmodus bei Permedia Karten. Die Werte " -"bedeuten:\n" -"\n" -"Permedia 2\n" -"0 - deaktiviert bilineares Filtern\n" -"1 - aktiviert bilineares Filtern\n" -"\n" -"Permedia 3\n" -"0 - deaktiviert bilineares Filtern\n" -"1 - horizontales lineares Filtern\n" -"2 - aktiviert volles bilineares Filtern" +"Doppelpufferung synchronisiert das Aktualisieren des Videobildes mit der " +"Darstellung des gesamten Bildschirms (\"Strahlenrücklauf\"). Dies verhindert " +"Flackern und Fransenbildung, benötigt aber mehr Grafikspeicher." -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xcbxv: Adapter unterstützt YV12 Format.\n" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xcbxv: Adapter unterstützt YUY2 Format.\n" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "pitch alignment Abhilfe" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "Einige fehlerhafte Videotreiber benötigen dies zur korrekten Funktion." - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "Deinterlace-Methode (veraltet)" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4575,12 +4742,13 @@ msgstr "" "Verwischt das Bild vertikal, um Kammartefakte zu entfernen. Gute Resultate " "bei mittlerer CPU-Auslastung." -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "xine Videoausgabe benutzt 'MIX XVideo' Erweiterung" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4588,7 +4756,7 @@ msgstr "" "video_out_xshm: Shared-Memory-Fehler beim Speicherbelegen\n" "video_out_xshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -4597,7 +4765,8 @@ msgstr "" "video_out_xshm: %s: Belege Bild\n" "video_out_xshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4605,7 +4774,8 @@ msgstr "" "video_out_xshm: Shared-Memory-Fehler (Adressfehler) beim Belegen des Bilds\n" "video_out_xshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4613,17 +4783,20 @@ msgstr "" "video_out_xshm: X11-Fehler bei Shared-Memory-XImage-Erstellung\n" "video_out_xshm: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: MIT-Shared-Memory-Erweiterung für Anzeige nicht vorhanden.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "" "video_out_xshm: Der Videomodus wurde nicht erkannt, Entschuldigung :-(\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4631,7 +4804,8 @@ msgstr "" "video_out_xv: XvShmCreateImage schlug fehl\n" "video_out_xv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4639,7 +4813,7 @@ msgstr "" "video_out_xv: XvShmCreateImage lieferte Größe 0 zurück\n" "video_out_xv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -4648,7 +4822,8 @@ msgstr "" "video_out_xv: Shared-Memory-Fehler bei shmget: %s\n" "video_out_xv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4656,11 +4831,18 @@ msgstr "" "video_out_xv: X11-Fehler bei Shared-Memory-XImage-Erstellung\n" "video_out_xv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: Xv-Erweiterung nicht vorhanden.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4670,7 +4852,7 @@ msgstr "" "YUV12-Port gefunden.\n" " Unterstützt die Grafikhardware evtl. kein Xv?!\n" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " @@ -4679,23 +4861,27 @@ msgstr "" "video_out_xv: Benutze Xv-Port %ld von Adapter %s for Hardware-" "Farbraumtransformation und Skalierung.\n" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: Adapter unterstützt YV12 Format.\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: Adapter unterstützt YUY2 Format.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "xine Videoausgabe benutzt XvMC XVideo-Erweiterung" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: XvMC-Erweiterung nicht vorhanden.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4703,7 +4889,7 @@ msgstr "" "video_out_xvmc: Xv-Erweiterung ist vorhanden, aber es wurde kein benutzparer " "YUV12-Port gefunden.\n" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" @@ -4712,24 +4898,28 @@ msgstr "" "video_out_xvmc: Benutze Xv-Port %ld von Adapter %s for Hardware-" "Farbraumtransformation und Skalierung\n" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " IDCT und Bewegungskompensationsbeschleunigung \n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " nur Bewegungskompensationsbeschleunigung\n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " Keine XvMC-Unterstützung \n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " Mit Überlagerung = %d; UnsignedIntra = %d.\n" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4737,7 +4927,8 @@ msgstr "" "video_out_xxmc: XvShmCreateImage schlug fehl\n" "video_out_xxmc: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4745,7 +4936,7 @@ msgstr "" "video_out_xv: XvShmCreateImage lieferte Größe 0 zurück\n" "video_out_xv: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4754,7 +4945,8 @@ msgstr "" "video_out_xxmc: Shared-Memory-Fehler bei shmget: %s\n" "video_out_xxmc: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4762,11 +4954,13 @@ msgstr "" "video_out_xxmc: X11-Fehler bei Shared-Memory-XImage-Erstellung\n" "video_out_xxmc: => MIT-Shared-Memory-Erweiterung wird nicht genutzt.\n" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xxmc: Xv-Erweiterung nicht vorhanden.\n" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4776,7 +4970,7 @@ msgstr "" "YUV12-Port gefunden.\n" " Unterstützt die Grafikhardware evtl. kein Xv?!\n" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " @@ -4785,19 +4979,21 @@ msgstr "" "video_out_xxmc: Benutze Xv-Port %ld von Adapter %s for Hardware-" "Farbraumtransformation und Skalierung.\n" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xxmc: Adapter unterstützt YV12 Format.\n" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xxmc: Adapter unterstützt YUY2 Format.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "XvMC belegt zur besseren Pufferung mehr Bildspeicher." -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" @@ -4807,11 +5003,11 @@ msgstr "" "Diese Option, wenn ausgewählt, veranlasst den Treiber 15\n" "Bilder zu belegen. Ein Muß für Unichrome oder live VDR.\n" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "Unichrome Prozessorschoner" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" @@ -4822,11 +5018,11 @@ msgstr "" "Patch.\n" "Experimentell.\n" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "Behebe NVIDIA XvMV Subpicture-Farbfehler" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" @@ -4835,11 +5031,11 @@ msgstr "" "blau darstellt und umgekehrt. Diese Option liefert eine provisorische " "Lösung.\n" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "Benutze BOB als beschleunigte Deinterlacingmethode." -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" @@ -4848,39 +5044,42 @@ msgstr "" "alterniere zwischen oberer und unterer Hälfte bei doppelter " "Bildwiederholrate.\n" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" "x11osd: XShape-Erweiterung nicht verfügbar. Unskalierte Überlagerung " "deaktiviert.\n" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" "x11osd: Fehler bei Fenstererstellung. Unskalierte Überlagerung deaktiviert.\n" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" "x11osd: Fehler bei Bitmapstellung. Unskalierte Überlagerung deaktiviert.\n" @@ -4890,6 +5089,83 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: Unskaliertes Overlay erzeugt (%s Modus).\n" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "automatischer Farbschlüssel" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "Veranlasst Xv automatisch den Farbschlüssel zu zeichnen." + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "Bilinearer Skalierungsmodus" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" +"Wählt den bilinearen Skalierungsmodus bei Permedia Karten. Die Werte " +"bedeuten:\n" +"\n" +"Permedia 2\n" +"0 - deaktiviert bilineares Filtern\n" +"1 - aktiviert bilineares Filtern\n" +"\n" +"Permedia 3\n" +"0 - deaktiviert bilineares Filtern\n" +"1 - horizontales lineares Filtern\n" +"2 - aktiviert volles bilineares Filtern" + +#: src/video_out/xv_common.h:53 +#, fuzzy +msgid "Xv port number" +msgstr "Fehlerhafte Eintragsnummer" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "pitch alignment Abhilfe" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "Einige fehlerhafte Videotreiber benötigen dies zur korrekten Funktion." + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +#, fuzzy +msgid "bicubic filtering" +msgstr "Flackerfilterung" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "Deaktiviert exaktes Alphaüberblendn bei Overlays" @@ -4933,35 +5209,39 @@ msgstr "" "unzuverlässigen Quellen, erhöhen aber auch die Latenzzeit und den " "Speicherverbrauch." -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" "audio_out: Berechnung der Verzögerung unmöglich mit einem nicht verfügbaren " "Audiogerät\n" -#: src/xine-engine/audio_out.c:1248 -#, fuzzy +#: src/xine-engine/audio_out.c:1249 +#, fuzzy, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "Schreiben an Soundkarte schlug fehl. Wurde ein USB-Gerät entfernt?\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "Keine Treiberunterstützung für 8 Bit, Konvertierung zu 16 Bit.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "Keine Treiberunterstützung für Mono, Konvertierung zu Stereo.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "Keine Treiberunterstützung für Stereo, Konvertierung zu Mono.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "Methode für Audio/Videosynchronisation" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -5004,11 +5284,11 @@ msgstr "" "funktioniert nicht für digitales Passthrough, wo die Audiodaten in digitaler " "Form direkt an einen externen Dekoder geleitet werden." -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "Resampling benutzen" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -5020,11 +5300,11 @@ msgstr "" "Diese Adaption kann dauerhaft aktiviert, deaktiviert oder bei Bedarf " "automatisch aktiviert werden." -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "Wenn !=0, immer auf diese Rate anpassen" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " @@ -5034,11 +5314,11 @@ msgstr "" "Durch Eingabe eines Wertes ungleich Null wird erzwungen, daß " "Audiodatenströme immer auf die angegebene Rate resampled werden." -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "Versatz für digitales Passthrough" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" @@ -5050,11 +5330,11 @@ msgstr "" "Die Einheit dieses Wertes ist ein \"PTS-Tick\", was dem 90.000stel einer " "Sekunde entspricht." -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "Audiowiedergabe während langsamer/schneller Geschwindigkeit" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -5067,24 +5347,25 @@ msgstr "" "erhalten wollen, versuchen sie stattdessen das 'stretch' Audio-Wiedergabe-" "Plugin." -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "Startlautstärke" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "Gesamtlautstärke beim Starten von xine." -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "Lautstärke beim Starten wiederherstellen" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "Wenn nicht angewählte, lässt xine die Lautstärke beim Starten unverändert." -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "audio_out: Ups, das sollte eigentlich nicht passieren, bitte xine " @@ -5095,44 +5376,46 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "xine-lib: buffer.c: Fataler Defekt: ZU VIELE FREIGABEN\n" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" "Die Konfigurationsdatei wurde von einer neueren Version von xine modifiziert." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" "configfile: WARNUNG: Sichern der Konfigurationsdatei nach %s schlug fehl\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: WARNUNG: Ihre Konfigurationsdatei wird nicht gesichert\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: WARNUNG: Schreiben der Konfiguration nach %s schlug fehl\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" "configfile: WARNUNG: Entferne möglicherweise kaputte Konfigurationsdatei %s\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: WARNUNG: Überprüfen Sie die Sicherheitskopie %s\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: Eintrag '%s' darf nicht per MRL geändert werden\n" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "info_helper: Kann locale-Zeichensatz nicht erkennen\n" @@ -5165,7 +5448,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: Lesefehler im input_rip-Plugin\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: Schreibfehler in Datei bei %<PRIdMAX> Bytes: %s\n" @@ -5190,12 +5473,12 @@ msgstr "input_rip: Positionierung fehlgeschlagen: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %<PRIdMAX> Bytes verworfen\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: Input-Plugin nicht definiert!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " @@ -5204,7 +5487,7 @@ msgstr "" "input_rip: Zielverzeichnis nicht angegeben, bitte die Option 'media.capture." "save_dir' angeben\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -5212,12 +5495,12 @@ msgstr "" "Das Abspeichern von Datenströmen ist solange deaktiviert, bis media.capture." "save_dir in der Konfiguration gesetzt ist." -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: Rippen/Zwischenspeichern dieser Quelle nicht erlaubt!\n" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" @@ -5225,12 +5508,12 @@ msgstr "" "xine darf diese Quelle nicht speichern. (Möglicherweise kopiergeschütztes " "Material?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: Dateiname nicht angegeben!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_ipd: Fehler beim Öffnen der Datei %s: %s\n" @@ -5269,7 +5552,7 @@ msgstr "io_helper: Verbindung verweigert\n" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "map_decoder_list: Kein Platz für Dekoder, übersprungen.\n" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" @@ -5277,12 +5560,12 @@ msgstr "" "load_plugins: Ignoriere Plugin %s, falsche iface-Version %d (sollte %d " "sein)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "Priorität für Dekoder %s" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" @@ -5292,7 +5575,7 @@ msgstr "" "Dekoder behandelt werden können.\n" "Eine Priorität von 0 aktiviert den Dekoder mit seiner Standardpriorität." -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " @@ -5301,7 +5584,7 @@ msgstr "" "load_plugins: Demultiplexer-Plugin %s liefert keine Priorität, xine-lib " "benutzt die Standardpriorität.\n" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " @@ -5310,44 +5593,44 @@ msgstr "" "load_plugins: Input-Plugin %s liefert keine Priorität, xine-lib benutzt die " "Standardpriorität.\n" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: Plugin %s gefunden\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: statisches Plugin gefunden\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: Plugingrenze erreicht, %s konnte nicht geladen werden\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" "load_plugins: Plugingrenze erreicht, statisches Plugin konnte nicht geladen " "werden\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: Unbekannter Plugintyp %d in %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: Unbekannter statisch eingebundener Plugintyp %d\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: Kann %s nicht untersuchen\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -5356,7 +5639,7 @@ msgstr "" "load_plugins: Kann Pluginbibliothek %s nicht öffnen:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -5365,12 +5648,12 @@ msgstr "" "load_plugins: Kann Plugininformation von %s nicht lesen:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: Überspringe unlesbares Pluginverzeichnis %s.\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -5379,27 +5662,28 @@ msgstr "" "load_plugins: (Stufe 2) Kann Pluginbibliothek %s nicht öffnen:\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: Dreck! %s enthält keine Plugininformation.\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: Unbekannte Inhaltserkennungsstrategie %d\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: Benutze Demultiplexer '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: Audio-Plugin <%s> konnte nicht geladen werden\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -5407,7 +5691,7 @@ msgstr "" "load_plugins: Suche nach Audio-Ausgabe fand keinen benutzbaren " "Audiotreiber.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -5416,52 +5700,54 @@ msgstr "" "load_plugins: Kann Pluginbibliothek %s nicht entladen:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "Zeichensatz '%s-%d' bereits geladen, seltsam.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "Laden des Zeichensatzs '%s' schlug fehl (%d <%d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "Falsche Version von Zeichensatz '%s'. Erwartet %d gefunden %d.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: Kann ft2-Bibliothek nicht initialisieren\n" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "osd: Fehler beim Suchen des Zeichensatzes %s mit FontConfig" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: Fehler beim Laden des Zeichensatzes %s mit FontConfig" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "osd: Fehler beim Zusammenstellen des Zeichensatzes %s mit FontConfig" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: Fehler beim Laden des Zeichensatzes %s mit ft2\n" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" "osd: Fehler beim Setzen der Zeichensatzgröße (kein skalierbarer " "Zeichensatz?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -5470,43 +5756,48 @@ msgstr "" "osd: Unbekannte Sequenz startet mit Byte 0x%02X in Kodierung \"%s\", " "überspringe\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: Kann locale-Zeichensatz nicht erkennen\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "" "osd: Nichtunterstützte Konvertierung %s -> %s, keine Konvertierung " "durchgeführt\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: Zeichensatz nicht definiert\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: Fehler beim Laden von Bildzeichen\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: Fehler beim Darstellen von Bildzeichen\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: Fehler beim Laden des Bildzeichens %i\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: Fehler beim Darstellen\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "Farbpalette (Vordergrund-Rand-Hintergrund) für Untertitel und OSD" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " @@ -5516,21 +5807,21 @@ msgstr "" "Färbung spezifizieren. Die Paletten sind in der Form Vordergrund-Rand-" "Hintergrund aufgelistst." -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: Kein Plugin gefunden zur Behandlung von '%s'\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: Fehler, unbekannter Puffertyp: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "Anzahl der Videopuffer" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " @@ -5541,12 +5832,12 @@ msgstr "" "unzuverlässigen Quellen, erhöhen aber auch die Latenzzeit und den " "Speicherverbrauch." -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d Bilder angezeigt, %d Bilder übersprungen, %d Bilder verworfen\n" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -5555,11 +5846,11 @@ msgstr "" "video_out: Verwerfe Bild mit pts %<PRId64>, weil es zu alt ist (Unterschied: " "%<PRId64>).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "Standardanzahl von Videobildern" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." @@ -5568,11 +5859,11 @@ msgstr "" "angefordert werden. Einige Treiber überschreiben diese Einstellung mit ihren " "eigenen Werten." -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "Erlaubter Prozentsatz für übersprungene Frames" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." @@ -5580,11 +5871,11 @@ msgstr "" "xine zeigt eine Meldung an, wenn mehr Frames als dieser Prozentsatz nicht " "angezeigt werden, weil sie nicht rechtzeitig dekodiert werden konnten." -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "Erlaubter Prozentsatz für verworfene Frames" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." @@ -5592,7 +5883,8 @@ msgstr "" "xine zeigt eine Meldung an, wenn mehr Frames als dieser Prozentsatz nicht " "angezeigt werden, weil sie nicht rechtzeitig dargestellt werden konnten." -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out : Ups, das sollte eigentlich nicht passieren, bitte xine " @@ -5654,132 +5946,145 @@ msgstr "" "einige Videoausgabetreiber wie XShm davon, deren Bildskalierung nicht " "hardwarebeschleunigt ist, wodurch die CPU-Auslastung drastisch sinkt." -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: Fehler beim Parsen der MRL\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: Inputplugin gefunden: %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: Plugin kann MRL [%s] nicht öffnen\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: Kann kein Plugin für MRL [%s] finden\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: Demultiplexer-Plugins %s startete nicht\n" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: Join rip Plugin\n" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: Fehler beim Öffnen einer RIP-Plugin-Instanz\n" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: Letztes Demultiplexer-Plugins %s startete nicht\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "Ignoriere Video\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "Ignoriere Audio\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "Ignoriere Untertitel\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "Input-Cache Plugin deaktiviert\n" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "Untertitel-MRL öffnet '%s'\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: Fehler beim Öffnen der Untertitel-MRL\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: Fehler beim parsen der MRL\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "xine: Das Ändern der Option '%s' per MRL ist verboten\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: Kann keinen Demultiplexer für >%s< finden\n" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: Kann keinen Demultiplexer für >%s< finden\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: Demultiplexer-Plugin gefunden: %s\n" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, fuzzy, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "xine: Demultiplexer-Plugins startete nicht\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: Demultiplexer-Plugins startete nicht\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: Kein Demultiplexer vorhanden\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: Demultiplexer startete nicht\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "xine: Das angegebene save_dir '%s' kann ein Sicherheitsproblem sein.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "Das angegebene save_dir kann ein Sicherheitsproblem sein." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: Locale wird nicht von C-Bibliothek unterstützt\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "Medienformaterkennungsstrategie" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5811,11 +6116,11 @@ msgstr "" "extension\n" "Nur anhand der Dateiendung erkennen.\n" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "Pfad zum Sichen von Datenströmen" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5830,11 +6135,11 @@ msgstr "" "benutzt werden kann, um Dateien mit beliebigen Inhalt zu füllen. Stellen Sie " "sicher, daß das Verzeichnis robust ist für beliebige Inhalte in jeder Datei." -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "Erlaube implizierte Änderungen an Konfiguration (z.B. durch MRL)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5850,11 +6155,11 @@ msgstr "" "unvertrauenswürdigen Stellen empfangen kann. Falls diese willkürlichen " "Änderungen erlaubt sind, kann dies zu einem verkonfigurierten xine führen." -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "Zeitüberschreitung für Netzwerkdatenströme (in Sekunden)" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " @@ -5865,67 +6170,67 @@ msgstr "" "langsam ist oder die Bandbreite erschöpft ist. Zu hohe Werte können xine " "einfrieren lassen, wenn die Verbindung abbricht." -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "Nachrichten" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "Plugin" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "Programmverfolgung" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "Warnung:" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "Unbekannter Rechner:" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "Unbekanntes Gerät:" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "Netzwerk unerreichbar" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "Verbindung verweigert:" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "Datei nicht gefunden:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "Lesefehler von:" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "Fehler beim Laden der Bibliothek:" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "VerschRlüsselter Mediendatenstrom erkannt" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "Sicherheitsmeldung:" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "Audiogerät nicht verfügbar" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "Berechtigungsfehler" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "Datei ist leer:" @@ -5945,1947 +6250,6 @@ msgstr "" "gewählt wird." #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Geschwindigkeitsvergleich der memcpy-Methoden (klein ist besser):\n" - -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: Falsche ASX Version: %s\n" - -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "dvbsub: Kann keinen Zeitgeber-Thread erzeugen\n" - -#~ msgid "make the overlay behave like a fixed layer (for debugging)" -#~ msgstr "Überlagerungsebene verhält sich wie feste Ebene (zur Fehlersuche)" - -#~ msgid "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) failed.\n" -#~ msgstr "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) schlug fehl.\n" - -#~ msgid "video brightness" -#~ msgstr "Videohelligkeit" - -#~ msgid "The brightness of the video image." -#~ msgstr "Die Helligkeit des Videos." - -#~ msgid "The saturation of the video image." -#~ msgstr "Die Sättigung des Videos." - -#~ msgid "brightness correction" -#~ msgstr "Helligkeitskorrektur" - -#~ msgid "" -#~ "The brightness correction can be used to lighten or darken the image. It " -#~ "changes the blacklevel without modifying the contrast, but it limits the " -#~ "tonal range." -#~ msgstr "" -#~ "Die Helligkeitskorrektur kann benutzt werden, um ein Bild aufzuhellen " -#~ "oder zu verdunkeln. Sie verändert den Schwarzlevel ohne den Kontrast zu " -#~ "beeinflussen, limitiert aber den Tonumfang." - -#~ msgid "Do we use read-ahead caching?" -#~ msgstr "Vorzeitiges Caching benutzen?" - -#~ msgid "This integer is a debugging mask when interpreted in binary." -#~ msgstr "" -#~ "Als Bitfeld interpretiert gibt der Wert eine Maske zur Fehlersuche an." - -#~ msgid "audio_oss_out: open() %s failed: %s\n" -#~ msgstr "audio_oss_out: open() %s schlug fehl: %s\n" - -#~ msgid "" -#~ "This will display the current channel name in xine's on-screen-display. " -#~ "Menu button 7 will disable this temporarily." -#~ msgstr "" -#~ "Dies zeigt den aktuellen Kanalnamen in xine's On-Screen-Dislay an. " -#~ "Menuknopf 7 deaktiviert dies zwischenzeitlich." - -#~ msgid "" -#~ "A Comma separated list of domain names, where the proxy is to be ignored." -#~ msgstr "" -#~ "Eine kommaseparierte Liste von Domainnamen, bei denen der Proxy ignoriert " -#~ "werden soll." - -#~ msgid "selection has no DEFAULT entry" -#~ msgstr "Auswahl hat keinen DEFAULT-Eintrag" - -#~ msgid "" -#~ "You can disable video scaling globally. The image will then no longer " -#~ "adapt to the size of the video window, which can dramatically reduce CPU " -#~ "usage." -#~ msgstr "" -#~ "Sie können global alle Videoskalierungen deaktivieren. Das Bild passt " -#~ "sich dann nicht länder der Fenstergröße des Videofensters an, was die CPU-" -#~ "Auslastung dramatisch reduzieren kann." - -#~ msgid "device used for 5+ channel output" -#~ msgstr "Gerät für 5+-Kanalausgabe" - -#~ msgid "used to inform xine about what the sound card can do" -#~ msgstr "" -#~ "Wird gebraucht, um xine über die Fähigkeiten der Soundkarte zu informieren" - -#~ msgid "OSS number N to append to audio device name /dev/dsp[N], -1 for none" -#~ msgstr "" -#~ "OSS-Gerätenummer N zum Anhängen an Gerätenamen /dev/dsp[N], -1 für nichts" - -#~ msgid "Adjust a/v sync for OSS softsync" -#~ msgstr "A/V Synchronisationsanpassung für OSS SoftSync" - -#~ msgid "Use this to manually adjust a/v sync if you're using softsync" -#~ msgstr "" -#~ "Benutze dies um die A/V Synchronisation manuell anzupassen, falls " -#~ "SoftSync benutzt wird" - -#~ msgid "Enable 4.0 channel analog surround output" -#~ msgstr "Aktiviere analogen 4.0-Kanalraumklang" - -#~ msgid "Enable 5.0 channel analog surround output" -#~ msgstr "Aktiviere analogen 5.0-Kanalraumklang" - -#~ msgid "Enable 5.1 channel analog surround output" -#~ msgstr "Aktiviere analogen 5.1-Kanalraumklang" - -#~ msgid "OSS mixer device" -#~ msgstr "OSS Mixergerät" - -#~ msgid "device used for audio output with the 'Sun' audio plugin" -#~ msgstr "Gerät für Soundausgabe mit 'Sun'-Audio-Plugin" - -#~ msgid "The device file of the dxr3 mpeg decoder card control device." -#~ msgstr "Der Gerätepfad für das Steuergerät der DXR3-MPEG-Dekoderkarte." - -#~ msgid "This is relevant for progressive video only (most PAL films)." -#~ msgstr "" -#~ "Dies ist nur für progessive Videos (die meisten PAL-Filme) interessant." - -#~ msgid "Enable this for streams with wrong frame durations." -#~ msgstr "" -#~ "Aktivieren Sie dies für Streams mit falscher Anzeigedauer für Bilder." - -#~ msgid "The encoding quality of the libfame mpeg encoder library." -#~ msgstr "Die Enkodierungsqualität für die MPEC-Encoderbibliothek libfame." - -#~ msgid "Scr priorities greater 5 make the dxr3 xine's master clock." -#~ msgstr "SCR-Prioritäten größer 5 machen die DXR3 zu xine's Hauptzeitgeber." - -#~ msgid "If disabled, will assume source has 4:3 aspect ratio." -#~ msgstr "Falls deaktiviert, geht xine von einem 4:3 Seitenverhältniss aus." - -#~ msgid "" -#~ "Content other than mpeg has to pass an additional reencoding stage, " -#~ "because the dxr3 handles mpeg only." -#~ msgstr "" -#~ "Nicht-MPEG-Inhalte müssen eine zusätzliche Reenkodierungsstufe " -#~ "durchlaufen, da die DXR3 nur MPEG kann." - -#~ msgid "A greater value widens the tolerance for the overlay keycolor" -#~ msgstr "" -#~ "Ein größerer Wert vergrößert die Toleranz für die den Farbwert des " -#~ "Overlays" - -#~ msgid "input_cdda: cannot connect to host.\n" -#~ msgstr "input_cdda: Kann keine Verbindung zum Rechner aufbauen.\n" - -#~ msgid "input_cdda: unable to resolve '%s'.\n" -#~ msgstr "input_cdda: Kann '%s' nicht auflösen.\n" - -#~ msgid "input_cdda: unable to connect to '%s'.\n" -#~ msgstr "input_cdda: Kann keine Verbindung zu '%s' herstellen.\n" - -#~ msgid "use cddb feature" -#~ msgstr "Benutze CDDB-Funktionalität" - -#~ msgid "selection has no return entry" -#~ msgstr "Auswahl hat keinen Rückkehreintrag" - -#~ msgid "selection has no default entry" -#~ msgstr "Auswahl hat keinen Standardeintrag" - -#~ msgid "selection has no previous entry" -#~ msgstr "Auswahl hat keinen Zurück-Eintrag" - -#~ msgid "" -#~ "Format used in the GUI Title. Similar to the Unix date command. Format " -#~ "specifiers that start with a percent sign. Specifiers are same as the " -#~ "title_format." -#~ msgstr "" -#~ "Format für den GUI-Titel. Ähnlich dem UNIX-date-Kommando starten " -#~ "Formatfelder mit einem Prozentzeichen. Formatfelder sind %A, %C, %c, %F, %" -#~ "I, %L, %N, %P, %p, %S, %T, %V, %v, and %%." - -#~ msgid "This integer when viewed in binary is a debugging mask" -#~ msgstr "" -#~ "Als Binärzahl beschreibt diese Zahl die anzuzeigenden Fehlermeldungen" - -#~ msgid "path to your local vcd device file" -#~ msgstr "Pfad zum lokalen VideoCD-Laufwerk" - -#~ msgid "a/52 volume control" -#~ msgstr "A/52 Lautstärke" - -#~ msgid "Relative path to libdivxdecore.so to open" -#~ msgstr "Relativer Pfad zu libdivxdecore.so" - -#~ msgid "the postprocessing level, 0 = none and fast, 6 = all and slow" -#~ msgstr "" -#~ "Nachbearbeitungsstufe, 0 = keine, aber schnell, 6 = alles, dafür langsam" - -#~ msgid "use divx4 plugin for msmpeg4v3 streams" -#~ msgstr "Benutzte divx4-Plugin für MSmpeg4v3-Ströme" - -#~ msgid "Divx version to check for (set to 0 (default) if unsure)" -#~ msgstr "" -#~ "Zu überprüfende Divx-Version (Falls unsicher, Standardwert 0 belassen)" - -#~ msgid "" -#~ "The bitrate the libavcodec mpeg encoder should use for dxr3's encoding " -#~ "mode" -#~ msgstr "" -#~ "Bitrate für den libavcodec MPEG-Encoder, die im dxr3-Kodierungsmodus " -#~ "benutzt werden soll." - -#~ msgid "Dxr3enc: Use quantizer instead of bitrate" -#~ msgstr "Dxr3enc: Benutze Quantisierer anstatt von Bitrate" - -#~ msgid "Dxr3enc: Minimum quantizer" -#~ msgstr "Dxr3enc: Minimaler Quantisierer" - -#~ msgid "ffmpeg_video_dec: invalid/unknown frame rate code: %d \n" -#~ msgstr "" -#~ "ffmpeg_video_dec: Ungültiger/Unbekannter Bildwiederholratencode: %d\n" - -#~ msgid "" -#~ "Define this to non-zero, if you want automatically hide subtitle after " -#~ "given time. Used only with subtitle formats, where are no end time." -#~ msgstr "" -#~ "Geben Sie einen Wert ungleich Null ann, falls Untertitel automatisch nach " -#~ "dieser Zeit ausgeblendet werden sollen. Wird nur bei Untertitelformaten " -#~ "benutzt, die keine Endzeit haben." - -#~ msgid "Subtitle size (relative window size)" -#~ msgstr "Untertitelgröße (Relativ zu Fenstergröße)" - -#~ msgid "" -#~ "xvid: there is mismatch between API used by currently installed XviD\n" -#~ "xvid: library (%d.%d) and library used to compile this plugin (%d.%d).\n" -#~ "xvid: Compiling this plugin against current XviD library should help.\n" -#~ msgstr "" -#~ "xvid: Es existiert ein API-Versionsunterschied zwischen der verwendeten\n" -#~ " XviD-Bibliothek (%d.%d) und der Version zum Übersetzungszeitpunkt\n" -#~ " (%d.%d). Das Neuübersetzten mit der momentanen Bibliothek sollte " -#~ "hefen.\n" - -#~ msgid "gamma correction for OpenGL driver" -#~ msgstr "Gamma-Korrektur für OpenGL-Treiber" - -#~ msgid "syncfb (teletux) device node" -#~ msgstr "Gerät für SyncFB (TeleTUX)" - -#~ msgid "video_out_xshm: No thread-safe X libraries available.\n" -#~ msgstr "video_out_xshm: Keine Thread-sichere X Bibliothek verfügbar.\n" - -#~ msgid "gamma correction for XShm driver" -#~ msgstr "Gamma-Korrektur für XShm-Treiber" - -#~ msgid "Colorkey used for Xv video overlay" -#~ msgstr "Farbschlüssel für Xv Videooverlay" - -#~ msgid "double buffer to sync video to the retrace" -#~ msgstr "Schattenpuffer zur Synchronisation mit Strahlenrücklauf" - -#~ msgid "workaround for some (buggy) XVideo drivers" -#~ msgstr "Workaraound für einige (fehlerhafte) XVideo-Treiber" - -#~ msgid "Software deinterlace method (Key I toggles deinterlacer on/off)" -#~ msgstr "" -#~ "Software Deinterlacing Methode (Taste 'i' schaltet Deinterlacing ein/aus)" - -#~ msgid "video_out_xv: No thread-safe X libraries available.\n" -#~ msgstr "video_out_xv: Keine Thread-sichere X Bibliothek verfügbar.\n" - -#~ msgid "" -#~ "'resample' might be better if you use a DXR3/H+ card and (analog) audio " -#~ "is processed by your sound card" -#~ msgstr "" -#~ "'resample' kann besser sein, falls eine DXR3/H+ Karte verwendet wird und " -#~ "(analoges) Audio über die Soundkarte wiedergegeben wird" - -#~ msgid "adjust whether resampling is done or not" -#~ msgstr "Audiofrequenz anpassen oder nicht" - -#~ msgid "adjust if audio is offsync" -#~ msgstr "Anpassen, wenn Audio nicht synchron ist" - -#~ msgid "Streams will be saved only into this directory" -#~ msgstr "Datenströme werden nur in dieses Verzeichnis gesichert" - -#~ msgid "Memcopy method to use in xine for large data chunks." -#~ msgstr "Kopiermethode für große Datenbereiche." - -#~ msgid "/dev/dsp# device to use for oss output, -1 => auto_detect" -#~ msgstr "/dev/dsp# Gerät für OSS-Soundausgabe, -1 für automatische Erkennung" - -#~ msgid "" -#~ "demux_mpeg_block: too many errors, stopping playback. Maybe this stream " -#~ "is scrambled?\n" -#~ msgstr "" -#~ "demux_mpeg_block: Zu viele Fehler, breche den Abspielvorgang ab. Ist " -#~ "dieser Datenstrom möglicherweise fehlerhaft ?\n" - -#~ msgid "input not seekable, can not handle!\n" -#~ msgstr "Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "valid mrls for pes demuxer" -#~ msgstr "Gültige MRLs für PES-Demultiplexer" - -#~ msgid "valid mrls ending for pes demuxer" -#~ msgstr "Gültige MRL-Endungen für PES-Demultiplexer" - -#~ msgid "RTP: waiting for preview data\n" -#~ msgstr "RTP: Warte auf Vorschaudaten\n" - -#~ msgid "RTP: waiting for preview data: timeout\n" -#~ msgstr "RTP: Warte auf Vorschaudaten: Zeitüberschreitung\n" - -#~ msgid "Opening >%s<\n" -#~ msgstr "Öffne >%s<\n" - -#~ msgid "Connecting MMS server..." -#~ msgstr "Kontaktiere MMS Server..." - -#~ msgid "subtitle size (relative window size)" -#~ msgstr "Untertitelgröße (Relativ zu Fenstergröße)" - -#~ msgid "" -#~ "FLI: in chunk FLI_COPY : source data (%d bytes) bigger than image, " -#~ "skipping chunk\n" -#~ msgstr "" -#~ "FLI: In Paket FLI_COPY : Quelldaten (%d Bytes) größer als Bild, " -#~ "überspringe Paket\n" - -#~ msgid "FLI: Unrecognized chunk type: %d\n" -#~ msgstr "FLI: Nicht erkanntes PaketTyp: %d\n" - -#~ msgid "" -#~ " warning: processed FLI chunk where chunk size = %d\n" -#~ " and final chunk ptr = %d\n" -#~ msgstr "" -#~ " Warnung: Bearbeite FLI-Paket mit Paketgröße = %d,\n" -#~ " aber endgültiger Paketzeiger = %d\n" - -#~ msgid "MS RLE: stream ptr just went out of bounds (1)\n" -#~ msgstr "MS RLE: Datenstromzeiger außerhalb des gültigen Bereichs (1)\n" - -#~ msgid "MS RLE: frame ptr just went out of bounds (1)\n" -#~ msgstr "MS RLE: Bildzeiger außerhalb des gültigen Bereichs (1)\n" - -#~ msgid "MS RLE: stream ptr just went out of bounds (2)\n" -#~ msgstr "MS RLE: Datenstromzeiger außerhalb des gültigen Bereichs (2)\n" - -#~ msgid "MS RLE: frame ptr just went out of bounds (2)\n" -#~ msgstr "MS RLE: Bildzeiger außerhalb des gültigen Bereichs (2)\n" - -#~ msgid "MS RLE: ended frame decode with bytes left over (%d < %d)\n" -#~ msgstr "MS RLE: Dekodierung beende mit überschüssigen Bytes (%d < %d)\n" - -#~ msgid "warning: block counter just went negative (this should not happen)\n" -#~ msgstr "Warnung: Blockzähler wurde negativ (sollte nicht passieren)\n" - -#~ msgid "First chunk byte is 0x%02x instead of 0x1e\n" -#~ msgstr "Erstes Paketbyte ist 0x%02x anstatt von 0x1e\n" - -#~ msgid "MOV chunk size != encoded chunk size; using MOV chunk size\n" -#~ msgstr "MOV-Paketgröße != kodierter Paketgröße; benutzte MOV-Paketgröße\n" - -#~ msgid "" -#~ "Unknown opcode %d in rpza chunk. Skip remaining %d bytes of chunk data.\n" -#~ msgstr "" -#~ "Unbekannter OpCode %d in rpza-Paket. Überspringe verbleibende %d Bytes in " -#~ "Paketdaten\n" - -#~ msgid "" -#~ "warning: MOV chunk size != encoded chunk size (%d != %d); using MOV chunk " -#~ "size\n" -#~ msgstr "" -#~ "Warnung: MOV-Paketgröße != kodierter Paketgröße (%d != %d); benutzte MOV-" -#~ "Paketgröße\n" - -#~ msgid "" -#~ "SMC decoder just went out of bounds (stream ptr = %d, chunk size = %d)\n" -#~ msgstr "" -#~ "SMC-Dekodierer außerhalb des zulässigen Bereichs (Datenstromzeiger = %d, " -#~ "Paketgröße = %d)\n" - -#~ msgid "SMC decoder just went out of bounds (row ptr = %d, height = %d)\n" -#~ msgstr "" -#~ "SMC-Dekodierer außerhalb des zulässigen Bereichs (Datenstromzeiger = %d, " -#~ "Höhe = %d)\n" - -#~ msgid "encountered repeat block opcode (%02X) but no blocks rendered yet\n" -#~ msgstr "" -#~ "Wiederholungs-Block-OpCode (%02X) erkannt, aber bisher kein Block " -#~ "gerendert\n" - -#~ msgid "" -#~ "encountered repeat block opcode (%02X) but not enough blocks rendered " -#~ "yet\n" -#~ msgstr "" -#~ "Wiederholungs-Block-OpCode (%02X) erkannt, aber noch nicht genügend " -#~ "Blocks gerendert\n" - -#~ msgid "0xF0 opcode seen in SMC chunk (xine developers would like to know)\n" -#~ msgstr "" -#~ "0xF0 OpCOde in SMC-Paket entdeckt (Bitte an die xine-Entwickler melden)\n" - -#~ msgid "Default x position" -#~ msgstr "Standard-X-Position" - -#~ msgid "Default y position" -#~ msgstr "Standard-Y-Position" - -#~ msgid "Default width" -#~ msgstr "Standardbreite" - -#~ msgid "Default height" -#~ msgstr "Standardhöhe" - -#~ msgid "Default active stream" -#~ msgstr "Standardstrom" - -#~ msgid "Enable A52 / AC5 digital audio output via spdif" -#~ msgstr "Aktiviere digitalen A52 / AC5 Raumklang via SPDIF" - -#~ msgid "demux_roq.c: input not seekable, can not handle!\n" -#~ msgstr "demux_roq.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_fli.c: input not seekable, can not handle!\n" -#~ msgstr "demux_fli.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_smjpeg.c: input not seekable, can not handle!\n" -#~ msgstr "demux_smjpeg.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_wc3movie: encountered unknown chunk: %c%c%c%c\n" -#~ msgstr "demux_wc3movie: Unbekanntes Paket entdeckt: %c%c%c%c\n" - -#~ msgid "input_http: unable to resolve >%s<\n" -#~ msgstr "input_http: Kann >%s< nicht auflösen\n" - -#~ msgid "input_http: timeout\n" -#~ msgstr "input_http: Zeitüberschreitung\n" - -#~ msgid "input_http: opening >/%s< on host >%s<" -#~ msgstr "input_http: Öffne >/%s< auf Rechner >%s<" - -#~ msgid "%s via proxy >%s<" -#~ msgstr "%s über Proxy >%s<" - -#~ msgid "input_http: EAGAIN\n" -#~ msgstr "input_http: EAGAIN\n" - -#~ msgid "NVidia TV-Out support." -#~ msgstr "Unterstützung für NVidia TV-Ausgang" - -#~ msgid "demux_wav.c: input not seekable, can not handle!\n" -#~ msgstr "demux_wav.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_aiff.c: input not seekable, can not handle!\n" -#~ msgstr "demux_aiff.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_snd.c: input not seekable, can not handle!\n" -#~ msgstr "demux_snd.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_voc.c: input not seekable, can not handle!\n" -#~ msgstr "demux_voc.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "Dxr3: contrast control" -#~ msgstr "DXR3: Kontrasteinstellung" - -#~ msgid "Dxr3: saturation control" -#~ msgstr "DXR3: Sättigungseinstellung" - -#~ msgid "OUCH - ran out of buffers\n" -#~ msgstr "OUCH - Es steht kein Speicher mehr zur Verfügung\n" - -#~ msgid "OUCH - dropped input packet %d %d\n" -#~ msgstr "OUCH - Packet %d %d verworfen\n" - -#~ msgid "rtp input plugin as shipped with xine" -#~ msgstr "Mit xine ausgeliefertes rtp Plugin" - -#~ msgid "demux_mpgaudio: no audio driver!\n" -#~ msgstr "demux_mpgaudio: Kein Audio-Treiber!\n" - -#~ msgid "demux_qt.c: input is block organized, can not handle!\n" -#~ msgstr "demux_qt.c: Quelle ist blockbasiert, wird nicht unterstützt!\n" - -#~ msgid "demux_film.c: input not seekable, can not handle!\n" -#~ msgstr "demux_film.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_idcin.c: input not seekable, can not handle!\n" -#~ msgstr "demux_idcin.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_mve.c: input not seekable, can not handle!\n" -#~ msgstr "demux_mve.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_cda.c: input not seekable, can not handle!\n" -#~ msgstr "demux_cda.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "input_cda: ioctl(CDROM_MEDIA_CHANGED) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROM_MEDIA_CHANGED) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMSUBCHNL) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMSUBCHNL) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDIOCSTART) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOCSTART) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMSTART) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMSTART) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDIOCPLAYMSF) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOCPLAYMSF) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMPLAYMSF) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMPLAYMSF) schlug fehl: %s.\n" - -#~ msgid "input_cda: No rights to open %s.\n" -#~ msgstr "input_cda: Keine Rechte zum öffnen von %s.\n" - -#~ msgid "input_cda: ioctl(CDROMCLOSETRAY) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROMCLOSETRAY) schlug fehl: %s\n" - -#~ msgid "input_cda: ioctl(CDROMEJECT) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROMEJECT) schlug fehl: %s\n" - -#~ msgid "input_cda: ioctl(CDROM_DRIVE_STATUS) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROM_DRIVE_STATUS) schlug fehl: %s\n" - -#~ msgid "input_cda: ioctl(CDROMALLOW) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROMALLOW) schlug fehl: %s\n" - -#~ msgid "input_cda: ioctl(CDIOREADTOCHEADER) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOREADTOCHEADER) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMREADTOCHDR) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMREADTOCHDR) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDIOREADTOCENTRYS) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOREADTOCENTRYS) schlug fehl: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMREADTOCENTRY) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMREADTOCRNTRY) schlug fehl: %s.\n" - -#~ msgid "input_cda: malformed MRL. Use cda:/<track #>\n" -#~ msgstr "input_cda: Ungültige MRL. Benutze cda:/<Track #>\n" - -#~ msgid "input_cda: invalid track %d (valid range: 1 .. %d)\n" -#~ msgstr "input_cda: Fehlerfafter Track %d (Gültiger Bereich: 1 .. %d)\n" - -#~ msgid "input_cda: error seek to origin %d not implemented!\n" -#~ msgstr "input_cda: Fehler Positionierung auf %d nicht implementiert!\n" - -#~ msgid "cd audio plugin as shipped with xine" -#~ msgstr "Mit xine ausgeliefertes Audio-CD Plugin" - -#~ msgid "demux_qt: Apple Quicktime file, %srunning time: %d min, %d sec\n" -#~ msgstr "demux_qt: Apple Quicktime Datei, %sLaufzeit: %d min, %d sek\n" - -#~ msgid "demux_qt: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_qt: '%c%c%c%c' Video @ %dx%d\n" - -#~ msgid "demux_qt: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_qt: '%c%c%c%c' Audio @ %d Hz, %d Bits, %d %s\n" - -#~ msgid "demux_film: FILM version %c%c%c%c, running time: %d min, %d sec\n" -#~ msgstr "demux_film: FILM Version %c%c%c%c, Laufzeit: %d min, %d sek\n" - -#~ msgid "demux_film: %c%c%c%c video @ %dx%d, %d Hz playback clock\n" -#~ msgstr "" -#~ "demux_film: %c%c%c%c Video @ %dx%d, %d Hz Wiedergabegeschwindigkeit\n" - -#~ msgid "demux_film: %d Hz, %d-bit %s%s PCM audio\n" -#~ msgstr "demux_film: %d Hz, %d-Bits %s%s PCM Audio\n" - -#~ msgid "demux_roq: RoQ file, video is %dx%d, %d frames/sec\n" -#~ msgstr "demux_roq: RoQ Datei, Video ist %dx%d, %d Bilder/s\n" - -#~ msgid "demux_roq: 16-bit, 22050 Hz %s RoQ DPCM audio\n" -#~ msgstr "demux_roq: 16-Bit, 22050 Hz %s RoQ DPCM Audio\n" - -#~ msgid "demux_fli: FLI type: %04X, speed: %d/%d\n" -#~ msgstr "demux_fli: FLI Typ: %04X, Geschwindigkeit: %d/%d\n" - -#~ msgid "demux_fli: %d frames, %dx%d\n" -#~ msgstr "demux_fli: %d Frames, %dx%d\n" - -#~ msgid "demux_fli: running time: %d min, %d sec\n" -#~ msgstr "demux_fli: Laufzeit: %d min, %d sek\n" - -#~ msgid "demux_idcin: Id CIN file, video is %dx%d, 14 frames/sec\n" -#~ msgstr "demux_idcin: Id CIN Datei, Video ist %dx%d, 14 Bilder/s\n" - -#~ msgid "demux_idcin: %d-bit, %d Hz %s PCM audio\n" -#~ msgstr "demux_idcin: %d Bits, %d Hz %s PCM Audio\n" - -#~ msgid "demux_smjpeg: SMJPEG file, running time: %d min, %d sec\n" -#~ msgstr "demux_smjpeg: SMJPEG Datei, Laufzeit: %d min, %d sek\n" - -#~ msgid "demux_smjpeg: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_smjpeg: '%c%c%c%c' Video @ %dx%d\n" - -#~ msgid "demux_smjpeg: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_smjpeg: '%c%c%c%c' Audio @ %d Hz, %d Bits, %d %s\n" - -#~ msgid "demux_wav: format 0x%X audio, %d Hz, %d bits/sample, %d %s\n" -#~ msgstr "demux_wav: Format 0x%X Audio, %d Hz, %d Bits/Sample, %d %s\n" - -#~ msgid "demux_wav: running time = %lld min, %lld sec\n" -#~ msgstr "demux_wav: Laufzeit: %lld min, %lld sek\n" - -#~ msgid "demux_wav: average bytes/sec = %d, block alignment = %d\n" -#~ msgstr "demux_wav: Durchschnitt: %d Bytes/s, Blockausrichtung: %d\n" - -#~ msgid "demux_aiff: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_aiff: '%d Hz, %d Kanäle, %d Bits, %d Bilder\n" - -#~ msgid "demux_aiff: running time: %d min, %d sec\n" -#~ msgstr "demux_aiff: Laufzeit: %d min, %d sek\n" - -#~ msgid "demux_snd: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_snd: %d Hz, %d Kanäle, %d Bits, %d Bilder\n" - -#~ msgid "demux_snd: running time: %d min, %d sec\n" -#~ msgstr "demux_snd: Laufzeit: %d min, %d sek\n" - -#~ msgid "" -#~ "demux_voc: VOC format 0x%X audio, %d Hz, running time: %d min, %d sec\n" -#~ msgstr "demux_voc: VOC Format 0x%X Audio, %d Hz, Laufzeit: %d min, %d sek\n" - -#~ msgid "subtitle time offset in 1/100 sec" -#~ msgstr "Untertitelverzögerung in 1/100 s" - -#~ msgid "target encoding for subtitles (have to match font encoding)" -#~ msgstr "" -#~ "Zielzeichenkodierung für Untertitel (muß mit Zeichensatzkodierung " -#~ "übereinstimmen)" - -#~ msgid "xine audio output plugin using arts-compliant audio devices/drivers" -#~ msgstr "xine Soundausgabe benutzt ARTS-kompatibles Gerät/Treiber" - -#~ msgid "allow illegal vlc codes in mpeg4 streams" -#~ msgstr "Akzeptiere illegale 'vlc'-Codes in MPEG4 Strömen" - -#~ msgid "demux_vqa.c: input not seekable, can not handle!\n" -#~ msgstr "demux_vqa.c: Quelle nicht spulbar, wird nicht unterstützt!\n" - -#~ msgid "demux_vqa: %dx%d VQA video; %d-channel %d Hz IMA ADPCM audio\n" -#~ msgstr "demux_vqa: %dx%d VQA-Video; %d-Kanal %d Hz IMA ADPCM Audio\n" - -#~ msgid "demux_ts: FIXME: (unsupported )PAT spans multiple TS packets\n" -#~ msgstr "" -#~ "demux_ts: FIXME: (nicht unterstützt) PAT umfasst mehrere TS Packete\n" - -#~ msgid "" -#~ "demux_ts: FIXME: (unsupported) PAT consists of multiple (%d) sections\n" -#~ msgstr "" -#~ "demux_ts: FIXME: (nicht unterstützt) PAT besteht aus mehreren (%d) " -#~ "Sektionen\n" - -#~ msgid "" -#~ "demux_ts: demux error! PAT with invalid CRC32: packet_crc32: %.8x " -#~ "calc_crc32: %.8x\n" -#~ msgstr "" -#~ "demux_ts: demux Fehler! PAT mit fehlerhaftem CRC32: packet_crc32: %.8x " -#~ "calc_crc32: %.8x\n" - -#~ msgid "demux_ts: error %02x %02x %02x (should be 0x000001)\n" -#~ msgstr "demux_ts: Fehler %02x %02x %02x (sollte 0x000001 sein)\n" - -#~ msgid "fifo unavailable (%d)\n" -#~ msgstr "fifo nicht verfügbar (%d)\n" - -#~ msgid "demux_ts: unexpected cc %d (expected %d)\n" -#~ msgstr "demux_ts: Unerwarteter Untertitel %d (%d erwartet)\n" - -#~ msgid "demux_ts: corrupted pes encountered\n" -#~ msgstr "demux_ts: Fehlerhaften PES entdeckt\n" - -#~ msgid "demux error! PMT with invalid pointer\n" -#~ msgstr "demux Fehler! PMT mit fehlerhaftem Zeiger\n" - -#~ msgid "" -#~ "demux_ts: demux error! PMT with invalid CRC32: packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" -#~ msgstr "" -#~ "demux_ts: demux Fehler! PMT mit fehlerhaftem CRC32: packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" - -#~ msgid "demux error! PMT with inconsistent progInfo length\n" -#~ msgstr "demux Fehler! PMT mit inkosistenter progInfo-Länge\n" - -#~ msgid "demux error! PMT with inconsistent streamInfo length\n" -#~ msgstr "demux Fehler! PMT mit inkosistenter streamInfo-Länge\n" - -#~ msgid "demux error! invalid ts sync byte %.2x\n" -#~ msgstr "demux Fehler! Fehlerhaftes TS-Sync-Byte %.2x\n" - -#~ msgid "demux error! transport error\n" -#~ msgstr "demux Fehler! Transportfehler\n" - -#~ msgid "demux_ts: demux error! invalid payload size %d\n" -#~ msgstr "demux_ts: demux Fehler! Fehlerhafte Nutzdaten Größe %d\n" - -#~ msgid "valid mrls for ts demuxer" -#~ msgstr "Gültige MRLs für TS-Demultiplexer" - -#~ msgid "demux %u ts_open!\n" -#~ msgstr "demux %u ts_open!\n" - -#~ msgid "valid mrls ending for ts demuxer" -#~ msgstr "Gültige MRL-Endungen für TS-Demultiplexer" - -#~ msgid "demux_ts: can't create new thread (%s)\n" -#~ msgstr "demux_ts: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "stdin/fifo input plugin as shipped with xine" -#~ msgstr "Mit xine ausgeliefertes stdin/fifi Plugin" - -#~ msgid "input_vcd : error in ioctl CDROMREADTOCHDR\n" -#~ msgstr "input_vcd: Fehler in ioctl CDROMREADTOCHDR\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY for track %d\n" -#~ msgstr "input_vcd: Fehler in ioctl CDROMREADTOCENTRY für Track %d\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY for lead-out\n" -#~ msgstr "input_vcd: Fehler in ioctl CDROMREADTOCENTRY für Abschluß\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY\n" -#~ msgstr "input_vcd: Fehler in ioctl CDROMREADTOCENTRY\n" - -#~ msgid "scsi command failed with status %d\n" -#~ msgstr "SCSI-Kommando schlug mit dem Status %d fehl\n" - -#~ msgid "input_vcd: error in CDRIOCSETBLOCKSIZE %d\n" -#~ msgstr "input_vcd: Fehler in CDRIOCSETBLOCKSIZE %d\n" - -#~ msgid "input_vcd: error in CDROMREADRAW\n" -#~ msgstr "input_vcd: Fehler in CDROMREADRAW\n" - -#~ msgid "input_vcd: seek error %d\n" -#~ msgstr "input_vcd: Positionierungsfehler %d\n" - -#~ msgid "input_vcd: read error %d\n" -#~ msgstr "input_vcd: Lesefehler %d\n" - -#~ msgid "input_vcd: error seek to origin %d not implemented!\n" -#~ msgstr "input_vcd: Fehler Positionierung auf %d nicht implementiert!\n" - -#~ msgid "input_vcd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_vcd: Das Einziegen der VCD schlug fehl: %s\n" - -#~ msgid "input_vcd: CDROMEJECT failed: %s\n" -#~ msgstr "input_vcd: Das Auswerfen der VCD schlug fehl: %s\n" - -#~ msgid "input_vcd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_vcd: Auslesen vom Status des VCD-Laufwerks schlug fehl: %s\n" - -#~ msgid "vcd device input plugin as shipped with xine" -#~ msgstr "Mit xine ausgeliefertes VCD Plugin" - -#~ msgid "vcd_read_toc failed\n" -#~ msgstr "vcd_read_toc schlug fehl\n" - -#~ msgid "valid mrls ending for avi demuxer" -#~ msgstr "Gültige MRL-Endungen für AVI-Demultiplexer" - -#~ msgid "valid mrls ending for elementary demuxer" -#~ msgstr "Gültige MRL-Endungen für 'elementary'-Demultiplexer" - -#~ msgid "valid mrls for mpeg demuxer" -#~ msgstr "Gültige MRLs für MPEG-Demultiplexer" - -#~ msgid "demux_mpeg: please specify mpeg(mpeg1/mpeg2) stream type.\n" -#~ msgstr "demug_mpeg: Bitte mpeg(mpeg1/mpeg2) Datenstromtyp angeben.\n" - -#~ msgid "valid mrls ending for mpeg demuxer" -#~ msgstr "Gültige MRL-Endungen für MPEG-Demultiplexer" - -#~ msgid "valid mrls ending for mpeg audio demuxer" -#~ msgstr "Gültige MRL-Endungen für MPEG-Audio-Demultiplexer" - -#~ msgid "valid mrls ending for qt demuxer" -#~ msgstr "Gültige MRL-Endungen für QT-Demultiplexer" - -#~ msgid "valid mrls ending for ogg demuxer" -#~ msgstr "Gültige MRL-Endungen für OGG-Demultiplexer" - -#~ msgid "valid mrls ending for asf demuxer" -#~ msgstr "Gültige MRL-Endungen für ASF-Demultiplexer" - -#~ msgid "valid mrls ending for film demuxer" -#~ msgstr "Gültige MRL-Endungen für FILM-Demultiplexer" - -#~ msgid "valid mrls for mpeg block demuxer" -#~ msgstr "Gültige MRLs für MPEG-Block-Demultiplexer" - -#~ msgid "valid mrls ending for mpeg block demuxer" -#~ msgstr "Gültige MRL-Endungen für MPEG-Block-Demultiplexer" - -#~ msgid "valid mrls ending for roq demuxer" -#~ msgstr "Gültige MRL-Endungen für RoQ-Demultiplexer" - -#~ msgid "valid mrls ending for idcin demuxer" -#~ msgstr "Gültige MRL-Endungen für IdCIN-Demultiplexer" - -#~ msgid "valid mrls ending for smjpeg demuxer" -#~ msgstr "Gültige MRL-Endungen für SMJPEG-Demultiplexer" - -#~ msgid "valid mrls ending for wav demuxer" -#~ msgstr "Gültige MRL-Endungen für WAV-Demultiplexer" - -#~ msgid "valid mrls ending for aiff demuxer" -#~ msgstr "Gültige MRL-Endungen für AIFF-Demultiplexer" - -#~ msgid "valid mrls ending for snd demuxer" -#~ msgstr "Gültige MRL-Endungen für SND-Demultiplexer" - -#~ msgid "valid mrls ending for voc demuxer" -#~ msgstr "Gültige MRL-Endungen für VOC-Demultiplexer" - -#~ msgid "valid mrls ending for vqa demuxer" -#~ msgstr "Gültige MRL-Endungen für VQA-Demultiplexer" - -#~ msgid "valid mrls ending for mve demuxer" -#~ msgstr "Gültige MRL-Endungen für MVE-Demultiplexer" - -#~ msgid "Xv property" -#~ msgstr "Xv Eingenschaften" - -#~ msgid "" -#~ "demux_film: This is not a FILM file (why was it sent to this demuxer?\n" -#~ msgstr "" -#~ "demux_film: Das ist keine FILM-Datei (Warum dieser Demultiplexer?)\n" - -#~ msgid "demux_film: unknown video codec %c%c%c%c\n" -#~ msgstr "demux_film: Unbekannter Video-Codec %c%c%c%c\n" - -#~ msgid "demux_vqa: running time: %d min, %d sec\n" -#~ msgstr "demux_vga: Laufzeit: %d min, %d sek\n" - -#~ msgid "lstat failed for %s{%s}\n" -#~ msgstr "lstat schlug fehl für %s{%s}\n" - -#~ msgid "%s(%d): readlink() failed: %s\n" -#~ msgstr "%s(%d): readlink() schlug fehl: %s\n" - -#~ msgid "plain file input plugin as shipped with xine" -#~ msgstr "Mit xine ausgeliefertes Datei Plugin" - -#~ msgid "input_file: get optional data, type %08x, sub %p\n" -#~ msgstr "input_file: Bekomme zusätzliche Daten, Typ %08x, sub %p\n" - -#~ msgid "origin path to grab file mrls" -#~ msgstr "Startverzeichnis für Datei-MRLs" - -#~ msgid "hidden files displaying." -#~ msgstr "Versteckte Dateien anzeigen." - -#~ msgid "xine_notify_stream_finished: can't create new thread (%s)\n" -#~ msgstr "xine_notify_stream_finished: Kann neuen Thread (%s) nicht anlegen\n" - -#~ msgid "demux_avi: video format = %s\n" -#~ msgstr "demux_avi: Videoformat = %s\n" - -#~ msgid "demux_avi: video frame size %ld x %ld\n" -#~ msgstr "demux_avi: Video-Bildgröße %ld x %ld\n" - -#~ msgid "demux_avi: audio format[%d] = 0x%lx\n" -#~ msgstr "demux_avi: Audioformat[%d] = 0x%lx\n" - -#~ msgid "demux_avi: unknown audio type 0x%lx\n" -#~ msgstr "demux_avi: Unbekannter Audiotyp 0x%lx\n" - -#~ msgid "demux_avi: audio type %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_avi: Audiotyp %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_avi: unknown video codec '%.4s'\n" -#~ msgstr "demux_avi: Unbekannter Video-Codec '%.4s'\n" - -#~ msgid "demux_avi: video codec is '%s'\n" -#~ msgstr "demux_avi: Video Codec ist '%s'\n" - -#~ msgid "mp3: song title '%s'\n" -#~ msgstr "mp3: Titel '%s'\n" - -#~ msgid "mp3: artist '%s'\n" -#~ msgstr "mp3: Künstler '%s'\n" - -#~ msgid "mp3: album '%s'\n" -#~ msgstr "mp3: Album '%s'\n" - -#~ msgid "demux_mpgaudio: MPEG %s Layer %d %ldkbps\n" -#~ msgstr "demux_mpgaudio: MPEG %s Layer %d %ldkbps\n" - -#~ msgid "ogg: vorbis avg. bitrate %d, samplerate %d\n" -#~ msgstr "ogg: vorbis durchschnittliche Bitrate %d, Sampelrate %d\n" - -#~ msgid "ogg: video format %.4s, frame size %d x %d, %d fps\n" -#~ msgstr "ogg: Videoformat %.4s, Video-Bildgröße %d x %d, %d BpS\n" - -#~ msgid "ogg: old header detected but stream type is unknown\n" -#~ msgstr "ogg: Alten Header erkannt, aber Datenstromtyp unbekannt\n" - -#~ msgid "" -#~ "ogg: unknown stream type (signature >%.8s<). hex dump of bos packet " -#~ "follows:\n" -#~ msgstr "" -#~ "ogg: Unbekannter Datenstromtyp (Signatur >%.8s<). Hex-Dump dieser Pakete " -#~ "folgt:\n" - -#~ msgid "demux_asf: audio format : %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_asf: Audioformat: %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_asf: video format : %s\n" -#~ msgstr "demux_asf: Videoformat: %s\n" - -#~ msgid "demux_asf: stream length is %d sec, rate is %d bytes/sec\n" -#~ msgstr "demux_asf: Datenstrom länge ist %d sek., Rate ist %d bytes/sek.\n" - -#~ msgid "demux_asf: title : %s\n" -#~ msgstr "demux_asf: Titel : %s\n" - -#~ msgid "demux_asf: author : %s\n" -#~ msgstr "demux_asf: Autor : %s\n" - -#~ msgid "demux_asf: comment : %s\n" -#~ msgstr "demux_asf: Kommentar : %s\n" - -#~ msgid "demux_mpeg_block: unknown block size. try using demux_mpeg.\n" -#~ msgstr "demux_mpeg_block: Unbekannte Blockgröße. Versuche demux_mpeg.\n" - -#~ msgid "system layer format '%s' detected.\n" -#~ msgstr "System-layer Format '%s' erkannt.\n" - -#~ msgid "stream format" -#~ msgstr "Datenstrom Format" - -#~ msgid "" -#~ "demux_ts: plugin doesn't support plugin API version %d.\n" -#~ " This means there's a version mismatch between xine and this " -#~ "demuxer plugin.\n" -#~ " Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ts: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin besteht.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_avi: this plugin doesn't support plugin API version %d.\n" -#~ "demux_avi: this means there's a version mismatch between xine and this " -#~ "demux_avi: demuxer plugin.\n" -#~ "Installing current demuxer plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_elem: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_elem: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_mpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_pes: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_qt: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_ogg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: Das Plugin unterstüzt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_asf: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_cda: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_cda: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_film: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_film: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_mpeg_block: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg_block: Plugin unterstützt die-API-Version %d nicht.\n" -#~ " Es existiert ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_roq: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_roq: Das Plugin unterstüzt die API-Version %d nicht.\n" -#~ " Es existiert ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_idcin: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_idcin: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_smjpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins " -#~ "should help.\n" -#~ msgstr "" -#~ "demux_smjpeg: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_wav: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_wav: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_aiff: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_aiff: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_snd: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_snd: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_voc: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_voc: Das Plugin unterstüzt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_vqa: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_vqa: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "demux_wc3movie: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_wc3movie: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine " -#~ "und\n" -#~ " diesem Demultiplexer-Plugin existiert.\n" -#~ "Das Installieren aktueller Demultiplexer-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "net input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das net-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "rtp input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das rtp-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "stdin/fifo input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das stdin/fifo-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "file input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Datei-Plugin unterstützt die Plugin API Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "vcd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das vcd-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "http input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das http-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "cda input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das CDA-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "libmpeg2: plugin doesn't support plugin API version %d.\n" -#~ "libmpeg2: this means there's a version mismatch between xine and this " -#~ "libmpeg2: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libmpeg2: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das installieren aktueller Dekodierungs-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "libmpg123: plugin doesn't support plugin API version %d.\n" -#~ "libmpg123: this means there's a version mismatch between xine and this " -#~ "libmpg123: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libmpg123: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Dekodierungs-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "libspudec: Doesn't support plugin API version %d.\n" -#~ "libspudec: This means there is a version mismatch between XINE and\n" -#~ "libspudec: this plugin.\n" -#~ msgstr "" -#~ "libspudec: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Plugin existiert.\n" - -#~ msgid "" -#~ "w32codec: plugin doesn't support plugin API version %d.\n" -#~ "w32codec: this means there's a version mismatch between xine and this " -#~ "w32codec: decoder plugin.\n" -#~ "Installing current decoder plugins should help.\n" -#~ msgstr "" -#~ "w32codec: Dieses Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Dekodierungs-Plugins sollte helfen.\n" - -#~ msgid "TV System" -#~ msgstr "TV System" - -#~ msgid "Mode Selection Policy" -#~ msgstr "Modusauswahlregeln" - -#~ msgid "Modes" -#~ msgstr "Modi" - -#~ msgid "Prefer PAL" -#~ msgstr "Bevorzuge PAL" - -#~ msgid "Verbose resolution selection" -#~ msgstr "Ausführliche Auflösungsauswahl" - -#~ msgid "Screen Aspect Ratio" -#~ msgstr "Bildschirmseitenverhältnis" - -#~ msgid "%s(%d) wrong first stage = %d !!\n" -#~ msgstr "%s(%d) Fehlerhafte 1. Stufe = %d !!\n" - -#~ msgid "%s(%s@%d): parameter should be non null, exiting\n" -#~ msgstr "%s(%s@%d): Parameter sollte nicht null sein, Beende jetzt\n" - -#~ msgid "load_plugins: demux plugin found : %s\n" -#~ msgstr "load_plugins: Demultiplexer-Plugin gefunden : %s\n" - -#~ msgid "load_plugins: too many demux plugins installed, exiting.\n" -#~ msgstr "" -#~ "load_plugins: Zu viele Demultiplexer-Plugins installiert, beende jetzt.\n" - -#~ msgid "" -#~ "load_plugins: %s is no valid input plugin (lacks init_input_plugin() " -#~ "function)\n" -#~ msgstr "" -#~ "load_plugins: %s ist kein brauchbares Plugin (init_input_plugin() " -#~ "Funktion fehlt)\n" - -#~ msgid "%s(%d): too many input plugins installed, exiting.\n" -#~ msgstr "%s(%d): Zu viele Eingabe-Plugins installiert, Beende jetzt.\n" - -#~ msgid "" -#~ "load_plugins: no input plugins found in %s! - Did you install xine " -#~ "correctly??\n" -#~ msgstr "" -#~ "load_plugins: Keine Eingabe-Plugins in %s gefunden! - Ist xine richtig " -#~ "Installiert??\n" - -#~ msgid "spu decoder plugin found : %s\n" -#~ msgstr "spu-Dekodierungs-Plugin gefunden : %s\n" - -#~ msgid "" -#~ "liblpcm: plugin doesn't support plugin API version %d.\n" -#~ "liblpcm: this means there's a version mismatch between xine and this " -#~ "liblpcm: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "liblpcm: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Dekodierungs-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "ffmpeg: plugin doesn't support plugin API version %d.\n" -#~ "ffmpeg: this means there's a version mismatch between xine and this " -#~ "ffmpeg: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "ffmpeg: Das Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das installieren aktueller Dekodierungs-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "dxr3_decode_spu: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_spu: this means there's a version mismatch between xine and " -#~ "this dxr3_decode_spu: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "dxr3_decode_spu: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine " -#~ "und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Dekodierungs-Plugins sollte helfen.\n" - -#~ msgid "" -#~ "dxr3_decode_video: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_video: this means there's a version mismatch between xine and " -#~ "this\n" -#~ "dxr3_decode_video: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "dxr3_decode_video: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine " -#~ "und\n" -#~ " diesem Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "Dxr3: video decoder priority" -#~ msgstr "DXR3: Videodekoder Priorität" - -#~ msgid "" -#~ "Decoder priorities greater 5 enable hardware decoding, 0 disables it." -#~ msgstr "" -#~ "Dekoderprioritäten größer 5 aktivieren Hardwaredekodierung, 0 deaktiviert " -#~ "sie." - -#~ msgid "" -#~ "libmad: plugin doesn't support plugin API version %d.\n" -#~ "libmad: this means there's a version mismatch between xine and this " -#~ "libmad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libmad: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "liba52: plugin doesn't support plugin API version %d.\n" -#~ "liba52: this means there's a version mismatch between xine and this " -#~ "liba52: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "libdts: plugin doesn't support plugin API version %d.\n" -#~ "libdts: this means there's a version mismatch between xine and this " -#~ "libdts: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libdts: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "divx4: plugin doesn't support plugin API version %d.\n" -#~ "divx4: this means there's a version mismatch between xine and this divx4: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "divx4: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "priority of the divx4 plugin (>5 => enable)" -#~ msgstr "Priorität des divx4-Plugins (>5 zum aktivieren)" - -#~ msgid "" -#~ "libvorbis: plugin doesn't support plugin API version %d.\n" -#~ "libvorbis: this means there's a version mismatch between xine and this " -#~ "libvorbis: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libvorbis: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "libsputext: doesn't support plugin api version %d.\n" -#~ "libsputext: This means there is a version mismatch between xine and\n" -#~ "libsputext: this plugin.\n" -#~ msgstr "" -#~ "libsputext: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Plugin existiert.\n" - -#~ msgid "" -#~ "libspucc: doesn't support plugin api version %d.\n" -#~ "libspucc: This means there is a version mismatch between xine and\n" -#~ "libspucc: this plugin.\n" -#~ msgstr "" -#~ "libspucc: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "xvid: plugin doesn't support plugin API version %d.\n" -#~ "xvid: this means there's a version mismatch between xine and this\n" -#~ "xvid: decoder plugin. Installing current plugins should help.\n" -#~ msgstr "" -#~ "xvid: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierung-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "priority of the xvid plugin (>5 => enable)" -#~ msgstr "Priorität des xvid-Plugins (>5 zum aktivieren)" - -#~ msgid "" -#~ "cinepak: plugin doesn't support plugin API version %d.\n" -#~ "cinepak: this means there's a version mismatch between xine and this " -#~ "cinepak: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "cinepak: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierung-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "RoQ: plugin doesn't support plugin API version %d.\n" -#~ "RoQ: this means there's a version mismatch between xine and this RoQ: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "RoQ-Video: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierung-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "RoQ Audio: plugin doesn't support plugin API version %d.\n" -#~ "RoQ Audio: this means there's a version mismatch between xine and this\n" -#~ "RoQ Audio: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "RoQ-Audio: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "" -#~ "libfaad: plugin doesn't support plugin API version %d.\n" -#~ "libfaad: this means there's a version mismatch between xine and this " -#~ "libfaad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "libfaad: Plugin unterstützt die API-Version %d nicht.\n" -#~ " Das bedeutet das ein Versionsunterschied zwischen xine und\n" -#~ " diesem Dekodierungs-Plugin existiert.\n" -#~ "Das Installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "USCSICMD dvd_read_copyright: %s" -#~ msgstr "USCSICMD dvd_read_copyright: %s" - -#~ msgid "bad status: READ DVD STRUCTURE (copyright)\n" -#~ msgstr "Schlechter Status: Lese DVD-Struktur (copyright)\n" - -#~ msgid "input_dvd: Could not read Copyright Structure\n" -#~ msgstr "input_dvd: Kann Copyright-Struktur nicht lesen\n" - -#~ msgid "" -#~ "input_dvd: Could not read Copyright Structure.\n" -#~ " Assuming disk is not encrypted.\n" -#~ msgstr "" -#~ "input_dvd: Kann Copyright Struktur nicht lesen.\n" -#~ " Das Medium scheint nicht verschlüsselt zu sein.\n" - -#~ msgid "" -#~ "\n" -#~ "input_dvd: Sorry, this plugin doesn't play encrypted DVDs. The legal " -#~ "status\n" -#~ " of CSS decryption is unclear and we can't provide such code.\n" -#~ " Please check http://dvd.sf.net for more information.\n" -#~ msgstr "" -#~ "\n" -#~ "input_dvd: Tschuldigung, xine kann keine verschlüsselten DVDs abspielen.\n" -#~ " Die rechtsliche Situation bezüglich der CSS Entschlüsselung " -#~ "ist\n" -#~ " unklar, deswegen ist der Code dazu nicht in xine enthalten.\n" -#~ " Weitere Informationen finden Sie auf http://dvd.sf.net.\n" - -#~ msgid "input_dvd: Unable to find >%s< on dvd.\n" -#~ msgstr "input_dvd: Kann >%s< nicht auf der DVD finden.\n" - -#~ msgid "input_dvd: error read: %Ld bytes is not a sector!\n" -#~ msgstr "input_dvd: Lesefehler: %Ld Bytes ist kein Sektor!\n" - -#~ msgid "input_dvd: read error in input_dvd plugin (%s)\n" -#~ msgstr "input_dvd: Lesefehler im input_dvd-Plugin (%s)\n" - -#~ msgid "input_dvd: short read in input_dvd (%d != %d)\n" -#~ msgstr "input_dvd: Kurzes Lesen in input_dvd (%d != %d)\n" - -#~ msgid "" -#~ "input_dvd: error in input_dvd plugin read: %Ld bytes is not a sector!\n" -#~ msgstr "" -#~ "input_dvd: Lesefehler im input_dvd-Plugin: %Ld Bytes ist kein Sektor!\n" - -#~ msgid "input_dvd: seek: %d is an unknown origin\n" -#~ msgstr "input_dvd: seek: %d ist ein unbekannter Ursprung\n" - -#~ msgid "input_dvd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_dvd: Das Einziehen der DVD schlug fehl: %s\n" - -#~ msgid "input_dvd: CDROMEJECT failed: %s\n" -#~ msgstr "input_dvd: Das Auswerfen der DVD schlug fehl: %s\n" - -#~ msgid "input_dvd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_dvd: Auslesen vom Status des DVD-Laufwerks schlug fehl: %s\n" - -#~ msgid "ioctl(cdromallow): %s" -#~ msgstr "ioctl(cdromallow): %s" - -#~ msgid "ioctl(cdromeject): %s" -#~ msgstr "ioctl(cdromeject): %s" - -#~ msgid "dvd device input plugin as shipped with xine" -#~ msgstr "Mit xine ausgeliefertes DVD Plugin" - -#~ msgid "" -#~ "dvd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Das DVD-Plugin unterstützt die API-Version %d nicht.\n" -#~ "PLUGIN DEAKTIVIERT.\n" -#~ "Es existiert ein Versionsunterschied zwischen xine und diesem Plugin.\n" -#~ "Das installieren aktueller Plugins sollte helfen.\n" - -#~ msgid "path to your local dvd device file" -#~ msgstr "Pfad zum lokalen DVD-Laufwerk" - -#~ msgid "channels" -#~ msgstr "Kanäle" - -#~ msgid "Show status on play, pause, ff, ..." -#~ msgstr "Statusanzeige bei Wiedergabe, Pause, Suchen, ..." - -#~ msgid "unable to open %s: %s." -#~ msgstr "Kann %s nicht öffnen: %s." - -#~ msgid "none" -#~ msgstr "Keine" - -#~ msgid "Small" -#~ msgstr "Klein" - -#~ msgid "Normal" -#~ msgstr "Normal" - -#~ msgid "Large" -#~ msgstr "Groß" - -#~ msgid "" -#~ "demux_qt: video codec %s (%f fps), audio codec %s (%ld Hz, %d bits)\n" -#~ msgstr "" -#~ "demux_qt: Video-Codec %s (%f fps), Audio-Codec %s (%ld Hz, %d bits)\n" - -#~ msgid "demux_ts: PUSI set but no PES header (corrupt stream?)\n" -#~ msgstr "" -#~ "demux_ts: PUSI gesetzt aber kein PES Header (korrupter Datenstrom?)\n" - -#~ msgid "RE-Sync failed\n" -#~ msgstr "RE-Synchronization schlug fehl\n" - -#~ msgid "mpgaudio: bitrate = %.2fkbps\n" -#~ msgstr "mpgaudio: Bit-Rate = %.2fkbps\n" - -#~ msgid "demux_ts: stop...\n" -#~ msgstr "demux_ts: Stopp...\n" - -#~ msgid "demux_avi: reconstructing index" -#~ msgstr "demux_avi: Rekonstruiere Index" - -#~ msgid "demux_avi: audio seek to start failed\n" -#~ msgstr "demux_avi: Positionieren zum Audioanfang schlug fehl\n" - -#~ msgid "demux_avi: unknown avi format %.4s\n" -#~ msgstr "demux_avi: Unbekanntes avi-Format %.4s\n" - -#~ msgid "demux_avi: text subtitle file available\n" -#~ msgstr "demux_avi: Untertitle Textdatei verfügbar\n" - -#~ msgid "demux_avi: can't create new thread (%s)\n" -#~ msgstr "demux_avi: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "input_http: answer: >%s<\n" -#~ msgstr "input_http: Antwort: >%s<\n" - -#~ msgid "input_http: end of headers\n" -#~ msgstr "input_http: Ende des Headers\n" - -#~ msgid "video_out: thread created\n" -#~ msgstr "video_out: Thread erzeugt\n" - -#~ msgid "xine_stop\n" -#~ msgstr "xine_stop\n" - -#~ msgid "xine_stop ignored\n" -#~ msgstr "xine_stop ignoriert\n" - -#~ msgid "xine_stop: stopping demuxer\n" -#~ msgstr "xine_stop: Stoppe Demultiplexer\n" - -#~ msgid "xine_stop: done\n" -#~ msgstr "xine_stop: Fertig\n" - -#~ msgid "xine_exit: shutdown audio\n" -#~ msgstr "xine_exit: Beende Audio\n" - -#~ msgid "xine_exit: shutdown video\n" -#~ msgstr "xine_exit: Beende Video\n" - -#~ msgid "xine_exit: bye!\n" -#~ msgstr "xine_exit: Tschüss!\n" - -#~ msgid "xine: xine_get_current_position: no input source\n" -#~ msgstr "xine: xine_get_current_position: Keine Eingabequelle\n" - -#~ msgid "xine: set_speed %d\n" -#~ msgstr "xine: set_speed %d\n" - -#~ msgid "demux_ts: demux error! PAT without payload unit start indicator\n" -#~ msgstr "demux_ts: demux Fehler! PAT ohne Nutzdaten-Startindikator\n" - -#~ msgid "demux_ts: demux error! PAT with invalid pointer\n" -#~ msgstr "demux_ts: demux Fehler! PAT mit fehlerhaftem Zeiger\n" - -#~ msgid "demux_avi: demux loop finished.\n" -#~ msgstr "demux_avi: demux Schleife beendet.\n" - -#~ msgid "demux_avi: stop...ignored\n" -#~ msgstr "demux_avi: Stopp...Ignoriert\n" - -#~ msgid "demux_avi: AVI_init failed (AVI_errno: %d)\n" -#~ msgstr "demux_avi: AVI_init mit Fehler abgebrochen (AVI_errno: %d)\n" - -#~ msgid "demux_elem: can't create new thread (%s)\n" -#~ msgstr "demux_elem: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "How how - something wrong in wonderland demux:read_bytes (%d)\n" -#~ msgstr "Oh oh - Irgendwas lief schief im Wunderland demux:read_bytes (%d)\n" - -#~ msgid "demux loop finished (status: %d, buf:%x)\n" -#~ msgstr "demux Schleife beendet (Staus: %d, buf:%x)\n" - -#~ msgid "demux_mpeg: stop...\n" -#~ msgstr "demux_mpeg: Stopp...\n" - -#~ msgid "demux_mpeg: can't create new thread (%s)\n" -#~ msgstr "demux_mpeg: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "demux_mpeg_block: read_block failed\n" -#~ msgstr "demux_mpeg_block: read_block schlug fehl\n" - -#~ msgid "demux_mpeg_block: checking if we can branch to %s\n" -#~ msgstr "demux_mpeg_block: Überprüfe, ob verzweigt werden kann zu %s\n" - -#~ msgid "demux_mpeg_block: branching\n" -#~ msgstr "demux_mpeg_block: verzweige\n" - -#~ msgid "demux_mpeg_block: error! %02x %02x %02x (should be 0x000001) \n" -#~ msgstr "demux_mpeg_block: Fehler! %02x %02x %02x (sollte 0x000001 sein) \n" - -#~ msgid "illegal lpcm sample format (%d), assume 16-bit samples\n" -#~ msgstr "Illegales lpcm-sample-Format (%d), erwarte 16-bit Samples\n" - -#~ msgid "demux_mpeg_block: error %02x %02x %02x (should be 0x000001) \n" -#~ msgstr "demux_mpeg_block: Fehler %02x %02x %02x (sollte 0x000001 sein) \n" - -#~ msgid "demux_mpeg_block: stop...ignored\n" -#~ msgstr "demux_mpeg_block: Stopp...Ignoriert\n" - -#~ msgid "demux_mpeg_block: can't create new thread (%s)\n" -#~ msgstr "demux_mpeg_block: Kann neunen Thread (%s) nicht erzeugen\n" - -#~ msgid "demux_mpeg_block: mrl %s is new, will estimated bitrate\n" -#~ msgstr "demug_mpeg_block: mrl %s ist neu, werde Datenrate bestimmen\n" - -#~ msgid "demux_mpeg_block: mrl %s is known, estimated bitrate: %d\n" -#~ msgstr "" -#~ "demux_mpeg_block: mrl %s ist bekannt, voraussichtliche Datenrate: %d\n" - -#~ msgid "demux_mpgaudio_block: stop...ignored\n" -#~ msgstr "demux_mpgaudio_block: Stopp...ignoriert\n" - -#~ msgid "demux_mpgaudio: can't create new thread (%s)\n" -#~ msgstr "demux_mpgaudio: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "demux_pes: stop...\n" -#~ msgstr "demux_pes: Stopp...\n" - -#~ msgid "demux_pes: can't create new thread (%s)\n" -#~ msgstr "demux_pes: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "Header not compressed with zlib\n" -#~ msgstr "Der Header wurde nicht mit zlib komprimiert\n" - -#~ msgid "QT cmov: malloc err 0" -#~ msgstr "QT cmov: Speicheranforderungsfehler 0" - -#~ msgid "QT cmov: read err tlen %llu\n" -#~ msgstr "QT cmov: Lesefehler tlen %llu\n" - -#~ msgid "QT cmov: malloc err moov_sz %u\n" -#~ msgstr "QT cmov: Speicheranforderungsfehler moov_sz %u\n" - -#~ msgid "QT cmov: inflateInit err %d\n" -#~ msgstr "QT cmov: inflateInit-Fehler %d\n" - -#~ msgid "QT cmov inflate: ERR %d\n" -#~ msgstr "QT cmov: inflate-Fehler %d\n" - -#~ msgid "demux_qt: quicktime_open: error in header\n" -#~ msgstr "demux_qt: quicktime_open: Fehlerhafter header\n" - -#~ msgid "demux_qt: stop...ignored\n" -#~ msgstr "demux_qt: Stopp...ignoriert\n" - -#~ msgid "demux_qt: unknown audio codec >%s<\n" -#~ msgstr "demux_qt: Unbekannter Audio-Codec >%s<\n" - -#~ msgid "" -#~ "demux_ogg: beginning of stream\n" -#~ "demux_ogg: serial number %d\n" -#~ msgstr "" -#~ "demux_ogg: Beginn des Datenstroms\n" -#~ "demux_ogg: Seriennummer %d\n" - -#~ msgid "demux_ogg: found a new stream, serialnumber %d\n" -#~ msgstr "demux_ogg: Neuen Datenstrom gefunden, Seriennummer %d\n" - -#~ msgid "demux_ogg: stop...ignored\n" -#~ msgstr "demux_ogg: Stopp...ignoriert\n" - -#~ msgid "demux_ogg: can't create new thread (%s)\n" -#~ msgstr "demux_ogg: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "demux_asf: end of data\n" -#~ msgstr "demux_asf: Ende der Daten\n" - -#~ msgid "demux_asf: wavex header is %d bytes long\n" -#~ msgstr "demux_asf: wavex-Header ist %d bytes lang\n" - -#~ msgid "demux_asf: unknown video format %.4s\n" -#~ msgstr "demux_asf: unbekanntes Videoformat %.4s\n" - -#~ msgid "demux_asf: file doesn't start with an asf header\n" -#~ msgstr "demux_asf: Datei beginnt nicht mit einem asf-Header\n" - -#~ msgid "demux_asf: audio conceal interleave detected (%d x %d x %d)\n" -#~ msgstr "demux_asf: Audio conceal-interleave erkannt (%d x %d x %d)\n" - -#~ msgid "demux_asf: absolute size ignored\n" -#~ msgstr "demux_asf: Absolute Größe ignoriert\n" - -#~ msgid "demux_asf: buffer overflow on defrag!\n" -#~ msgstr "demux_asf: Pufferüberlauf bei Defragmentierung!\n" - -#~ msgid "demux_asf: get_packet failed\n" -#~ msgstr "demux_asf: get_packet ist mit einem Fehler abgebrochen\n" - -#~ msgid "demux_asf: unknow segtype %x\n" -#~ msgstr "demux_asf: Unbekannter Segmenttyp %x\n" - -#~ msgid "demux_asf: stop...ignored\n" -#~ msgstr "demux_asf: Stopp...ignoriert\n" - -#~ msgid "demux_asf: can't create new thread (%s)\n" -#~ msgstr "demux_asf: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "demux_cda: stop...ignored\n" -#~ msgstr "demux_cda: Stopp...ignoriert\n" - -#~ msgid "demux_cda: can't create new thread (%s)\n" -#~ msgstr "demux_cda: Kann neuen Thread (%s) nicht erzeugen\n" - -#~ msgid "metronom: video stream start...\n" -#~ msgstr "metronom: Start des Video-Datenstromst...\n" - -#~ msgid "metronom: video stream start ignored\n" -#~ msgstr "metronom: Beginn des Video-Datenstroms ignoriert\n" - -#~ msgid "metronom: waiting for audio to start...\n" -#~ msgstr "metronom: Warte auf Anfang von Audio...\n" - -#~ msgid "metronom: video stream end\n" -#~ msgstr "metronom: Ende des Video-Datenstroms\n" - -#~ msgid "metronom: video stream end ignored\n" -#~ msgstr "metronom: Ende des Video-Datenstroms ignoriert\n" - -#~ msgid "metronom: waiting for audio to end...\n" -#~ msgstr "metronom: Warte auf Ende von Audio...\n" - -#~ msgid "metronom: audio stream start...\n" -#~ msgstr "metronom: Start des Audio-Datenstroms...\n" - -#~ msgid "metronom: audio stream start ignored\n" -#~ msgstr "metronom: Beginn des Audio-Datenstroms ignoriert\n" - -#~ msgid "metronom: audio stream start...done\n" -#~ msgstr "metronom: Anfang des Audio-Datenstroms...Fertig\n" - -#~ msgid "metronom: waiting for video to end...\n" -#~ msgstr "metronom: Warte auf Ende von Video...\n" - -#~ msgid "metronom: video discontinuity #%d\n" -#~ msgstr "metronom: Video-Unstetigkeit #%d\n" - -#~ msgid "metronom: waiting for audio discontinuity #%d\n" -#~ msgstr "metronom: Warte auf Audio-Unstetigkeit #%d\n" - -#~ msgid "metronom: video vpts adjusted to %d\n" -#~ msgstr "metronom: Video vpts korrigiert auf %d\n" - -#~ msgid "metronom: audio/video vpts too old, adjusted to %d\n" -#~ msgstr "metronom: audio/video vpts zu alt, korrigiert auf %d\n" - -#~ msgid "" -#~ "metronom: video pts discontinuity/start, pts is %d, wrap_offset is %d, " -#~ "vpts is %d\n" -#~ msgstr "" -#~ "metronom: Video-pts-Unstetigkeit/Start, pts ist %d, Überlaufversatz ist %" -#~ "d, vpts ist %d\n" - -#~ msgid "metronom: forcing video_wrap (%d) and audio wrap (%d)" -#~ msgstr "metronom: Erzwinge Video-Umbruch (%d) und Audio-Umbruch (%d)" - -#~ msgid " to %d\n" -#~ msgstr " nach %d\n" - -#~ msgid "metronom: delta too big, setting vpts to %d\n" -#~ msgstr "metronom: Unterschied ist zu groß, setze vpts auf %d\n" - -#~ msgid "metronom: audio discontinuity #%d\n" -#~ msgstr "metronom: Audio-Unstetigkeit #%d\n" - -#~ msgid "metronom: waiting for video_discontinuity #%d\n" -#~ msgstr "metronom: Warte auf Video-Unstetigkeit #%d\n" - -#~ msgid "metronom: audio vpts adjusted to %d\n" -#~ msgstr "metronom: Audio-vpts eingestellt auf %d\n" - -#~ msgid "" -#~ "metronom: audio pts discontinuity/start, pts is %d, wrap_offset is %d, " -#~ "vpts is %d\n" -#~ msgstr "" -#~ "metronom: Audio-pts-Unstetigkeit/Start, pts ist %d, Überlaufversatz ist %" -#~ "d, vpts ist %d\n" - -#~ msgid "to %d\n" -#~ msgstr "auf %d\n" - -#~ msgid "metronom: av_offset=%d pts\n" -#~ msgstr "metronom: av_Versatz=%d pts\n" - -#~ msgid "metronom: panic - no scr provider found!\n" -#~ msgstr "metronom: Panik - konnte keinen scr-Anbieter finden!\n" - -#~ msgid "metronom: cannot create sync thread (%s)\n" -#~ msgstr "metronom: Kann sync-Thread (%s) nicht erzeugen\n" - -#~ msgid "video_out : ALERT! frame is already locked for displaying\n" -#~ msgstr "video_out : ALARM! Bild bereits zum Anzeigen vorgesehen\n" - -#~ msgid "video_out: rejected, %d frames to skip\n" -#~ msgstr "video_out: Zurückgewiesen, %d Bilder werden ausgelassen\n" - -#~ msgid "xine_play: xine open %s, start pos = %d, start time = %d (sec)\n" -#~ msgstr "" -#~ "xine_play: xine geöffnet %s, Startpos. = %d, Startzeit = %d (Sek.)\n" - -#~ msgid "inputs" -#~ msgstr "Eingaben" - -#~ msgid "demuxers" -#~ msgstr "Demultiplexer" - -#~ msgid "video" -#~ msgstr "Video" - -#~ msgid "video_out : vo_open : warning! video thread already running\n" -#~ msgstr "video_out : vo_open : Warnung! Video-Thread läuft bereits\n" - -#~ msgid "xine_init entered\n" -#~ msgstr "xine_init betreten\n" - -#~ msgid "xine_init returning\n" -#~ msgstr "xine_init zurückgekehrt\n" diff --git a/po/en_US.po b/po/en_US.po new file mode 100644 index 000000000..31878a1c3 --- /dev/null +++ b/po/en_US.po @@ -0,0 +1,16 @@ +# Translation of xine-lib.po into American English. +# Copyright (C) 2008 the xine project +# Copyright (C) 2002, 2006, 2007, 2008 Free Software Foundation, Inc. +# +msgid "" +msgstr "" +"Project-Id-Version: xine-lib.hg\n" +"Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" +"PO-Revision-Date: 2009-01-15 19:04+0000\n" +"Last-Translator: Not translated <null@example.com>\n" +"Language-Team: en_US <none>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: eo\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-04-06 15:39+0200\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2007-05-24 17:57+0200\n" "Last-Translator: Antonio C. Codazzi <f_sophia@libero.it>\n" "Language-Team: <it@li.org>\n" @@ -46,21 +46,22 @@ msgstr "Eraro dun serĉado de gastiga komputilo" msgid "Unknown error" msgstr "Nekonata eraro" -#: src/audio_out/audio_alsa_out.c:354 +#: src/audio_out/audio_alsa_out.c:350 #, c-format msgid "audio_alsa_out:Already open...WHY!" msgstr "audio_alsa_out: jam malfermita... KIAL?" -#: src/audio_out/audio_alsa_out.c:382 +#: src/audio_out/audio_alsa_out.c:378 #, c-format msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() de %s malsukcesis: %s\n" -#: src/audio_out/audio_alsa_out.c:384 +#: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "audio_alsa_out: >>> kontrolu se alia programo estas uzanta PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:397 +#: src/audio_out/audio_alsa_out.c:393 #, c-format msgid "" "audio_alsa_out: broken configuration for this PCM: no configurations " @@ -69,96 +70,98 @@ msgstr "" "audio_alsa_out: difektita agordaĵo de tiu ĉi PCM: neniu disponebla agordaĵo: " "%s\n" -#: src/audio_out/audio_alsa_out.c:1289 +#: src/audio_out/audio_alsa_out.c:1295 msgid "notify changes to the hardware mixer" msgstr "rimarku ÅanÄojn de hardwara miksilo" -#: src/audio_out/audio_alsa_out.c:1290 +#: src/audio_out/audio_alsa_out.c:1296 msgid "" "When the hardware mixer changes, your application will receive a " "notification so that it can update its graphical representation of the mixer " "settings on the fly." msgstr "" -#: src/audio_out/audio_alsa_out.c:1355 +#: src/audio_out/audio_alsa_out.c:1361 #, c-format msgid "snd_lib_error_set_handler() failed: %d" msgstr "snd_lib_error_set_handler() malsukcesis: %d" -#: src/audio_out/audio_alsa_out.c:1362 +#: src/audio_out/audio_alsa_out.c:1368 msgid "sound card can do mmap" msgstr "sonkarto ne povas uzi mmap" -#: src/audio_out/audio_alsa_out.c:1363 +#: src/audio_out/audio_alsa_out.c:1369 msgid "" "Enable this, if your sound card and alsa driver support memory mapped IO.\n" "You can try enabling it and check, if everything works. If it does, this " "will increase performance." msgstr "" -#: src/audio_out/audio_alsa_out.c:1372 +#: src/audio_out/audio_alsa_out.c:1378 msgid "device used for mono output" msgstr "aparato uzita por unufonia eligo" -#: src/audio_out/audio_alsa_out.c:1373 +#: src/audio_out/audio_alsa_out.c:1379 msgid "" "xine will use this alsa device to output mono sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1381 +#: src/audio_out/audio_alsa_out.c:1387 msgid "device used for stereo output" msgstr "aparato uzita por stereofonia eligo" -#: src/audio_out/audio_alsa_out.c:1382 +#: src/audio_out/audio_alsa_out.c:1388 msgid "" "xine will use this alsa device to output stereo sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1390 +#: src/audio_out/audio_alsa_out.c:1396 msgid "device used for 4-channel output" msgstr "aparato uzita por kvarfonia eligo" -#: src/audio_out/audio_alsa_out.c:1391 +#: src/audio_out/audio_alsa_out.c:1397 msgid "" "xine will use this alsa device to output 4 channel (4.0) surround sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1400 src/audio_out/audio_alsa_out.c:1410 +#: src/audio_out/audio_alsa_out.c:1406 src/audio_out/audio_alsa_out.c:1416 msgid "device used for 5.1-channel output" msgstr "aparato uzita por 5.1-kanala eligo" -#: src/audio_out/audio_alsa_out.c:1401 +#: src/audio_out/audio_alsa_out.c:1407 msgid "" "xine will use this alsa device to output 5 channel plus LFE (5.1) surround " "sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1411 +#: src/audio_out/audio_alsa_out.c:1417 msgid "" "xine will use this alsa device to output undecoded digital surround sound. " "This can be used be external surround decoders.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1431 +#: src/audio_out/audio_alsa_out.c:1437 #, c-format msgid "snd_pcm_open() failed:%d:%s\n" msgstr "snd_pcm_open() malsukcesis:%d:%s\n" -#: src/audio_out/audio_alsa_out.c:1433 +#: src/audio_out/audio_alsa_out.c:1439 #, c-format msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Kontrolu se alia programo estas uzanta PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:1464 src/audio_out/audio_oss_out.c:929 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "aranÄo de laÅtigilo" -#: src/audio_out/audio_alsa_out.c:1465 src/audio_out/audio_oss_out.c:930 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -190,79 +193,79 @@ msgid "" "formats you want to play to your sound card's digital output." msgstr "" -#: src/audio_out/audio_alsa_out.c:1494 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : subtenitaj modusoj estas " +#: src/audio_out/audio_alsa_out.c:1500 +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : subtenitaj modusoj estas" -#: src/audio_out/audio_alsa_out.c:1497 -msgid "8bit " -msgstr "8bitoj " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bitoj" -#: src/audio_out/audio_alsa_out.c:1502 -msgid "16bit " -msgstr "16bitoj " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16bitoj" -#: src/audio_out/audio_alsa_out.c:1506 -msgid "24bit " -msgstr "24bitoj " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24bitoj" -#: src/audio_out/audio_alsa_out.c:1510 -msgid "32bit " -msgstr "32bitoj " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32bitoj" -#: src/audio_out/audio_alsa_out.c:1521 -msgid "mono " -msgstr "unufonio" +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " unufonio" -#: src/audio_out/audio_alsa_out.c:1525 -msgid "stereo " -msgstr "stereofonio" +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " stereofonio" -#: src/audio_out/audio_alsa_out.c:1530 -msgid "4-channel " -msgstr "kvarfonio" +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " kvarfonio" -#: src/audio_out/audio_alsa_out.c:1533 -msgid "(4-channel not enabled in xine config) " -msgstr "(kvarfonio ne estas ebligita en xine-agordoj) " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (kvarfonio ne estas ebligita en xine-agordoj)" -#: src/audio_out/audio_alsa_out.c:1538 -msgid "4.1-channel " -msgstr "4.1-kanalo " +#: src/audio_out/audio_alsa_out.c:1547 +msgid " 4.1-channel" +msgstr " 4.1-kanalo" -#: src/audio_out/audio_alsa_out.c:1541 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-kanaloj ne estas ebligita en xine-agordoj) " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-kanaloj ne estas ebligita en xine-agordoj)" -#: src/audio_out/audio_alsa_out.c:1546 -msgid "5-channel " -msgstr "kvinfonio" +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " kvinfonio" -#: src/audio_out/audio_alsa_out.c:1549 -msgid "(5-channel not enabled in xine config) " -msgstr "(kvinfonio ne estas ebligita en xine-agordoj) " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (kvinfonio ne estas ebligita en xine-agordoj)" -#: src/audio_out/audio_alsa_out.c:1554 -msgid "5.1-channel " -msgstr "5.1-kanalo " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-kanalo" -#: src/audio_out/audio_alsa_out.c:1557 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-kanaloj ne estas ebligita en xine-agordoj) " +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-kanaloj ne estas ebligita en xine-agordoj)" -#: src/audio_out/audio_alsa_out.c:1580 -msgid "a/52 and DTS pass-through\n" -msgstr "rektotrajro de a/52 kaj DTS\n" +#: src/audio_out/audio_alsa_out.c:1589 +msgid " a/52 and DTS pass-through" +msgstr " rektotrajro de a/52 kaj DTS" -#: src/audio_out/audio_alsa_out.c:1583 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(rektotrajro de a/52 kaj DTS ne estas ebligita en xine-agordoj)\n" +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (rektotrajro de a/52 kaj DTS ne estas ebligita en xine-agordoj)" -#: src/audio_out/audio_alsa_out.c:1590 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "alsa-miksilo" -#: src/audio_out/audio_alsa_out.c:1591 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." @@ -270,11 +273,11 @@ msgstr "" "xine uzos tiun ĉi alsa-miksilon por ÅanÄi laÅtecon.\n" "Legu dokumentaron de alsa por havi informojn pri aparatoj de alsa." -#: src/audio_out/audio_alsa_out.c:1665 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "aÅdeliga xine-kromaĵo uzanta alsa-favorajn aÅdajn aparatojn/zorgilojn" -#: src/audio_out/audio_arts_out.c:373 +#: src/audio_out/audio_arts_out.c:371 msgid "xine audio output plugin using kde artsd" msgstr "kde-artsd-uzanta kromaĵo de aÅdeligo de xine" @@ -376,152 +379,135 @@ msgstr "Mi estas nekapabla krei objekton de directsound" msgid "Could not set direct sound cooperative level." msgstr "Estas neeble agordi gradon de kunagado por directsound" -#: src/audio_out/audio_directx2_out.c:286 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "Mi estas nekapabla krei duan bufron de directsound" -#: src/audio_out/audio_directx2_out.c:310 -#, c-format -msgid "Unable to create buffer position events." -msgstr "Mi estas nekapabla krei eventojn de bufrolokado" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to get notification interface" -msgstr "Mi estas nekapabla havigi interfacon de komuniko" - -#: src/audio_out/audio_directx2_out.c:323 -msgid "Unable to set notification positions" -msgstr "Mi estas nekapabla agordi lokojn de komuniko" - -#: src/audio_out/audio_directx2_out.c:343 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "Estas neeble ludi aÅdobufron" -#: src/audio_out/audio_directx2_out.c:355 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "Estas neeble fermi aÅdobufron" -#: src/audio_out/audio_directx2_out.c:368 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "Estas neeble determini lokon de bufro" -#: src/audio_out/audio_directx2_out.c:382 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "Estas neeble agordi lokadon de bufro" -#: src/audio_out/audio_directx2_out.c:414 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "Estas neeble agordi laÅtecon" -#: src/audio_out/audio_directx2_out.c:432 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": perdita bufro, mi provas restarigi Äin\n" -#: src/audio_out/audio_directx2_out.c:436 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "Estas neeble bloki bufron de directsound" -#: src/audio_out/audio_directx2_out.c:447 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "Estas neeble malbloki bufron de directsound" -#: src/audio_out/audio_directx2_out.c:544 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "Mi estas nekapabla krei ĉefan bufro de directsound" -#: src/audio_out/audio_directx2_out.c:637 -#, c-format -msgid ": play cursor overran, flushing buffers\n" +#: src/audio_out/audio_directx2_out.c:596 +#, fuzzy, c-format +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr ": indikilo de legado translimiÄis, do mi elbufriÄas\n" -#: src/audio_out/audio_directx2_out.c:655 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr ": malfruita je %ld msek\n" - -#: src/audio_out/audio_directx2_out.c:759 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": estas neeble krei kondiĉon de pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:763 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": estas neeble krei pthread mutex: %s\n" -#: src/audio_out/audio_directx2_out.c:770 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": estas neeble krei bufron de pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:877 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": estas neeble detrui bufron de pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:884 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ": estas neeble detrui kondiĉon de pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:887 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": estas neeble detrui pthread mutex: %s\n" -#: src/audio_out/audio_directx2_out.c:947 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr ": nekonata komando de regado %d\n" -#: src/audio_out/audio_directx2_out.c:1003 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "dua direcx-uzanta kromaĵo de aÅdeligo de xine" -#: src/audio_out/audio_directx_out.c:829 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "direcx-uzanta kromaĵo de aÅdeligo de xine por win32" -#: src/audio_out/audio_esd_out.c:167 +#: src/audio_out/audio_esd_out.c:165 #, c-format msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: konektante ESD servilon %s: %s\n" -#: src/audio_out/audio_esd_out.c:499 +#: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: konektante ESD servilon...\n" -#: src/audio_out/audio_esd_out.c:511 +#: src/audio_out/audio_esd_out.c:509 #, c-format msgid "audio_esd_out: can't connect to %s ESD server: %s\n" msgstr "audio_esd_out: estas neeble konekti %s ESD servilon: %s\n" -#: src/audio_out/audio_esd_out.c:541 +#: src/audio_out/audio_esd_out.c:539 msgid "esd audio output latency (adjust a/v sync)" msgstr "latento de eligo por esd-aÅdo (aranÄo a/v sink)" -#: src/audio_out/audio_esd_out.c:542 src/audio_out/audio_oss_out.c:867 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/audio_out/audio_esd_out.c:574 +#: src/audio_out/audio_esd_out.c:572 msgid "xine audio output plugin using esound" msgstr "aÅdeliga xine-kromaĵo uzanta esound" -#: src/audio_out/audio_file_out.c:364 +#: src/audio_out/audio_file_out.c:362 msgid "xine file audio output plugin" msgstr "kromaĵo de aÅdeligo por xine dosiero" -#: src/audio_out/audio_irixal_out.c:387 +#: src/audio_out/audio_irixal_out.c:385 msgid "irixal audio output maximum gap length" msgstr "maksimuma longo de ekarto por aÅdeliga kromaĵo irixal" -#: src/audio_out/audio_irixal_out.c:388 +#: src/audio_out/audio_irixal_out.c:386 msgid "" "You can specify the maximum offset between audio and video xine will " "tolerate before trying to resync them.\n" @@ -529,53 +515,64 @@ msgid "" "second." msgstr "" -#: src/audio_out/audio_irixal_out.c:417 +#: src/audio_out/audio_irixal_out.c:415 msgid "xine audio output plugin using IRIX libaudio" msgstr "aÅdeliga xine-kromaĵo uzanta libaudio-n IRIX" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "Nomo de OSS aÅdaparato" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 #, fuzzy msgid "xine output plugin for JACK Audio Connection Kit" msgstr "kromaĵo de aÅdeligo por Coreaudio/Mac OS X" -#: src/audio_out/audio_none_out.c:225 +#: src/audio_out/audio_none_out.c:223 msgid "xine dummy audio output plugin" msgstr "testanta kromaĵo de aÅdeligo de xine" -#: src/audio_out/audio_oss_out.c:199 +#: src/audio_out/audio_oss_out.c:196 #, c-format msgid "audio_oss_out: Opening audio device %s: %s\n" msgstr "audio_oss_out: Malfermante aÅdaparaton %s: %s\n" -#: src/audio_out/audio_oss_out.c:221 +#: src/audio_out/audio_oss_out.c:218 #, c-format msgid "" "audio_oss_out: warning: sampling rate %d Hz not supported, trying 44100 Hz\n" msgstr "" "audio_oss_out: averto: samplado de %d Hz ne estas subtenita, provu 44100 Hz\n" -#: src/audio_out/audio_oss_out.c:233 +#: src/audio_out/audio_oss_out.c:230 #, c-format msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" "audio_oss_out: aÅdokvanto : %d estas mendita, %d estas havigita far aparato\n" -#: src/audio_out/audio_oss_out.c:746 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "Nomo de OSS aÅdaparato" -#: src/audio_out/audio_oss_out.c:747 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -#: src/audio_out/audio_oss_out.c:754 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "Numero de OSS aÅdaparato, -1 por nenio" -#: src/audio_out/audio_oss_out.c:755 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -585,20 +582,22 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" -#: src/audio_out/audio_oss_out.c:767 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: Memrekono de aÅdaparato malsukcesis\n" -#: src/audio_out/audio_oss_out.c:783 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: uzante aparaton >%s<\n" -#: src/audio_out/audio_oss_out.c:789 src/audio_out/audio_oss_out.c:904 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -607,11 +606,11 @@ msgstr "" "audio_oss_out: malfermo de aÅdaparato %s malsukcesis:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:810 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "a/v sinkronmetodo uzenda de OSS" -#: src/audio_out/audio_oss_out.c:811 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -641,7 +640,8 @@ msgid "" "ioctls and you experience sync errors after long playback" msgstr "" -#: src/audio_out/audio_oss_out.c:859 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -652,32 +652,40 @@ msgstr "" "sink\n" "audio_oss_out: ...Äi povus esti temo de aÅda/videa sinkronigo\n" -#: src/audio_out/audio_oss_out.c:866 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "latenco de OSS aÅdeligo (aranÄo de a/v sinkro)" -#: src/audio_out/audio_oss_out.c:880 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: AÅdozorgilo por realtempa sinkronigo estas malebligita...\n" -"audio_oss_out: ...sondante grandon de eliga bufro: " - -#: src/audio_out/audio_oss_out.c:897 +#: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d bajtoj\n" +"audio_oss_out: AÅdozorgilo por realtempa sinkronigo estas malebligita...\n" +"audio_oss_out: ...sondante grandon de eliga bufro: %d bajtoj\n" "audio_oss_out: ...eble Äi estas problemo de aÅdo/video sinkronigo\n" -#: src/audio_out/audio_oss_out.c:1026 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: subtenitaj modusoj estas" + +#: src/audio_out/audio_oss_out.c:1009 +#, fuzzy +msgid " a/52 pass-through" +msgstr " rektotrajro de a/52" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (rektotrajro de a/52 ne estas ebligita en xine-agordoj)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "numero de OSS aÅdomiksilo, -1 por nenio" -#: src/audio_out/audio_oss_out.c:1027 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -687,38 +695,38 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:1084 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: open() de miksilo %s malsukcesis: %s\n" -#: src/audio_out/audio_oss_out.c:1157 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" "kromaĵo de xine-aÅdligo kiu uzas aÅdajn aparatojn/zorgiloj oss-favorajn" -#: src/audio_out/audio_pulse_out.c:608 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "aparato uzata por pulsa aÅdo" -#: src/audio_out/audio_pulse_out.c:609 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "uzu 'server[:sink]' por agordi aparato de pulsa aÅdo." -#: src/audio_out/audio_pulse_out.c:646 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" msgstr "aÅdeliga xine-kromaĵo uzanta sonservilon de pulseaudio" -#: src/audio_out/audio_sun_out.c:459 src/audio_out/audio_sun_out.c:952 +#: src/audio_out/audio_sun_out.c:457 src/audio_out/audio_sun_out.c:950 #, c-format msgid "audio_sun_out: opening audio device %s failed: %s\n" msgstr "audio_sun_out: malfermo de aÅdaparato %s malsukcesis: %s\n" -#: src/audio_out/audio_sun_out.c:927 +#: src/audio_out/audio_sun_out.c:925 msgid "Sun audio device name" msgstr "nomo de Sun aÅdaparato" -#: src/audio_out/audio_sun_out.c:928 +#: src/audio_out/audio_sun_out.c:926 msgid "" "Specifies the file name for the Sun audio device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -726,50 +734,212 @@ msgid "" "careful that the value you enter really is a proper Sun audio device." msgstr "" -#: src/audio_out/audio_sun_out.c:970 +#: src/audio_out/audio_sun_out.c:968 #, c-format msgid "audio_sun_out: audio ioctl on device %s failed: %s\n" msgstr "audio_sun_out: aÅda ioctl super aparato %s malsukcesis: %s\n" -#: src/audio_out/audio_sun_out.c:1024 +#: src/audio_out/audio_sun_out.c:1022 msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "" "kromaĵo de xine-aÅdligo kiu uzas aÅdajn aparatojn/zorgiloj SUN-favorajn" -#: src/demuxers/demux_asf.c:428 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: agordo de bufro je %d por eviti troon.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_audio_dec: estas neeble trovi malkodilo de ffmpeg por bufrospeco 0x%" +"X\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: mi provas malfermi nulan kodaĵon\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: estas neeble malfermi malkodilon\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "dvaudio: agordo de bufro je %d por eviti troon.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "" +"ffmpeg_video_dec: nesubtenita formato de bildero, DR1 estas malebligita.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" +"ffmpeg_video_dec: nesubtenitaj dimensioj de bildero, DR1 estas malebligita.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_video_dec: estas neeble trovi malkodilo de ffmpeg por bufrospeco 0x%" +"X\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: estas neeble malfermi malkodilon\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: ebligita rekta bildigo\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_video_dec: agordo de bufro je %d por eviti troon.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "kvalito de MPEG-4 postprocesado" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"Vi povas aranÄi kvanton de postprocezado aplikita al MPEG-4 video.\n" +"Pli alta valoro atingas pli bonan kvaliton, sed Äi nacesas pli CPU. Malaltaj " +"valoroj povas krei difektojn kiel blokartefaktojn. AnkaÅ se la enhavo estas " +"altkvalita, grava postprocezado povas igi bildon pli aĉa ĉar Äi estas tro " +"malfokusita." + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "bitkvanto de mpeg eligo por libavcodec (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "moduso de konstanta kvalito" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" +"Se Äi estas ebligita, libavcodec uzos moduson de konstanta kvalito per " +"dinamika kompleksecbazita kunpremado de la bildoj. Se Äi estas malebligita, " +"libavcodec uzos moduson de konstanta bitkvanto." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "minimuma kunpremo" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "Minimuma kunpremo aplikenda al bildo kun moduso de konstanta kvalito." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "maksimuma ciferecigilo" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "Maksimuma kunpremo aplikenda al bildo kun moduso de konstanta kvalito." + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: averto: datumstrio id=%d estas cifrata.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: averto: datumstrio id=%d estas cifrata.\n" -#: src/demuxers/demux_asf.c:430 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Plurmedia datumstrio estas cifrata" -#: src/demuxers/demux_asf.c:1637 -#, c-format -msgid "demux_asf: Wrong ASX version: %s\n" -msgstr "demux_asf: Erara versio de ASX: %s\n" - -#: src/demuxers/demux_avi.c:532 src/demuxers/demux_avi.c:646 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Restarigo de indekso..." -#: src/demuxers/demux_avi.c:632 src/demuxers/demux_avi.c:1687 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "demux_avi: nevalida avi-parto \"%c%c%c%c\" en loko %<PRIdMAX>\n" -#: src/demuxers/demux_avi.c:827 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: avi-indekso estas difektita\n" -#: src/demuxers/demux_avi.c:835 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "demux_avi: relokado al sekva parto malsukcesis (pos %<PRIdMAX>)\n" -#: src/demuxers/demux_film.c:188 +#: src/demuxers/demux_film.c:186 #, c-format msgid "invalid FILM chunk size\n" msgstr "nevalida grando por peco de FILMo\n" @@ -779,35 +949,42 @@ msgstr "nevalida grando por peco de FILMo\n" msgid "unrecognized FILM chunk\n" msgstr "nerekonata peco de FILMo\n" -#: src/demuxers/demux_flv.c:172 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:179 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "" -#: src/demuxers/demux_iff.c:235 +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + +#: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" msgstr "iff-8svx/16sv: kunpremo nekonata: %d\n" -#: src/demuxers/demux_iff.c:369 +#: src/demuxers/demux_iff.c:367 #, c-format msgid "iff-ilbm: unknown compression: %d\n" msgstr "iff-ilbm: kunpremo nekonata: %d\n" -#: src/demuxers/demux_iff.c:570 +#: src/demuxers/demux_iff.c:568 #, c-format msgid "iff: unknown Chunk: %s\n" msgstr "iff: peco nekonata: %s\n" -#: src/demuxers/demux_mpc.c:212 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "demux_mpc: filmero estas tro granda por bufro" -#: src/demuxers/demux_mpeg_block.c:297 +#: src/demuxers/demux_mpeg_block.c:294 #, c-format msgid "" "xine-lib:demux_mpeg_block: Unrecognised stream_id 0x%02x. Please report this " @@ -816,19 +993,20 @@ msgstr "" "xine-lib:demux_mpeg_block: Nerokonita datumstrio_id 0x%02x. Bonvolu komuniki " "tion al disvolvantoj de xine.\n" -#: src/demuxers/demux_mpeg_block.c:308 +#: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" "demux_mpeg_block: eraro de malokupo! Bonvolu komuniki tion al disvolvantoj " "de xine.\n" -#: src/demuxers/demux_mpeg_block.c:640 +#: src/demuxers/demux_mpeg_block.c:637 #, c-format msgid "demux_mpeg_block: warning: PES header reserved 10 bits not found\n" msgstr "demux_mpeg_block: averto: PES-ĉapo rezervis 10 netrovitajn bitojn\n" -#: src/demuxers/demux_mpeg_block.c:650 +#: src/demuxers/demux_mpeg_block.c:647 #, c-format msgid "" "demux_mpeg_block: warning: PES header indicates that this stream may be " @@ -837,7 +1015,7 @@ msgstr "" "demux_mpeg_block: averto: PES-ĉapo indikas ke tiu ĉi datumstrio eble estas " "cifrata (moduso de cifrado %d)\n" -#: src/demuxers/demux_mpeg_pes.c:386 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -846,18 +1024,18 @@ msgstr "" "xine-lib:demux_mpeg_pes: Nerekonita datumstrio_id 0x%02x. Bonvolu komuniki " "tion al disvolvantoj de xine.\n" -#: src/demuxers/demux_mpeg_pes.c:395 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" "demux_mpeg_pes: averto: malcodado de PACK-datumstrio id=0x%x malsukcesis.\n" -#: src/demuxers/demux_mpeg_pes.c:777 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "demux_mpeg_pes: averto: PES-ĉapo rezervis 10 netrovitajn bitojn\n" -#: src/demuxers/demux_mpeg_pes.c:787 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -866,7 +1044,7 @@ msgstr "" "demux_mpeg_pes: averto: PES-ĉapo indikas ke tiu ĉi datumstrio eble estas " "cifrata (moduso de cifrado %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1061 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -875,35 +1053,36 @@ msgstr "" "demux_mpeg_pes: Nerekonita privata datumstrio 1 0x%02x. Bonvolu komuniki " "tion al disvolvantoj de xine.\n" -#: src/demuxers/demux_ogg.c:802 +#: src/demuxers/demux_ogg.c:805 #, c-format msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" msgstr "" "ogg: vorbis-aÅdotrako estas indikita sed nenio ĉapo de vorbis-datumstrio " "estis trovita.\n" -#: src/demuxers/demux_snd.c:104 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: nevalidaj parametroj de ĉapo\n" -#: src/demuxers/demux_snd.c:149 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: nesubtenita aÅdospeco: %d\n" -#: src/demuxers/demux_tta.c:88 +#: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" -#: src/demuxers/demux_voc.c:105 +#: src/demuxers/demux_voc.c:103 #, c-format msgid "unknown VOC block type (0x%02X); please report to xine developers\n" msgstr "" "nekonata VOC-blokspeco (0x%02X); bonvolu komuniki tion al disvolvantoj de " "xine\n" -#: src/demuxers/demux_voc.c:120 +#: src/demuxers/demux_voc.c:118 #, c-format msgid "" "unknown VOC compression type (0x%02X); please report to xine developers\n" @@ -911,46 +1090,47 @@ msgstr "" "nekonata VOC-kunpremspeco (0x%02X); bonvolu komuniki tion al disvolvantoj de " "xine\n" -#: src/demuxers/demux_wc3movie.c:192 +#: src/demuxers/demux_wc3movie.c:190 #, c-format msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "demux_wc3movie: parto de SHOT rilata al nevalida paletro (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:406 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "" "demux_wc3movie: okazis problemo dum Åargo de grandaj pecoj de paletro\n" -#: src/dxr3/dxr3.h:32 +#: src/dxr3/dxr3.h:30 msgid "DXR3 device number" msgstr "Numero de DXR3 aparato" -#: src/dxr3/dxr3.h:33 +#: src/dxr3/dxr3.h:31 msgid "" "If you have more than one DXR3 in your computer, you can specify which one " "to use here." msgstr "" -#: src/dxr3/dxr3_decode_spu.c:253 +#: src/dxr3/dxr3_decode_spu.c:251 #, c-format msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: Malsukcesis malfermado de SPU-aparato %s (%s)\n" -#: src/dxr3/dxr3_decode_spu.c:663 +#: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "mendita butono ne estas disponebla\n" -#: src/dxr3/dxr3_decode_video.c:250 +#: src/dxr3/dxr3_decode_video.c:248 #, c-format msgid "dxr3_decode_video: Failed to open control device %s (%s)\n" msgstr "dxr3_decode_video: Malsukcesis malfermo de stiraparato %s (%s)\n" -#: src/dxr3/dxr3_decode_video.c:256 +#: src/dxr3/dxr3_decode_video.c:254 msgid "use Pan & Scan info" msgstr "Uzu informojn pri Pan & Skan" -#: src/dxr3/dxr3_decode_video.c:257 +#: src/dxr3/dxr3_decode_video.c:255 msgid "" "\"Pan & Scan\" is a special display mode which is sometimes used in MPEG " "encoded material. You can specify here, how to handle such content.\n" @@ -966,11 +1146,11 @@ msgid "" "use of the Active Format Descriptor (AFD) used in some European DVB channels." msgstr "" -#: src/dxr3/dxr3_decode_video.c:276 +#: src/dxr3/dxr3_decode_video.c:274 msgid "try to sync video every frame" msgstr "provu sinkronigi videon por ĉiu filero" -#: src/dxr3/dxr3_decode_video.c:277 +#: src/dxr3/dxr3_decode_video.c:275 msgid "" "Tries to set a synchronization timestamp for every frame. Normally this is " "not necessary, because sync is sufficent even when the timestamp is set only " @@ -978,19 +1158,19 @@ msgid "" "This is relevant for progressive video only (most PAL films)." msgstr "" -#: src/dxr3/dxr3_decode_video.c:283 +#: src/dxr3/dxr3_decode_video.c:281 msgid "use smooth play mode" msgstr "uzu glatiga moduso de lego" -#: src/dxr3/dxr3_decode_video.c:284 +#: src/dxr3/dxr3_decode_video.c:282 msgid "Enabling this option will utilise a smoother play mode." msgstr "Ebligante tiun ĉi opcion, glatiga moduso de lego estos utiligebla." -#: src/dxr3/dxr3_decode_video.c:287 +#: src/dxr3/dxr3_decode_video.c:285 msgid "correct frame durations in broken streams" msgstr "korektu daÅron de filmeroj en difektitaj datumstrioj" -#: src/dxr3/dxr3_decode_video.c:288 +#: src/dxr3/dxr3_decode_video.c:286 msgid "" "Enables a small logic that corrects the frame durations of some mpeg streams " "with wrong framerate codes. Currently a correction for NTSC streams " @@ -998,36 +1178,40 @@ msgid "" "encounter such streams." msgstr "" -#: src/dxr3/dxr3_decode_video.c:547 +#: src/dxr3/dxr3_decode_video.c:545 #, c-format msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Malfermo de videoaparato %s (%s) malsukcesis\n" -#: src/dxr3/dxr3_decode_video.c:615 +#: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: skribo en aparato povus blokigi elbufrigon\n" -#: src/dxr3/dxr3_decode_video.c:619 +#: src/dxr3/dxr3_decode_video.c:617 #, c-format msgid "dxr3_decode_video: video device write failed (%s)\n" msgstr "dxr3_decode_video: skribo en videoaparato malsukcesis (%s)\n" -#: src/dxr3/dxr3_decode_video.c:734 +#: src/dxr3/dxr3_decode_video.c:732 #, c-format msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: ATENTU: kodo de filmerkvanto estas nekonata %d\n" -#: src/dxr3/dxr3_decode_video.c:762 +#: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" "dxr3_decode_video: ATENTU: korektante kodon de filmerkvanto, de PAL en NTSC\n" -#: src/dxr3/dxr3_mpeg_encoders.c:125 +#: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: malsukcesis preparado de librte\n" -#: src/dxr3/dxr3_mpeg_encoders.c:160 +#: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1035,106 +1219,109 @@ msgstr "" "dxr3_mpeg_encoder: rte administras nur videograndojn kiuj estas multobloj de " "16\n" -#: src/dxr3/dxr3_mpeg_encoders.c:170 +#: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: malsukcesis akiro de kunteksto rte.\n" -#: src/dxr3/dxr3_mpeg_encoders.c:181 +#: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: estas neeble krei kodaĵon.\n" -#: src/dxr3/dxr3_mpeg_encoders.c:189 +#: src/dxr3/dxr3_mpeg_encoders.c:187 msgid "rte mpeg output bitrate (kbit/s)" msgstr "bitkvanto de eligo de MPEG rte (kbit/s)" -#: src/dxr3/dxr3_mpeg_encoders.c:190 +#: src/dxr3/dxr3_mpeg_encoders.c:188 msgid "" "The bitrate the mpeg encoder library librte should use for DXR3's encoding " "mode. Higher values will increase quality and CPU usage." msgstr "" -#: src/dxr3/dxr3_mpeg_encoders.c:234 +#: src/dxr3/dxr3_mpeg_encoders.c:232 #, c-format msgid "dxr3_mpeg_encoder: cannot init the context: %s\n" msgstr "dxr3_mpeg_encoder: estas neeble prepari la kunteston: %s\n" -#: src/dxr3/dxr3_mpeg_encoders.c:242 +#: src/dxr3/dxr3_mpeg_encoders.c:240 #, c-format msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: estas neeble lanĉi kodon: %s\n" -#: src/dxr3/dxr3_mpeg_encoders.c:372 +#: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: Estas neeble lanĉi bibliotekon FAME\n" -#: src/dxr3/dxr3_mpeg_encoders.c:387 +#: src/dxr3/dxr3_mpeg_encoders.c:385 msgid "fame mpeg encoding quality" msgstr "Kvalito de MPEG-kodigo por filmero" -#: src/dxr3/dxr3_mpeg_encoders.c:388 +#: src/dxr3/dxr3_mpeg_encoders.c:386 msgid "" "The encoding quality of the libfame mpeg encoder library. Lower is faster " "but gives noticeable artifacts. Higher is better but slower." msgstr "" -#: src/dxr3/dxr3_scr.c:98 +#: src/dxr3/dxr3_scr.c:96 msgid "SCR plugin priority" msgstr "AntaÅeco de SCR kromaĵo" -#: src/dxr3/dxr3_scr.c:99 +#: src/dxr3/dxr3_scr.c:97 msgid "" "Priority of the DXR3 SCR plugin. Values less than 5 mean that the unix " "system timer will be used. Values greater 5 force to use DXR3's internal " "clock as sync source." msgstr "" -#: src/dxr3/video_out_dxr3.c:262 +#: src/dxr3/video_out_dxr3.c:260 msgid "swap odd and even lines" msgstr "inerÅangado de plataj kaj senkunaj liniojn" -#: src/dxr3/video_out_dxr3.c:263 +#: src/dxr3/video_out_dxr3.c:261 msgid "" "Swaps the even and odd field of the image.\n" "Enable this option for non-MPEG material which produces a vertical jitter on " "screen." msgstr "" -#: src/dxr3/video_out_dxr3.c:267 +#: src/dxr3/video_out_dxr3.c:265 msgid "add black bars to correct aspect ratio" msgstr "aldonu nigrajn bendojn por aranÄi proporciojn" -#: src/dxr3/video_out_dxr3.c:268 +#: src/dxr3/video_out_dxr3.c:266 msgid "" "Adds black bars when the image has an aspect ratio the card cannot handle " "natively. This is needed to maintain proper image proportions." msgstr "" -#: src/dxr3/video_out_dxr3.c:273 +#: src/dxr3/video_out_dxr3.c:271 msgid "use smooth play mode for mpeg encoder playback" msgstr "uzu glatigan moduson de lego por re-legado per mpeg-enkodilo" -#: src/dxr3/video_out_dxr3.c:274 +#: src/dxr3/video_out_dxr3.c:272 msgid "" "Enabling this option will utilise a smoother play mode for non-MPEG content." msgstr "" "Ebligante tiun ĉi opcion, glatiga moduso de lego estos uzebla por ne-MPEG-" "aĵoj." -#: src/dxr3/video_out_dxr3.c:282 +#: src/dxr3/video_out_dxr3.c:280 #, c-format msgid "video_out_dxr3: Failed to open control device %s (%s)\n" msgstr "video_out_dxr3: Malsukcesis malfermado de stiraparato %s (%s)\n" -#: src/dxr3/video_out_dxr3.c:290 +#: src/dxr3/video_out_dxr3.c:288 #, c-format msgid "video_out_dxr3: Failed to open video device %s (%s)\n" msgstr "video_out_dxr3: Malsukcesis malfermado de videoaparato %s (%s)\n" -#: src/dxr3/video_out_dxr3.c:336 +#: src/dxr3/video_out_dxr3.c:334 msgid "encoder for non mpeg content" msgstr "enkodilo por ne-mpeg-aĵoj" -#: src/dxr3/video_out_dxr3.c:337 +#: src/dxr3/video_out_dxr3.c:335 msgid "" "Content other than MPEG has to pass an additional reencoding stage, because " "the dxr3 handles only MPEG.\n" @@ -1148,20 +1335,24 @@ msgid "" "so these might fail to work." msgstr "" -#: src/dxr3/video_out_dxr3.c:348 +#: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" "video_out_dxr3: malsukcesis preparado de Mpeg-enkodilo nomita libavicodec.\n" -#: src/dxr3/video_out_dxr3.c:354 +#: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: malsukcesis preparado de Mpeg-enkodilo nomita rte.\n" -#: src/dxr3/video_out_dxr3.c:361 +#: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: malsukcesis preparado de Mpeg-enkodilo nomita fame.\n" -#: src/dxr3/video_out_dxr3.c:367 +#: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1171,7 +1362,8 @@ msgid "" "encoder.\n" msgstr "" -#: src/dxr3/video_out_dxr3.c:373 +#: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1181,11 +1373,11 @@ msgid "" "encoder.\n" msgstr "" -#: src/dxr3/video_out_dxr3.c:388 +#: src/dxr3/video_out_dxr3.c:386 msgid "video output mode (TV or overlay)" msgstr "moduso de videoeligo (TV aÅ surmeto)" -#: src/dxr3/video_out_dxr3.c:389 +#: src/dxr3/video_out_dxr3.c:387 msgid "" "The way the DXR3 outputs the final video can be set here. The individual " "values are:\n" @@ -1217,11 +1409,11 @@ msgid "" "of DXR3 overlay." msgstr "" -#: src/dxr3/video_out_dxr3.c:436 +#: src/dxr3/video_out_dxr3.c:434 msgid "overlay colour key value" msgstr "valoro de kromata Ålosilo de surmeto" -#: src/dxr3/video_out_dxr3.c:436 +#: src/dxr3/video_out_dxr3.c:434 msgid "" "Hexadecimal RGB value of the key colour.\n" "You can try different values, if you experience windows becoming transparent " @@ -1231,11 +1423,11 @@ msgstr "" "Vi povas provi malsamajn valorojn, se vi vidas diafanajn fenestrojn kiam vi " "uzas DXR3-moduson de surmeto." -#: src/dxr3/video_out_dxr3.c:441 +#: src/dxr3/video_out_dxr3.c:439 msgid "overlay colour key tolerance" msgstr "tolero de kromata Ålosilo de surmeto" -#: src/dxr3/video_out_dxr3.c:441 +#: src/dxr3/video_out_dxr3.c:439 msgid "" "A greater value widens the tolerance for the overlay key colour.\n" "You can try lower values, if you experience windows becoming transparent " @@ -1243,11 +1435,11 @@ msgid "" "when using a too low setting." msgstr "" -#: src/dxr3/video_out_dxr3.c:447 +#: src/dxr3/video_out_dxr3.c:445 msgid "crop the overlay area at top and bottom" msgstr "tranĉu area de surmeto en supraj kaj subaj partoj" -#: src/dxr3/video_out_dxr3.c:448 +#: src/dxr3/video_out_dxr3.c:446 msgid "" "Removes one pixel line from the top and bottom of the overlay. Enable this, " "if you see green lines at the top or bottom of the overlay." @@ -1255,15 +1447,16 @@ msgstr "" "Äœi formovas unu bilderolinion el supraj kaj subaj partoj de la surmeto. " "Ebligu Äin, se estas verdaj linioj en supraj kaj subaj partoj de la surmeto." -#: src/dxr3/video_out_dxr3.c:452 +#: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: bonvolu lanĉi autocal, surmeto estas malebligita\n" -#: src/dxr3/video_out_dxr3.c:462 +#: src/dxr3/video_out_dxr3.c:460 msgid "preferred tv mode" msgstr "favorata tv-moduso" -#: src/dxr3/video_out_dxr3.c:462 +#: src/dxr3/video_out_dxr3.c:460 msgid "" "Selects the TV mode to be used by the DXR3. The values mean:\n" "\n" @@ -1279,11 +1472,13 @@ msgstr "" "pal60: PAL - 60Hz\n" "default: tenu agordojn de la sonkarto" -#: src/dxr3/video_out_dxr3.c:484 +#: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: agordado de videomoduso malsukcesis.\n" -#: src/dxr3/video_out_dxr3.c:714 +#: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" @@ -1291,46 +1486,47 @@ msgstr "" "video_out_dxr3: Estas necese mpeg enkodilo por legi ne-mpeg videoj en dxr3\n" "video_out_dxr3: Legu README.dxr3 por pluaj detaloj.\n" -#: src/dxr3/video_out_dxr3.c:1373 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: ERARO dum lego de preparaddosiero de surmeto. Lanĉu " "autocal!\n" -#: src/input/input_cdda.c:1621 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: estas neeble konektigi %s:%d\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: sukcesa konekto kun cddb servilo '%s:%d'.\n" -#: src/input/input_cdda.c:1673 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: malsukcesa konekto kun cddb servilo '%s:%d' (%s).\n" -#: src/input/input_cdda.c:2707 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "KD DiÄita AÅdo (alie CDDA)" -#: src/input/input_cdda.c:2760 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "" -#: src/input/input_cdda.c:2761 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." msgstr "" -#: src/input/input_cdda.c:2767 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "informmendo de CDDB" -#: src/input/input_cdda.c:2767 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1339,11 +1535,11 @@ msgid "" "listening habits." msgstr "" -#: src/input/input_cdda.c:2775 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "Nomo de servilo de CDDB" -#: src/input/input_cdda.c:2775 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1351,19 +1547,19 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" -#: src/input/input_cdda.c:2783 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "Servilpordo de CDDB" -#: src/input/input_cdda.c:2783 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" -#: src/input/input_cdda.c:2789 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "Dosierujo de kaÅmemoro de CDDB" -#: src/input/input_cdda.c:2789 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1371,11 +1567,11 @@ msgid "" "used for anything but CDDB caching." msgstr "" -#: src/input/input_cdda.c:2797 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "Malrapidigu disk-turnilon per faktoro je tiu ĉi rapideco" -#: src/input/input_cdda.c:2798 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1384,48 +1580,61 @@ msgid "" "A value of zero here will disable the slowdown." msgstr "" -#: src/input/input_dvb.c:881 -#, c-format -msgid "input_dvb: failed to open dvb channel file '%s'\n" +#: src/input/input_dvb.c:904 +#, fuzzy, c-format +msgid "input_dvb: failed to open dvb channel file '%s': %s\n" +msgstr "input_dvb: malsukcesis malfermo de dosiero de dvb-kanalo '%s'\n" + +#: src/input/input_dvb.c:910 +#, fuzzy, c-format +msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_dvb: malsukcesis malfermo de dosiero de dvb-kanalo '%s'\n" -#: src/input/input_dvb.c:2082 src/input/input_dvb.c:2910 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: tuner_set_channel malsukcesis\n" -#: src/input/input_dvb.c:2710 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: estas neeble malfermi dvb-aparaton\n" -#: src/input/input_dvb.c:2734 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "input_dvb: kanalo %d estas ekstera de intervalo, agordante je 0\n" -#: src/input/input_dvb.c:2745 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: serĉante kanalon %s\n" -#: src/input/input_dvb.c:2768 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" "input_dvb: preciza kongruo ne estis trovita por %s: provante partan " "kongruon\n" -#: src/input/input_dvb.c:2775 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: estas trovita kongrua kanalo %s\n" -#: src/input/input_dvb.c:2788 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" "input_dvb: kanalo %s ne trovita en channels.conf, agordante per defaÅlto.\n" -#: src/input/input_dvb.c:2794 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" @@ -1433,18 +1642,21 @@ msgstr "" "input_dvb: nevalida specifo de kanalo, defaÅlte agordante per valoroj de " "lasta vidita kanalo.\n" -#: src/input/input_dvb.c:2800 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" "input_dvb: nevalida specifo de kanalo, defaÅlte agordante al kanalo 0\n" -#: src/input/input_dvb.c:2812 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" msgstr "" -#: src/input/input_dvb.c:2832 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" @@ -1452,7 +1664,8 @@ msgstr "" "input_dvb: dvbt mrl estis specifita sed sintonizilo Åajnas ne esti OFDM (DVB-" "T)\n" -#: src/input/input_dvb.c:2855 src/input/input_dvb.c:2881 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" @@ -1460,20 +1673,30 @@ msgstr "" "input_dvb: dvbt mrl estis specifita sed sintonizilo Åajnas ne esti QAM (DVB-" "C)\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2958 +#, fuzzy, c-format +msgid "" +"input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" +"A)\n" +msgstr "" +"input_dvb: dvbt mrl estis specifita sed sintonizilo Åajnas ne esti QAM (DVB-" +"C)\n" + +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: estas neeble malfermi dvr-aparaton '%s'\n" -#: src/input/input_dvb.c:2938 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_dvb: estas neeble krei fadenon de Äisdatigo EPG\n" -#: src/input/input_dvb.c:3000 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "uzu 'centran tranĉon' DVB (zomo)" -#: src/input/input_dvb.c:3001 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." @@ -1481,47 +1704,76 @@ msgstr "" "Äœi ebligas tutekrame vidigon laÅ entenoj kiu havas formato de 4:3 sed " "elsenditaj per filmeroj en 16:9-formato." -#: src/input/input_dvb.c:3094 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "eniga kromaĵo por DVB (DiÄita TV)" -#: src/input/input_dvb.c:3242 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "Memorigu lastan viditan DVB-kanalon" -#: src/input/input_dvb.c:3243 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3250 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "Lasta vidita DVB-kanalo" -#: src/input/input_dvb.c:3251 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3257 +#: src/input/input_dvb.c:3318 +msgid "Number of seconds until tuning times out." +msgstr "" + +#: src/input/input_dvb.c:3319 +msgid "" +"Leave at 0 means try forever. Greater than 0 means wait that many seconds to " +"get a lock. Minimum is 5 seconds." +msgstr "" + +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "Numero de uzenda DVB-karto" -#: src/input/input_dvb.c:3258 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:591 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:610 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Eraro dum la akirado de sekva bloko el DVD (%s)\n" -#: src/input/input_dvd.c:1498 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Eraro dum malfermado de DVD-apararo\n" @@ -1561,11 +1813,11 @@ msgid "" "scrambled DVDs." msgstr "" -#: src/input/input_dvd.c:1823 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "raÅto por kaÅmemoro de Ålosiloj de titoloj" -#: src/input/input_dvd.c:1824 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1574,44 +1826,44 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1846 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "zono kie DVD-legilo deklari sian lokiÄon (de 1 Äis 8)" -#: src/input/input_dvd.c:1847 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." msgstr "" -#: src/input/input_dvd.c:1853 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "defaÅlta lingvo por legi/ludi DVD" -#: src/input/input_dvd.c:1854 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -#: src/input/input_dvd.c:1860 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "lega-senkapa kaÅmemorigado" -#: src/input/input_dvd.c:1861 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1867 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "unito de preterlaso" -#: src/input/input_dvd.c:1868 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1630,11 +1882,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1883 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "unito de enpoziciigo" -#: src/input/input_dvd.c:1884 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1648,11 +1900,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1895 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "moduso de lego kiam oni havigas titolon/ĉapitron" -#: src/input/input_dvd.c:1896 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1664,133 +1916,133 @@ msgid "" "play just the specified title/chapter and then stop" msgstr "" -#: src/input/input_file.c:203 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: eraro de lego (%s)\n" -#: src/input/input_file.c:400 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: Rifuzita permeso: >%s<\n" -#: src/input/input_file.c:405 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Netrovita dosierod: >%s<\n" -#: src/input/input_file.c:437 src/input/input_gnome_vfs.c:292 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Vakua dosiero: >%s<\n" -#: src/input/input_file.c:658 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "eniga kromaĵo de dosiero" -#: src/input/input_file.c:1027 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "startpunkto de foliumo" -#: src/input/input_file.c:1028 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" -#: src/input/input_file.c:1035 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "listo de kaÅitaj dosieroj" -#: src/input/input_file.c:1036 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "" -#: src/input/input_gnome_vfs.c:218 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "gnome-vfs-eniga kromaĵo kiu estas entenata en xine" -#: src/input/input_http.c:174 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s) malsukcesis: %s\n" -#: src/input/input_http.c:400 src/input/input_http.c:943 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: eraro de lego %d\n" -#: src/input/input_http.c:627 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "Konektigante servilon de HTTP..." -#: src/input/input_http.c:819 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: nevalida demando de http\n" -#: src/input/input_http.c:825 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx-alidirektado: >%d %s<\n" -#: src/input/input_http.c:830 src/input/input_http.c:836 -#: src/input/input_http.c:843 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: stato de http ne estas 2xx: >%d %s<\n" -#: src/input/input_http.c:853 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: entenlongo = %<PRIdMAX> bytes\n" -#: src/input/input_http.c:922 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: bufro estis plenigita post %d bajtoj." -#: src/input/input_http.c:996 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "eniga kromaĵo por HTTP" -#: src/input/input_http.c:1062 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "HTTP-prokura ĉefkomputilo" -#: src/input/input_http.c:1062 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "Nomo de ĉefkomputilo por prokura servo de HTTP" -#: src/input/input_http.c:1066 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "HTTP-prokura pordo" -#: src/input/input_http.c:1066 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "Numero de pordo por prokura servo de HTTP" -#: src/input/input_http.c:1076 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "HTTP-prokura uzantnomo" -#: src/input/input_http.c:1077 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "Nomo de uzanto por prokura servo de HTTP" -#: src/input/input_http.c:1080 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "HTTP-prokura pasvorto" -#: src/input/input_http.c:1081 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "Pasvorto por prokura servo de HTTP" -#: src/input/input_http.c:1084 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "Domajnoj kiuj devas ignori prokuran servon de HTTP" -#: src/input/input_http.c:1085 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -1801,26 +2053,26 @@ msgstr "" "Se la nomo de domajno havas antaÅmetan '=' do Äi estas konsiderita kiel " "unuopa nomo de gastiga komputilo (plena kongruo estas necesa)." -#: src/input/input_mms.c:443 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "eniga kromaĵo por MMS" -#: src/input/input_mms.c:479 src/input/librtsp/rtsp_session.c:93 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "bendolarÄo de reto" -#: src/input/input_mms.c:480 src/input/librtsp/rtsp_session.c:94 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." msgstr "" -#: src/input/input_mms.c:489 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "MMS-protokolo" -#: src/input/input_mms.c:490 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -1828,260 +2080,294 @@ msgstr "" "Elektu protokolon por enpakigita MMS.\n" "TCP estas la plej bona sed povus necesi HTTP trans fajroÅirmo." -#: src/input/input_net.c:123 src/input/input_net.c:153 +#: src/input/input_net.c:121 src/input/input_net.c:151 #, c-format msgid "input_net: socket(): %s\n" msgstr "input_net: socket(): %s\n" -#: src/input/input_net.c:138 src/input/input_net.c:164 +#: src/input/input_net.c:136 src/input/input_net.c:162 #, c-format msgid "input_net: connect(): %s\n" msgstr "input_net: connect(): %s\n" -#: src/input/input_net.c:182 src/input/input_net.c:224 +#: src/input/input_net.c:180 src/input/input_net.c:222 #, c-format msgid "input_net: unable to resolve '%s'.\n" msgstr "input_net: mi estas nekapabla solvi '%s'.\n" -#: src/input/input_net.c:195 src/input/input_net.c:241 +#: src/input/input_net.c:193 src/input/input_net.c:239 #, c-format msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: mi estas nekapabla konektigi '%s'.\n" -#: src/input/input_net.c:510 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "eniga xine-entenita kromaĵo de reto" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "eniga kromaĵo por pmn-datumstio" -#: src/input/input_pvr.c:603 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: eraro dum kreado de dosiero pvr (%s)\n" -#: src/input/input_pvr.c:760 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: eraro dum malfermado de dosiero pvr (%s)\n" -#: src/input/input_pvr.c:836 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: eraro de lego (%s)\n" -#: src/input/input_pvr.c:1152 src/input/input_pvr.c:1405 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: eraro dum malfermado de aparato %s\n" -#: src/input/input_pvr.c:1158 src/input/input_pvr.c:1411 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_G_CODEC malsukcesis, ĉu API estas ÅanÄita?\n" -#: src/input/input_pvr.c:1166 src/input/input_pvr.c:1420 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_S_CODEC malsukcesis, ĉu API estas ÅanÄita?\n" -#: src/input/input_pvr.c:1528 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "eniga kromaĵo WinTV-PVR 250/350" -#: src/input/input_pvr.c:1554 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "aparato uzata por WinTV-PVR 250/350 (pvr-kromaĵo)" -#: src/input/input_pvr.c:1555 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "RaÅto por la aparato de WinTV-karto." -#: src/input/input_rtp.c:185 +#: src/input/input_rtp.c:183 #, c-format msgid "socket(): %s.\n" msgstr "socket(): %s.\n" -#: src/input/input_rtp.c:195 +#: src/input/input_rtp.c:193 msgid "IP address specified is multicast\n" msgstr "La specifita IP-adreso estas plursenda\n" -#: src/input/input_rtp.c:204 +#: src/input/input_rtp.c:202 #, c-format msgid "setsockopt(SO_RCVBUF): %s.\n" msgstr "setsockopt(SO_RCVBUF): %s.\n" -#: src/input/input_rtp.c:212 +#: src/input/input_rtp.c:210 #, c-format msgid "setsockopt(SO_REUSEADDR): %s.\n" msgstr "setsockopt(SO_REUSEADDR): %s.\n" -#: src/input/input_rtp.c:219 +#: src/input/input_rtp.c:217 #, c-format msgid "bind(): %s.\n" msgstr "bind(): %s.\n" -#: src/input/input_rtp.c:239 +#: src/input/input_rtp.c:237 #, c-format msgid "Can't find address for iface %s:%s\n" msgstr "Estas neeble trovi adreson por iface %s:%s\n" -#: src/input/input_rtp.c:257 +#: src/input/input_rtp.c:255 #, c-format msgid "setsockopt(IP_ADD_MEMBERSHIP) failed (multicast kernel?): %s.\n" msgstr "setsockopt(IP_ADD_MEMBERSHIP) malsukcesis (ĉu plursenda kerno?): %s.\n" -#: src/input/input_rtp.c:279 +#: src/input/input_rtp.c:277 #, c-format msgid "unable to resolve '%s'.\n" msgstr "mi estas nekapabla solvi '%s'.\n" -#: src/input/input_rtp.c:289 +#: src/input/input_rtp.c:287 #, c-format msgid "unable to bind to '%s'.\n" msgstr "mi estas nekapabla bindi al '%s'.\n" -#: src/input/input_rtp.c:317 +#: src/input/input_rtp.c:336 #, c-format msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:605 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: lego de fadeno estas haltanta...\n" -#: src/input/input_rtp.c:608 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: lego de fadeno finiÄis\n" -#: src/input/input_rtp.c:623 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Malfermante >dosiernomon:%s pordon:%d interfacon:%s<\n" -#: src/input/input_rtp.c:640 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: estas neeble krei novan fadenon (%s)\n" -#: src/input/input_rtp.c:746 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "eniga kromaĵo entenata en xine por RTP kaj UDP" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "eniga kromaĵo por datumstrio de RTSP" -#: src/input/input_smb.c:158 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "CIFS/SMB-eniga kromaĵo bazita sur libsmbclient" -#: src/input/input_stdin_fifo.c:166 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: estas neeble retro-enpoziciigi! (%<PRIdMAX> > %<PRIdMAX>)\n" -#: src/input/input_stdin_fifo.c:254 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: malsukcesis malfermo de '%s'\n" -#: src/input/input_stdin_fifo.c:350 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "eniga kromaĵo por datumstrio de stdin" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Troo de bufro..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Maltroo de bufro..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "AranÄante..." -#: src/input/input_v4l.c:660 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Nomo de sintonizilo ne estis trovita\n" -#: src/input/input_v4l.c:1876 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "v4l eniga kromaĵo por tv" -#: src/input/input_v4l.c:1880 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "v4l eniga kromaĵo por radio" -#: src/input/input_v4l.c:1912 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "v4l videoaparato" -#: src/input/input_v4l.c:1913 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "RaÅto por videoaparato de Video4Linux." -#: src/input/input_v4l.c:1938 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "v4l radiooaparato" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "RaÅto por videoaparato de Video4Linux." + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "v4l radiooaparato" -#: src/input/input_v4l.c:1939 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "RaÅto por radioaparato de Video4Linux" -#: src/input/input_vcd.c:850 +#: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: difektita MRL. Uzu vcdo:/<track #>\n" -#: src/input/input_vcd.c:856 +#: src/input/input_vcd.c:853 #, c-format msgid "input_vcd: invalid track %d (valid range: 0 .. %d)\n" msgstr "input_vcd: nevalida trako %d (valida intervalo: 0 .. %d)\n" -#: src/input/input_vcd.c:923 +#: src/input/input_vcd.c:920 msgid "Video CD input plugin" msgstr "Eniga kromaĵo por Videa KD (VCD)" -#: src/input/input_vcd.c:968 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "Mi estas nekapabla malfermi %s: %s.\n" -#: src/input/input_vcd.c:1044 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: mi estas nekapabla malfermi %s: %s.\n" -#: src/input/input_vcd.c:1098 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "aparato uzata por legi/ludi VCD" -#: src/input/input_vcd.c:1099 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." msgstr "" -#: src/input/librtsp/rtsp.c:450 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: nevalida mrl: %s\n" -#: src/input/librtsp/rtsp.c:510 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: malsukcesis konekto kun '%s'\n" -#: src/input/librtsp/rtsp_session.c:109 +#: src/input/librtsp/rtsp_session.c:107 #, c-format msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: malsukcesis konekto kun servilo %s\n" -#: src/input/librtsp/rtsp_session.c:143 +#: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: sesio ne kapablas stariÄi.\n" -#: src/input/librtsp/rtsp_session.c:161 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: sesio ne kapablas stariÄi.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2097,40 +2383,41 @@ msgstr "input_dvd: Aparato %s malsukcesis malfermiÄi dum voko de elĵeto\n" msgid "Connecting MMS server (over tcp)..." msgstr "Konektigante MSS-servilon (per tcp)..." -#: src/input/mmsh.c:201 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: eraro de sendo\n" -#: src/input/mmsh.c:246 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: nevalida formato de respondo\n" -#: src/input/mmsh.c:252 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: 3xx-alidirektado ne estas ankoraÅ realigita: >%d %s<\n" -#: src/input/mmsh.c:259 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: stato de http ne estas 2xx: >%d %s<\n" -#: src/input/mmsh.c:267 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: alidirektado de LOCATION ne estas ankoraÅ realigita\n" -#: src/input/mmsh.c:476 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "Konektigante MSS-servilon (per http)..." -#: src/input/mmsh.c:657 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "nevalida url\n" -#: src/input/mmsh.c:662 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "nesubtenita protokolo\n" @@ -2139,7 +2426,7 @@ msgstr "nesubtenita protokolo\n" msgid "Buffering..." msgstr "Bufrado..." -#: src/input/pnm.c:617 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2148,12 +2435,13 @@ msgstr "" "input_pnm: mesaÄo el servilo dum lego de datumstrio:\n" "%s\n" -#: src/input/pnm.c:755 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "nput_pnm: malsukcesis konekto '%s'\n" -#: src/input/pnm.c:766 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: agordado de datumstrio malsukcesis\n" @@ -2193,108 +2481,108 @@ msgstr "AntaÅaĵo devus esti konvertita" msgid "failed to find a device with a VCD" msgstr "estas neeble trovi aparaton kun VCD" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "nula parametro de klaso estis havigita" -#: src/input/vcd/xineplug_inp_vcd.c:972 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Nevalida speco de nuna enigo" -#: src/input/vcd/xineplug_inp_vcd.c:996 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" "Kromaĵo por Videa KD kun PBC kaj subteno por: (X)VCD, (X)SVCD, HQVCD, " "CVD ... " -#: src/input/vcd/xineplug_inp_vcd.c:1097 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "elekto ne havas eron de speco RETURN" -#: src/input/vcd/xineplug_inp_vcd.c:1126 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "elektita DEFAULT, sed PBC ne estas ebligita." -#: src/input/vcd/xineplug_inp_vcd.c:1131 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "elekto ne havas eron de speco NEXT" -#: src/input/vcd/xineplug_inp_vcd.c:1139 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "elekto ne havas eron de speco PREVIOUS" -#: src/input/vcd/xineplug_inp_vcd.c:1146 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "Nekonata speco de evento:" -#: src/input/vcd/xineplug_inp_vcd.c:1446 src/input/vcd/xineplug_inp_vcd.c:1493 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1824 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "DefaÅlta speco de VCD uzenda por aÅtomata lego" -#: src/input/vcd/xineplug_inp_vcd.c:1825 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1835 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "Lumdiskingo uzenda por VCD kiam Äi estas ne specifita" -#: src/input/vcd/xineplug_inp_vcd.c:1836 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1846 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "intervalo de Åovindikilo por VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1847 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1855 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "Ĉu lega-senkapa kaÅmemorigo de VCD?" -#: src/input/vcd/xineplug_inp_vcd.c:1856 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "Tiu ĉi klaso povas kaÅzi singultan legadon laÅ malrapidaj komputiloj." -#: src/input/vcd/xineplug_inp_vcd.c:1866 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "mem-pluiro laÅ trako/ero de VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1867 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1876 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "montru LID de \"rifuzitaj\" VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1877 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1888 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "VDC-formata Ĉeno por vidigi rulbandon" -#: src/input/vcd/xineplug_inp_vcd.c:1889 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2315,11 +2603,11 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1914 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "VDC-formata Ĉeno por fako de komento pri datumstrio" -#: src/input/vcd/xineplug_inp_vcd.c:1915 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2327,11 +2615,11 @@ msgid "" "See the help for the title_format for the meanings of these." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1927 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "Masko de flago por sencimigi VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2348,15 +2636,16 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:742 src/libdts/xine_dts_decoder.c:546 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "HELPO! Ĉu nur unufonia aÅdozorgilo?!\n" -#: src/liba52/xine_a52_decoder.c:805 +#: src/liba52/xine_a52_decoder.c:820 msgid "A/52 volume" msgstr "A/52 laÅteco" -#: src/liba52/xine_a52_decoder.c:806 +#: src/liba52/xine_a52_decoder.c:821 msgid "" "With A/52 audio, you can modify the volume at the decoder level. This has " "the advantage of the audio being already decoded for the specified volume, " @@ -2364,22 +2653,22 @@ msgid "" "the given volume." msgstr "" -#: src/liba52/xine_a52_decoder.c:814 +#: src/liba52/xine_a52_decoder.c:829 msgid "use A/52 dynamic range compression" msgstr "uzu A/52 dinamikan kunpremon" -#: src/liba52/xine_a52_decoder.c:815 +#: src/liba52/xine_a52_decoder.c:830 msgid "" "Dynamic range compression limits the dynamic range of the audio. This means " "making the loud sounds softer, and the soft sounds louder, so you can more " "easily listen to the audio in a noisy environment without disturbing anyone." msgstr "" -#: src/liba52/xine_a52_decoder.c:822 +#: src/liba52/xine_a52_decoder.c:837 msgid "downmix audio to 2 channel surround stereo" msgstr "downmix aÅdo kun 2 (surround) stereaj kanaloj" -#: src/liba52/xine_a52_decoder.c:823 +#: src/liba52/xine_a52_decoder.c:838 msgid "" "When you want to listen to multichannel surround sound, but you have only " "two speakers or a surround decoder or amplifier which does some sort of " @@ -2387,156 +2676,47 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:131 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad NeAACDecOpen() malsukcesis.\n" -#: src/libfaad/xine_faad_decoder.c:140 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad NeAACDecInit2 malsukcesis.\n" -#: src/libfaad/xine_faad_decoder.c:151 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad NeAACDecInit malsukcesis.\n" -#: src/libffmpeg/ff_audio_decoder.c:120 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: agordo de bufro je %d por eviti troon.\n" - -#: src/libffmpeg/ff_audio_decoder.c:164 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_audio_dec: estas neeble trovi malkodilo de ffmpeg por bufrospeco 0x%" -"X\n" - -#: src/libffmpeg/ff_audio_decoder.c:256 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: mi provas malfermi nulan kodaĵon\n" - -#: src/libffmpeg/ff_audio_decoder.c:265 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: estas neeble malfermi malkodilon\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:286 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: agordo de bufro je %d por eviti troon.\n" - -#: src/libffmpeg/ff_video_decoder.c:157 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "" -"ffmpeg_video_dec: nesubtenita formato de bildero, DR1 estas malebligita.\n" - -#: src/libffmpeg/ff_video_decoder.c:175 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "" -"ffmpeg_video_dec: nesubtenitaj dimensioj de bildero, DR1 estas malebligita.\n" - -#: src/libffmpeg/ff_video_decoder.c:335 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_video_dec: estas neeble trovi malkodilo de ffmpeg por bufrospeco 0x%" -"X\n" - -#: src/libffmpeg/ff_video_decoder.c:364 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: estas neeble malfermi malkodilon\n" - -#: src/libffmpeg/ff_video_decoder.c:399 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: ebligita rekta bildigo\n" - -#: src/libffmpeg/ff_video_decoder.c:818 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: agordo de bufro je %d por eviti troon.\n" - -#: src/libffmpeg/ff_video_decoder.c:1516 -msgid "MPEG-4 postprocessing quality" -msgstr "kvalito de MPEG-4 postprocesado" - -#: src/libffmpeg/ff_video_decoder.c:1517 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"Vi povas aranÄi kvanton de postprocezado aplikita al MPEG-4 video.\n" -"Pli alta valoro atingas pli bonan kvaliton, sed Äi nacesas pli CPU. Malaltaj " -"valoroj povas krei difektojn kiel blokartefaktojn. AnkaÅ se la enhavo estas " -"altkvalita, grava postprocezado povas igi bildon pli aĉa ĉar Äi estas tro " -"malfokusita." - -#: src/libffmpeg/ffmpeg_encoder.c:167 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "bitkvanto de mpeg eligo por libavcodec (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:168 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:175 -msgid "constant quality mode" -msgstr "moduso de konstanta kvalito" - -#: src/libffmpeg/ffmpeg_encoder.c:176 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" -"Se Äi estas ebligita, libavcodec uzos moduson de konstanta kvalito per " -"dinamika kompleksecbazita kunpremado de la bildoj. Se Äi estas malebligita, " -"libavcodec uzos moduson de konstanta bitkvanto." - -#: src/libffmpeg/ffmpeg_encoder.c:183 -msgid "minimum compression" -msgstr "minimuma kunpremo" - -#: src/libffmpeg/ffmpeg_encoder.c:184 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "Minimuma kunpremo aplikenda al bildo kun moduso de konstanta kvalito." - -#: src/libffmpeg/ffmpeg_encoder.c:189 -msgid "maximum quantizer" -msgstr "maksimuma ciferecigilo" - -#: src/libffmpeg/ffmpeg_encoder.c:190 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "Maksimuma kunpremo aplikenda al bildo kun moduso de konstanta kvalito." - -#: src/libmusepack/xine_musepack_decoder.c:241 +#: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "libmusepack: mpc_streaminfo_read malsukcesis: %d\n" -#: src/libmusepack/xine_musepack_decoder.c:315 +#: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "libmusepack: datumoj post lasta filmero estis ignorataj\n" -#: src/libmusepack/xine_musepack_decoder.c:326 +#: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "libmusepack: mpc_decoder_initialise malsukcesis\n" -#: src/libmusepack/xine_musepack_decoder.c:346 -#: src/libmusepack/xine_musepack_decoder.c:361 +#: src/libmusepack/xine_musepack_decoder.c:344 +#: src/libmusepack/xine_musepack_decoder.c:359 #, c-format msgid "libmusepack: mpc_decoder_decode failed: %d\n" msgstr "libmusepack: mpc_decoder_decode malsukcesis: %d\n" -#: src/libreal/real_common.c:107 +#: src/libreal/real_common.c:139 msgid "path to RealPlayer codecs" msgstr "raÅto por kodaĵoj de RealPlayer" -#: src/libreal/real_common.c:108 +#: src/libreal/real_common.c:140 msgid "" "If you have RealPlayer installed, specify the path to its codec directory " "here. You can easily find the codec directory by looking for a file named " @@ -2545,7 +2725,8 @@ msgid "" "information on how to install the codecs." msgstr "" -#: src/libreal/xine_real_video_decoder.c:164 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" "libreal: Eraro dum solvado de simboloj! (ĉu nekompatibileco de versioj?)\n" @@ -2555,93 +2736,90 @@ msgstr "" msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (aÅdo) Estas neeble solvi simbolojn - malkongrua dll: %s\n" -#: src/libreal/xine_real_audio_decoder.c:287 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "libareal: preparado de malkodilo malsukcesis, erarkodo: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:301 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "libareal: agordado de malkodilspeco malsukcesis, erarkodo: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:338 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: huj, ĉu REAL povas uzi pli ol 2 kanalojn ?\n" -#: src/libspucc/xine_cc_decoder.c:192 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "vidigu fermitajn ĉapitrojn en MPEG-2 datumstrioj" -#: src/libspucc/xine_cc_decoder.c:193 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" "Fermitaj Ĉapitroj estas surskribaĵojn kutime uzatajn por helpi surdulojn." -#: src/libspucc/xine_cc_decoder.c:200 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "skemo de fonaj/malfonaj koloroj por fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:201 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Elektu vian favoratan bildigon por fermitaj ĉapitroj." -#: src/libspucc/xine_cc_decoder.c:207 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "defaÅlta tiparo de fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:208 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Elektu tiparon por defaÅlta teksto de fermitaj ĉapitroj." -#: src/libspucc/xine_cc_decoder.c:214 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "kursivo por fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:215 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "Elektu tiparon por kursiva teksto de fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:221 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "tipargrando por fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:222 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "Elektu tipargrandon por teksto de fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:226 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "centrigo de fermitaj ĉapitroj" -#: src/libspucc/xine_cc_decoder.c:227 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:480 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "tiparo por eksteraj surskribaĵoj" -#: src/libspucmml/xine_cmml_decoder.c:486 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "vertikala deÅovo de surskribaĵoj (rilata al fenestrogrando)" -#: src/libspucmml/xine_cmml_decoder.c:532 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "kodo de surskribaĵoj" -#: src/libspudvb/xine_spudvb_decoder.c:621 -msgid "dvbsub: cannot create timer thread\n" -msgstr "dvbsub: estas neeble krei fadenon de komuna aliro\n" - -#: src/libsputext/demux_sputext.c:1506 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "defaÅlta pludaÅro de surskribaĵoj en sekundoj" -#: src/libsputext/demux_sputext.c:1507 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " @@ -2651,49 +2829,49 @@ msgstr "" "vi povas ĉi tie agordi defaÅltan pludaÅro. Agordante je nulo, la surskribaĵo " "pludaÅras Äis anstataÅigo de Äi per la sekvanta." -#: src/libsputext/xine_sputext_decoder.c:948 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "grando de surskribaĵoj" -#: src/libsputext/xine_sputext_decoder.c:949 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:955 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "vertikala deÅovo de surskribaĵoj" -#: src/libsputext/xine_sputext_decoder.c:956 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:962 -#: src/libsputext/xine_sputext_decoder.c:971 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "tiparo por surskribaĵoj" -#: src/libsputext/xine_sputext_decoder.c:963 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" "Tipardosiero (el dosierujo de tiparoj de xine) uzenda por surskribaĵoj." -#: src/libsputext/xine_sputext_decoder.c:972 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "Ekstera tipardosiero (ekz. .ttf) uzenda por surskribaĵoj." -#: src/libsputext/xine_sputext_decoder.c:978 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "uzu libertiparan tiparon, se Äi estas farebla" -#: src/libsputext/xine_sputext_decoder.c:985 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "kodo de surskribaĵoj" -#: src/libsputext/xine_sputext_decoder.c:986 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2704,11 +2882,11 @@ msgstr "" "bildigi ne-ASCII-ajn tipojn. Se ne-ASCII-ajn tipojn ne estas vidigitaj kiel " "vi supozas, demandu al kreanto de surskribaĵoj pri uzata kodo." -#: src/libsputext/xine_sputext_decoder.c:994 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "uzu neskalitan OSD, se Äi estas farebla" -#: src/libsputext/xine_sputext_decoder.c:995 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -2736,30 +2914,30 @@ msgid "" "to install the codecs." msgstr "" -#: src/libw32dll/w32codec.c:588 +#: src/libw32dll/w32codec.c:585 #, c-format msgid "w32codec: ICOpen failed! unknown codec %08lx / wrong parameters?\n" msgstr "" "w32codec: ICOpen malsukcesis! Ĉu nekonata kodaĵo %08lx aÅ eraraj " "parametroj?\n" -#: src/libw32dll/w32codec.c:597 +#: src/libw32dll/w32codec.c:594 #, c-format msgid "w32codec: ICDecompressGetFormat (%.4s %08lx/%d) failed: Error %ld\n" msgstr "" "w32codec: ICDecompressGetFormat (%.4s %08lx/%d) malsukcesis: eraro %ld\n" -#: src/libw32dll/w32codec.c:630 +#: src/libw32dll/w32codec.c:627 #, c-format msgid "w32codec: ICDecompressQuery failed: Error %ld\n" msgstr "w32codec: ICDecompressQuery malsukcesis: eraro %ld\n" -#: src/libw32dll/w32codec.c:641 +#: src/libw32dll/w32codec.c:638 #, c-format msgid "w32codec: ICDecompressBegin failed: Error %ld\n" msgstr "w32codec: ICDecompressBegin malsukcesis: eraro %ld\n" -#: src/libw32dll/w32codec.c:687 +#: src/libw32dll/w32codec.c:684 #, c-format msgid "" "w32codec: DS_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" @@ -2767,7 +2945,7 @@ msgstr "" "w32codec: DS_VideoDecoder malsukcesis! Ĉu nekonata kodaĵo %08lx aÅ eraraj " "parametroj?\n" -#: src/libw32dll/w32codec.c:698 +#: src/libw32dll/w32codec.c:695 #, c-format msgid "" "w32codec: DMO_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" @@ -2775,57 +2953,57 @@ msgstr "" "w32codec: DMO_VideoDecoder malsukcesis! Ĉu nekonata kodaĵo %08lx aÅ eraraj " "parametroj?\n" -#: src/libw32dll/w32codec.c:818 src/libw32dll/w32codec.c:1487 +#: src/libw32dll/w32codec.c:815 src/libw32dll/w32codec.c:1484 #, c-format msgid "w32codec: decoder failed to start. Is '%s' installed?\n" msgstr "w32codec: starto de malkodilo malsukcesis. Ĉu '%s' estas instalita?\n" -#: src/libw32dll/w32codec.c:1221 +#: src/libw32dll/w32codec.c:1218 #, c-format msgid "w32codec: (ACM_Decoder) Unappropriate audio format\n" msgstr "w32codec: (ACM_Decoder) netaÅga aÅdoformato\n" -#: src/libw32dll/w32codec.c:1224 +#: src/libw32dll/w32codec.c:1221 #, c-format msgid "w32codec: (ACM_Decoder) acmStreamOpen error %d\n" msgstr "w32codec: (ACM_Decoder) acmStreamOpen eraro %d\n" -#: src/libw32dll/w32codec.c:1243 +#: src/libw32dll/w32codec.c:1240 #, c-format msgid "w32codec: Error initializing DirectShow Audio\n" msgstr "w32codec: Eraro dum preparado de DirectShow AÅdo\n" -#: src/libw32dll/w32codec.c:1261 +#: src/libw32dll/w32codec.c:1258 #, c-format msgid "w32codec: Error initializing DMO Audio\n" msgstr "w32codec: Eraro dum preparado de DMO AÅdo\n" -#: src/libxinevdec/bitplane.c:1272 +#: src/libxinevdec/bitplane.c:1270 #, c-format msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: eraro dum malkumpremado de ByteRun1\n" -#: src/libxinevdec/bitplane.c:1331 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 nun ne estas ankoraÅ subtenita\n" -#: src/libxinevdec/bitplane.c:1338 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 nun ne estas ankoraÅ subtenita\n" -#: src/libxinevdec/bitplane.c:1388 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ nun ne estas ankoraÅ subtenita\n" -#: src/libxinevdec/bitplane.c:1394 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: Tiu ĉi anim-speco nun ne estas ankoraÅ subtenita\n" -#: src/post/audio/stretch.c:264 +#: src/post/audio/stretch.c:263 msgid "" "This filter will perform a time stretch, playing the stream faster or slower " "by a factor. Pitch is optionally preserved, so it is possible, for example, " @@ -2835,7 +3013,7 @@ msgstr "" "rapide per iu faktoro. La tembro estas, laÅpete, konservita, do vi povas uzi " "tion, ekzemple, por vidi filmon dum pli mallonga tempo.\n" -#: src/post/audio/upmix.c:137 +#: src/post/audio/upmix.c:134 msgid "" "Upmix functions. e.g. Take stereo input and produce Surround 5.1 output.\n" "Parameters\n" @@ -2846,7 +3024,7 @@ msgid "" "\n" msgstr "" -#: src/post/audio/upmix_mono.c:109 +#: src/post/audio/upmix_mono.c:106 msgid "" "This filter will upmix a mono stream to stereo, by duplicating channels. " "Alternatively, one may use this plugin to listen just one channel of a given " @@ -2856,22 +3034,24 @@ msgstr "" "duplikatado de la kanaloj. Alie, oni poas uzi tiun ĉi kromaĵon por aÅskulti " "nur unu kanalon de iu ajn havigita datumstrio.\n" -#: src/post/audio/upmix_mono.c:147 +#: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr ": miksante de Unuofonio al Sterefonio.\n" -#: src/post/audio/upmix_mono.c:152 +#: src/post/audio/upmix_mono.c:149 #, c-format msgid ": upmixing a single channel from original %d channel stream.\n" msgid_plural ": upmixing a single channel from original %d channels stream.\n" msgstr[0] ": miksante unuopan kanalon el originala datumstrio je %d kanalo.\n" msgstr[1] ": miksante unuopan kanalon el originala datumstrio je %d kanaloj.\n" -#: src/post/audio/upmix_mono.c:157 +#: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr ": aÅdaparato ne kapablas uzi AO_CAP_MODE_STEREO.\n" -#: src/post/audio/volnorm.c:150 +#: src/post/audio/volnorm.c:147 msgid "" "Normalizes audio by maximizing the volume without distorting the sound.\n" "\n" @@ -2881,7 +3061,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:204 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -2895,6 +3075,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -2934,16 +3117,17 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:325 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "" "tvtime: Neniu disponebla metodo de malplektado; do estas devige eliri.\n" -#: src/post/goom/xine_goom.c:204 +#: src/post/goom/xine_goom.c:206 msgid "frames per second to generate" msgstr "kreotaj filmeroj por sekundo" -#: src/post/goom/xine_goom.c:205 +#: src/post/goom/xine_goom.c:207 msgid "" "With more frames per second, the animation will get smoother and faster, but " "will also require more CPU power." @@ -2951,27 +3135,27 @@ msgstr "" "Ju pli filmeroj por sekundo, des pli rapida kaj pli flua estos la animacio, " "sed Äi necesos pli povumon de CPU." -#: src/post/goom/xine_goom.c:210 +#: src/post/goom/xine_goom.c:212 msgid "goom image width" msgstr "larÄo de goom-bildo" -#: src/post/goom/xine_goom.c:211 +#: src/post/goom/xine_goom.c:213 msgid "The width in pixels of the image to be generated." msgstr "LarÄo en bilderoj de la bildo kiu estos kreita." -#: src/post/goom/xine_goom.c:215 +#: src/post/goom/xine_goom.c:217 msgid "goom image height" msgstr "alto de goom-bildo" -#: src/post/goom/xine_goom.c:216 +#: src/post/goom/xine_goom.c:218 msgid "The height in pixels of the image to be generated." msgstr "Alto en bilderoj de la bildo kiu estos kreita." -#: src/post/goom/xine_goom.c:222 +#: src/post/goom/xine_goom.c:224 msgid "colour space conversion method" msgstr "metodo de kolor-konvertado" -#: src/post/goom/xine_goom.c:223 +#: src/post/goom/xine_goom.c:225 msgid "" "You can choose the colour space conversion method used by goom.\n" "The available selections should be self-explaining." @@ -2979,7 +3163,7 @@ msgstr "" "Vi povas elekti metodon de kolor-konvertado kiu estas uzata far goom.\n" "La disponeblaj elektadoj devus estis mem-esplikantaj." -#: src/post/mosaico/mosaico.c:273 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -2999,7 +3183,7 @@ msgstr "" " w: larÄo de la bildo\n" " h: alto de la bildo\n" -#: src/post/mosaico/switch.c:230 +#: src/post/mosaico/switch.c:228 msgid "" "Switch can be used for fast switching between multiple inputs.\n" "\n" @@ -3007,7 +3191,7 @@ msgid "" " select: the number of the input which will be passed to the output\n" msgstr "" -#: src/post/planar/boxblur.c:103 +#: src/post/planar/boxblur.c:101 msgid "" "Box blur does a simple blurring of the image.\n" "\n" @@ -3025,7 +3209,7 @@ msgstr "" "\n" "* mplayer's boxblur (C) 2002 Michael Niedermayer\n" -#: src/post/planar/denoise3d.c:136 +#: src/post/planar/denoise3d.c:134 msgid "" "This filter aims to reduce image noise producing smooth images and making " "still images really still (This should enhance compressibility.). It can be " @@ -3040,7 +3224,7 @@ msgid "" "* mplayer's denoise3d (C) 2003 Daniel Moreno\n" msgstr "" -#: src/post/planar/eq.c:186 +#: src/post/planar/eq.c:184 msgid "" "Software equalizer with interactive controls just like the hardware " "equalizer, for cards/drivers that do not support brightness and contrast " @@ -3056,7 +3240,7 @@ msgid "" "* mplayer's eq (C) Richard Felker\n" msgstr "" -#: src/post/planar/eq2.c:359 +#: src/post/planar/eq2.c:357 msgid "" "Alternative software equalizer that uses lookup tables (very slow), allowing " "gamma correction in addition to simple brightness, contrast and saturation " @@ -3095,7 +3279,7 @@ msgid "" "\n" msgstr "" -#: src/post/planar/noise.c:402 +#: src/post/planar/noise.c:400 msgid "" "Adds random noise to the video.\n" "\n" @@ -3113,7 +3297,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:108 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3125,13 +3309,13 @@ msgstr "" "Parametoj\n" "\n" -#: src/post/planar/pp.c:114 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/unsharp.c:220 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3159,140 +3343,156 @@ msgid "" "* mplayer's unsharp (C) 2002 Remi Guyomarch\n" msgstr "" -#: src/video_out/video_out_aa.c:311 +#: src/video_out/video_out_aa.c:308 msgid "xine video output plugin using the ascii-art library" msgstr "videoeliga kromaĵo de xine uzas bibliotekon ascii-art" -#: src/video_out/video_out_caca.c:318 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "videoeliga kromaĵo de xine uzas bibliotekon de Color AsCii Art" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "moduso de bufrado por videa tavolo" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "atendu vertikalan redesegnadon" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "ebligu videan kolorÅlosilon" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "videa kolorÅlosilo" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 +msgid "" +"The colour key is used to tell the graphics card where to overlay the video " +"image. Try different values, if you experience windows becoming transparent." +msgstr "" + +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "filtrilo kontraÅ tremo" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "egaleco de kampo" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "video_out_directfb: uzante hardvaran akceladon de sub-bildoj.\n" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_directfb: tavolo subtenas videan eligon.\n" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_directfb: la tavolo ne subtenas YV12!\n" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_directfb: la tavolo ne subtenas YUY2!\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" "video_out_directfb: almenaÅ DirectFB 0.9.25 estas necesa por legi tiun ĉi " "tavolon!\n" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "video_out_directfb: tavolo ne subtenas la moduson de bufro %d!\n" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "video_out_directfb: tavolo ne subtenas opcion 0x%08x!\n" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "video_out_directfb: uzante skaladon hardvare akcelitan.\n" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "ID de videotavolo (auto: -1)" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "Elektu videoeligan tavolon per sia ID" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2013 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_directfb: uzante vidigantan tavolon #%d.\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "videoeliga xine-kromaĵo uzas DirectFB." -#: src/video_out/video_out_directfb.c:2006 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "video_out_directfb: neniu vidigantan tavolon estis trovita!\n" -#: src/video_out/video_out_directfb.c:2095 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "videoeliga xine-kromaĵo uzas DirectFB sub XDirectFB." -#: src/video_out/video_out_directx.c:1238 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "videoeliga kromaĵo de xine por win32 uzas directx" -#: src/video_out/video_out_fb.c:792 +#: src/video_out/video_out_fb.c:758 #, c-format msgid "" "video_out_fb: only packed truecolour/directcolour is supported (%d).\n" @@ -3301,11 +3501,11 @@ msgstr "" "video_out_fb: estas subtenita nur enpakigita verkoloro/rektkoloro (%d).\n" " Kontrolu per 'fbset -i' aÅ provu 'fbset -depth 16'.\n" -#: src/video_out/video_out_fb.c:852 src/video_out/video_out_vidix.c:1239 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "nomo de kvadrobrufrilo" -#: src/video_out/video_out_fb.c:853 src/video_out/video_out_vidix.c:1240 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3313,16 +3513,17 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_fb.c:927 +#: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Videomoduso ne estis rekonita, mi bedaÅras :-(\n" -#: src/video_out/video_out_fb.c:984 +#: src/video_out/video_out_fb.c:950 #, c-format msgid "video_out_fb: %d video RAM buffers are available.\n" msgstr "video_out_fb: %d videaj RAM-bufroj estas disponeblaj.\n" -#: src/video_out/video_out_fb.c:990 +#: src/video_out/video_out_fb.c:956 #, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because only %d " @@ -3336,7 +3537,8 @@ msgstr "" "kadrobufra \n" " difino povus helpi.\n" -#: src/video_out/video_out_fb.c:1001 +#: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3345,7 +3547,7 @@ msgstr "" "kerno\n" " ne subtenas delokadon de ekrano (uzata por inversigoj de filmeroj).\n" -#: src/video_out/video_out_fb.c:1070 +#: src/video_out/video_out_fb.c:1036 #, c-format msgid "" "WARNING: video_out_fb: current display depth is %d. For better performance\n" @@ -3357,19 +3559,19 @@ msgstr "" " pli bona performanco, oni rekomendas profundecon je 16 bpp!\n" "\n" -#: src/video_out/video_out_fb.c:1101 +#: src/video_out/video_out_fb.c:1067 msgid "Xine video output plugin using the Linux frame buffer device" msgstr "videoeliga kromaĵo de xine uzas kadrobufrilon de Linukso" -#: src/video_out/video_out_none.c:279 +#: src/video_out/video_out_none.c:277 msgid "xine video output plugin which displays nothing" msgstr "videoeliga xine-kromaĵo kiu vidigas nenion" -#: src/video_out/video_out_opengl.c:1889 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "Bildigo de OpenGL" -#: src/video_out/video_out_opengl.c:1890 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3398,11 +3600,11 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1912 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "Minimuma filmerkvanto por OpenGL" -#: src/video_out/video_out_opengl.c:1913 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" @@ -3410,50 +3612,51 @@ msgstr "" "Minimuma filmerkvanto por animacioj.\n" "Äœi estas ignorita por statikaĵoj.\n" -#: src/video_out/video_out_opengl.c:1918 src/video_out/video_out_vidix.c:1015 -#: src/video_out/video_out_xcbxv.c:1472 src/video_out/video_out_xv.c:1486 -#: src/video_out/video_out_xvmc.c:1461 src/video_out/video_out_xxmc.c:2468 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "ebligu duoblan bufradon" -#: src/video_out/video_out_opengl.c:1919 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -#: src/video_out/video_out_opengl.c:1966 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "videoeliga kromaĵo de xine uzas 3D-grafikan API de OpenGL" -#: src/video_out/video_out_pgx32.c:190 +#: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx32: Error: estas neeble preni desegnabla DGA por videofenestro\n" -#: src/video_out/video_out_pgx32.c:209 src/video_out/video_out_pgx32.c:223 +#: src/video_out/video_out_pgx32.c:206 src/video_out/video_out_pgx32.c:220 #, c-format msgid "video_out_pgx32: Error: ioctl failed, bad device (%s)\n" msgstr "video_out_pgx32: Eraro: ioctl malsukcesis, nevalida aparato (%s)\n" -#: src/video_out/video_out_pgx32.c:216 +#: src/video_out/video_out_pgx32.c:213 #, c-format msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "video_out_pgx32: Eraro: '%s' ne estas pgx32-kadrobufrilo\n" -#: src/video_out/video_out_pgx64.c:281 +#: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx64: Eraro: estas neeble preni DGA desegneblan por " "videofenestro\n" -#: src/video_out/video_out_pgx64.c:299 +#: src/video_out/video_out_pgx64.c:296 #, c-format msgid "video_out_pgx64: Error: can't open framebuffer device '%s'\n" msgstr "video_out_pgx64: Eraro: estas neeble malfermi kadrobufrilon '%s'\n" -#: src/video_out/video_out_pgx64.c:306 +#: src/video_out/video_out_pgx64.c:303 #, c-format msgid "" "video_out_pgx64: Error: ioctl failed (VIS_GETIDENTIFIER), bad device (%s)\n" @@ -3461,140 +3664,155 @@ msgstr "" "video_out_pgx64: Eraro: ioctl malsukcesis (VIS_GETIDENTIFIER), nevalida " "aparato (%s)\n" -#: src/video_out/video_out_pgx64.c:319 +#: src/video_out/video_out_pgx64.c:316 #, c-format msgid "" "video_out_pgx64: Error: '%s' is not a xvr100/pgx64/pgx24 framebuffer device\n" msgstr "" "video_out_pgx64: Eraro: '%s' ne estas xvr100/pgx64/pgx24 kadrobufrilo\n" -#: src/video_out/video_out_pgx64.c:340 +#: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "video_out_pgx64: Eraro: videa surmeto sur ĉi ekrano estas jam uzata\n" -#: src/video_out/video_out_pgx64.c:355 +#: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "video_out_pgx64: Eraro: mi estas nekapabla agordi fenestron\n" -#: src/video_out/video_out_pgx64.c:811 +#: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" "video_out_pgx64: Atentu: eta videomemoro, plur-bufrado estas malebligita\n" -#: src/video_out/video_out_pgx64.c:843 +#: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Eraro: nesufiĉa videomemoro\n" -#: src/video_out/video_out_pgx64.c:859 +#: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: Atentu: eta videomemoro, duobla-bufrado estas malebligita\n" -#: src/video_out/video_out_pgx64.c:1397 +#: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Error: ioctl malsukcesis (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1464 src/video_out/video_out_xcbxv.c:1439 -#: src/video_out/video_out_xv.c:1453 src/video_out/video_out_xvmc.c:1446 -#: src/video_out/video_out_xxmc.c:2435 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "kolorÅlosilo de videa surmeto" -#: src/video_out/video_out_pgx64.c:1465 +#: src/video_out/video_out_pgx64.c:1462 msgid "" "The colour key is used to tell the graphics card where it can overlay the " "video image. Try using different values if you see the video showing through " "other windows." msgstr "" -#: src/video_out/video_out_pgx64.c:1472 +#: src/video_out/video_out_pgx64.c:1469 msgid "enable chroma keying" msgstr "ebligu Ålosiligon de kromata gamo" -#: src/video_out/video_out_pgx64.c:1473 +#: src/video_out/video_out_pgx64.c:1470 msgid "" "Draw OSD graphics on top of the overlay colour key rather than blend them " "into each frame." msgstr "" -#: src/video_out/video_out_pgx64.c:1476 +#: src/video_out/video_out_pgx64.c:1473 msgid "enable multi-buffering" msgstr "ebligu plur-bufradon" -#: src/video_out/video_out_pgx64.c:1477 +#: src/video_out/video_out_pgx64.c:1474 msgid "" "Multi buffering increases performance at the expense of using more graphics " "memory." msgstr "" -#: src/video_out/video_out_sdl.c:482 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "uzu hardvaran akcelado se Äi estas disponebla" -#: src/video_out/video_out_sdl.c:483 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -#: src/video_out/video_out_sdl.c:525 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "sdl devas imiti 16-bitan surfacon, do tio malrapidigos ĉion.\n" -#: src/video_out/video_out_sdl.c:562 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: tutekrana moduso NE estas subtenita\n" -#: src/video_out/video_out_sdl.c:573 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "videoeliga kromaĵo de xine uzas Simple Direct Media Layer" -#: src/video_out/video_out_stk.c:454 +#: src/video_out/video_out_stk.c:452 msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "videoeliga kromaĵo de xine uzas Libstk Surface Set-top Toolkit" -#: src/video_out/video_out_syncfb.c:282 +#: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: eraro. (YUY2 ne estas subtenita de via grafika karto)\n" -#: src/video_out/video_out_syncfb.c:298 +#: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: eraro. (YV12 ne estas subtenita de via grafika karto)\n" -#: src/video_out/video_out_syncfb.c:940 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" "video_out_syncfb: informo. (SyncFB-modjulo subtenas YUV 4:2:0 (3 plano))\n" -#: src/video_out/video_out_syncfb.c:945 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" "video_out_syncfb: informo. (SyncFB-modjulo subtenas YUV 4:2:0 (2 plano))\n" -#: src/video_out/video_out_syncfb.c:950 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "video_out_syncfb: informo. (SyncFB-modjulo subtenas YUV 4:2:2)\n" -#: src/video_out/video_out_syncfb.c:956 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: informo. (SyncFB-modjulo subtenas YUY2))\n" -#: src/video_out/video_out_syncfb.c:963 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: informo. (SyncFB-modjulo subtenas RGB565)\n" -#: src/video_out/video_out_syncfb.c:968 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" "video_out_syncfb: ĉesigo. (SyncFB-modjulo ne subtenas YV12, YUY2 aÅ RGB565)\n" -#: src/video_out/video_out_syncfb.c:987 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " @@ -3604,28 +3822,28 @@ msgstr "" "ĉar via SyncFB-kernomodjulo Åajnas kadukiÄinta. Bonvolu legi README.syncfb " "por informoj pri Äisdatigo de Äi.)\n" -#: src/video_out/video_out_syncfb.c:1011 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "defaÅlta nombro da ripetoj de filmeroj" -#: src/video_out/video_out_syncfb.c:1012 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "Tio difinas kiom da fojoj estos unu filmero estos vidigita sekve." -#: src/video_out/video_out_syncfb.c:1060 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "videoeliga kromaĵo de xine estas uzanta la SyncFB-modjulon por Matrox G200/" "G400 kartoj" -#: src/video_out/video_out_syncfb.c:1078 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "Nomo de SyncFB-aparato" -#: src/video_out/video_out_syncfb.c:1079 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3633,91 +3851,84 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_vidix.c:993 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "ruÄintenso" -#: src/video_out/video_out_vidix.c:993 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "" -#: src/video_out/video_out_vidix.c:998 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "verdintenso" -#: src/video_out/video_out_vidix.c:998 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1003 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "bluintenso" -#: src/video_out/video_out_vidix.c:1003 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1016 src/video_out/video_out_xcbxv.c:1473 -#: src/video_out/video_out_xv.c:1487 src/video_out/video_out_xvmc.c:1462 -#: src/video_out/video_out_xxmc.c:2469 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1063 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: adaptilo subtenas formaton yuy2\n" -#: src/video_out/video_out_vidix.c:1074 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: adaptilo subtenas formaton yv12\n" -#: src/video_out/video_out_vidix.c:1090 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: Erara versio de VIDIX-biblioteko\n" -#: src/video_out/video_out_vidix.c:1098 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "" "video_out_vidix: estas neeble trovi funkcikapablan zorgilon por VIDIX\n" -#: src/video_out/video_out_vidix.c:1111 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: uzante zorgilon: %s far de %s\n" -#: src/video_out/video_out_vidix.c:1158 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "ruÄa komponanto de kolorÅlosilo por videa surmeto" -#: src/video_out/video_out_vidix.c:1159 src/video_out/video_out_vidix.c:1166 -#: src/video_out/video_out_vidix.c:1173 src/video_out/video_out_xcbxv.c:1440 -#: src/video_out/video_out_xv.c:1454 src/video_out/video_out_xvmc.c:1447 -#: src/video_out/video_out_xxmc.c:2436 -msgid "" -"The colour key is used to tell the graphics card where to overlay the video " -"image. Try different values, if you experience windows becoming transparent." -msgstr "" - -#: src/video_out/video_out_vidix.c:1165 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "verda komponanto de kolorÅlosilo por videa surmeto" -#: src/video_out/video_out_vidix.c:1172 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "blua komponanto de kolorÅlosilo por videa surmeto" -#: src/video_out/video_out_vidix.c:1204 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "videoeliga kromaĵo de xine uzas libvidix por x11" -#: src/video_out/video_out_vidix.c:1286 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "videoeliga kromaĵo de xine uzas libvidix por linuksa kvadrobrufrilo" -#: src/video_out/video_out_xcbshm.c:157 +#: src/video_out/video_out_xcbshm.c:150 #, fuzzy, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" @@ -3726,8 +3937,8 @@ msgstr "" "video_out_xshm: %s: nomumante bildon\n" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xcbshm.c:166 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:159 +#, fuzzy, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" @@ -3737,8 +3948,8 @@ msgstr "" "bildon \n" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xcbshm.c:177 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:170 +#, fuzzy, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" @@ -3746,7 +3957,7 @@ msgstr "" "video_out_xshm: eraro de x11 dum kreado de XImage en opuza memoro\n" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xcbshm.c:1100 src/video_out/video_out_xshm.c:1157 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3762,23 +3973,23 @@ msgstr "" "oni rekomendas profundecon je 16 bpp!\n" "\n" -#: src/video_out/video_out_xcbshm.c:1113 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1114 +#, fuzzy, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: MIT-etendilo por opuza memoro neĉeestas en ekranbloko.\n" -#: src/video_out/video_out_xcbshm.c:1212 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1213 +#, fuzzy, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: videomoduso ne estis rekonita, mi bedaÅras :-(\n" -#: src/video_out/video_out_xcbshm.c:1242 src/video_out/video_out_xshm.c:1303 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "videoeliga kromaĵo de xine uzas MIT-etendilon por opuza memoro" -#: src/video_out/video_out_xcbxv.c:272 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:270 +#, fuzzy, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -3786,7 +3997,7 @@ msgstr "" "video_out_xv: XvShmCreateImage revenigis nulan grandon\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xcbxv.c:281 +#: src/video_out/video_out_xcbxv.c:279 #, fuzzy, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" @@ -3795,8 +4006,8 @@ msgstr "" "video_out_xv: eraro de opuza memoro en shmget: %s\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xcbxv.c:300 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:298 +#, fuzzy, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -3804,13 +4015,24 @@ msgstr "" "video_out_xv: eraro de x11 dum kreado de XImage en opuza memoro\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xcbxv.c:1291 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1354 +#, fuzzy, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xv: Xv-etendilo neĉeestas.\n" -#: src/video_out/video_out_xcbxv.c:1333 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, fuzzy, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -3821,7 +4043,7 @@ msgstr "" "pordon.\n" " Åœajnas ke la zorgilo de la grafika hardvaro ne subtenas Xv!\n" -#: src/video_out/video_out_xcbxv.c:1341 +#: src/video_out/video_out_xcbxv.c:1413 #, fuzzy, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " @@ -3830,64 +4052,35 @@ msgstr "" "video_out_xxmc: uzante Xv-pordon %ld el adaptilo %s por konverto de hardvara " "kolorspaco kaj skalado.\n" -#: src/video_out/video_out_xcbxv.c:1448 src/video_out/video_out_xv.c:1462 -#: src/video_out/video_out_xvmc.c:1455 src/video_out/video_out_xxmc.c:2444 -msgid "autopaint colour key" -msgstr "memkoloriÄanta kolorÅlosilo" - -#: src/video_out/video_out_xcbxv.c:1449 src/video_out/video_out_xv.c:1463 -#: src/video_out/video_out_xvmc.c:1456 src/video_out/video_out_xxmc.c:2445 -msgid "Make Xv autopaint its colour key." -msgstr "Igu XV-on memkoloriÄanta laÅ kolorÅlosilo" - -#: src/video_out/video_out_xcbxv.c:1456 src/video_out/video_out_xv.c:1470 -#: src/video_out/video_out_xxmc.c:2452 -msgid "bilinear scaling mode" -msgstr "bilineara moduso de skalo" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "" -#: src/video_out/video_out_xcbxv.c:1457 src/video_out/video_out_xv.c:1471 -#: src/video_out/video_out_xxmc.c:2453 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1509 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1579 +#, fuzzy, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: tiu ĉi adaptilo subtenas formaton yv12.\n" -#: src/video_out/video_out_xcbxv.c:1514 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1584 +#, fuzzy, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: tiu ĉi adaptilo subtenas formaton yuy2.\n" -#: src/video_out/video_out_xcbxv.c:1522 src/video_out/video_out_xv.c:1547 -#: src/video_out/video_out_xxmc.c:2537 -msgid "pitch alignment workaround" -msgstr "lanĉu lavoradon por enliinigo" - -#: src/video_out/video_out_xcbxv.c:1523 src/video_out/video_out_xv.c:1548 -#: src/video_out/video_out_xxmc.c:2538 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1529 src/video_out/video_out_xv.c:1554 -#: src/video_out/video_out_xvmc.c:1524 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "metodo de malplektado (evitinda)" -#: src/video_out/video_out_xcbxv.c:1530 src/video_out/video_out_xv.c:1555 -#: src/video_out/video_out_xvmc.c:1525 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -3925,12 +4118,13 @@ msgid "" "with medium CPU usage." msgstr "" -#: src/video_out/video_out_xcbxv.c:1584 src/video_out/video_out_xv.c:1628 -#: src/video_out/video_out_xxmc.c:2618 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "videoeliga kromaĵo de xine uzas videan etendilon MIT X" -#: src/video_out/video_out_xshm.c:202 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -3938,7 +4132,7 @@ msgstr "" "video_out_xshm: eraro de opuza memoro kiam oni nomumas bildon\n" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:218 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -3947,7 +4141,8 @@ msgstr "" "video_out_xshm: %s: nomumante bildon\n" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:228 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -3956,7 +4151,8 @@ msgstr "" "bildon \n" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:245 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -3965,15 +4161,18 @@ msgstr "" "video_out_xshm: => ne uzante etendilon de MIT Shared Memory.\n" #: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: MIT-etendilo por opuza memoro neĉeestas en ekranbloko.\n" #: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: videomoduso ne estis rekonita, mi bedaÅras :-(\n" -#: src/video_out/video_out_xv.c:296 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -3981,7 +4180,8 @@ msgstr "" "video_out_xv: XvShmCreateImage malsukcesis\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:306 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -3989,7 +4189,7 @@ msgstr "" "video_out_xv: XvShmCreateImage revenigis nulan grandon\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:314 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -3998,7 +4198,8 @@ msgstr "" "video_out_xv: eraro de opuza memoro en shmget: %s\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:346 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4006,11 +4207,18 @@ msgstr "" "video_out_xv: eraro de x11 dum kreado de XImage en opuza memoro\n" "video_out_xv: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:1299 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: Xv-etendilo neĉeestas.\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4020,7 +4228,7 @@ msgstr "" "pordon.\n" " Åœajnas ke la zorgilo de la grafika hardvaro ne subtenas Xv!\n" -#: src/video_out/video_out_xv.c:1345 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " @@ -4029,23 +4237,27 @@ msgstr "" "video_out_xxmc: uzante Xv-pordon %ld el adaptilo %s por konverto de hardvara " "kolorspaco kaj skalado.\n" -#: src/video_out/video_out_xv.c:1520 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: tiu ĉi adaptilo subtenas formaton yv12.\n" -#: src/video_out/video_out_xv.c:1525 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: tiu ĉi adaptilo subtenas formaton yuy2.\n" -#: src/video_out/video_out_xvmc.c:1593 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "videoeliga kromaĵo uzas videan etendilon de XvMC X" -#: src/video_out/video_out_xvmc.c:1639 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: etendilo de XvMC neĉeestas.\n" -#: src/video_out/video_out_xvmc.c:1737 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4053,7 +4265,7 @@ msgstr "" "video_out_xvmc: la Xv-etendilo ĉeestas sed estas neeble trovi uzeblan yuv12 " "pordon.\n" -#: src/video_out/video_out_xvmc.c:1746 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" @@ -4062,24 +4274,28 @@ msgstr "" "video_out_xvmc: uzante Xv-pordon %ld el adaptilo %s\n" " por hardvara konverto de kolorspaco kaj skalado\n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " idct kaj kompensado por akcelo de movo \n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " nur kompensado por akcelo de movo\n" -#: src/video_out/video_out_xvmc.c:1755 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " neniu XvMC-subteno \n" -#: src/video_out/video_out_xvmc.c:1756 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " Kun Surmeto = %d; NesignitaIntra = %d.\n" -#: src/video_out/video_out_xxmc.c:650 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4087,7 +4303,8 @@ msgstr "" "video_out_xxmc: XvShmCreateImage malsukcesis\n" "video_out_xxmc: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4095,7 +4312,7 @@ msgstr "" "video_out_xxmc: XvShmCreateImage revenigis nulan grandon\n" "video_out_xxmc: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:668 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4104,7 +4321,8 @@ msgstr "" "video_out_xxmc: eraro de opuza memoro en shmget: %s\n" "video_out_xxmc: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:700 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4112,11 +4330,13 @@ msgstr "" "video_out_xxmc: eraro de x11dum kreado de opuza memoro por XImage\n" "video_out_xxmc: => ne uzante etendilon de MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:2287 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xxmc: etendilo de Xv neĉeestas.\n" -#: src/video_out/video_out_xxmc.c:2324 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4126,7 +4346,7 @@ msgstr "" "pordon.\n" " Åœajnas ke la zorgilo de la grafika hardvaro ne subtenas Xv!\n" -#: src/video_out/video_out_xxmc.c:2333 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " @@ -4135,41 +4355,43 @@ msgstr "" "video_out_xxmc: uzante Xv-pordon %ld el adaptilo %s por konverto de hardvara " "kolorspaco kaj skalado.\n" -#: src/video_out/video_out_xxmc.c:2509 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xxmc: tiu ĉi adaptilo subtenas formaton yv12.\n" -#: src/video_out/video_out_xxmc.c:2514 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xxmc: tiu ĉi adaptilo subtenas formaton yuy2.\n" -#: src/video_out/video_out_xxmc.c:2543 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "Igu XvMc disponiganta de pluraj filemroj por la plej bona brufrado" -#: src/video_out/video_out_xxmc.c:2544 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2550 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "Konservo de Unichrome CPU" -#: src/video_out/video_out_xxmc.c:2551 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2557 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "Koretku cimajn colorojn de sub-bildoj por NVIDIA-XvMC" -#: src/video_out/video_out_xxmc.c:2558 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" @@ -4178,45 +4400,134 @@ msgstr "" "koloron\n" "kaj inverse. Tiu ĉi opcio havigas laboradon.\n" -#: src/video_out/video_out_xxmc.c:2563 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "Uzu metodon nomitan bob kiel metodo de akcelita malplektado." -#: src/video_out/video_out_xxmc.c:2564 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/x11osd.c:276 src/video_out/xcbosd.c:270 +#: src/video_out/video_out_xxmc.c:2709 +msgid "Don't use bob deinterlacing for progressive frames." +msgstr "" + +#: src/video_out/video_out_xxmc.c:2710 +msgid "" +"Progressive frames don't need deinterlacing, so disabling it on\n" +"demand should result in a better picture.\n" +msgstr "" + +#: src/video_out/video_out_xxmc.c:2716 +msgid "Don't use bob deinterlacing while a scaled OSD is active." +msgstr "" + +#: src/video_out/video_out_xxmc.c:2717 +msgid "" +"Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" +"on demand should result in a better OSD picture.\n" +msgstr "" + +#: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" "x11osd: XShape-etendilo ne estas disponebla. do neskalita surmeto estas " "malebligita.\n" -#: src/video_out/x11osd.c:289 src/video_out/xcbosd.c:283 +#: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" "x11osd: eraro dum kreado de fenestro, do neskalita surmeto estas " "malebligita.\n" -#: src/video_out/x11osd.c:297 src/video_out/x11osd.c:338 -#: src/video_out/xcbosd.c:293 +#: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 +#: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" "x11osd: eraro dum kreado de bildermapo, do neskalita surmeto estas " "malebligita.\n" -#: src/video_out/x11osd.c:348 src/video_out/xcbosd.c:332 +#: src/video_out/x11osd.c:346 src/video_out/xcbosd.c:330 #, c-format msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: neskalita surmeto estas kreita (%s moduso).\n" -#: src/xine-engine/alphablend.c:2123 +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "memkoloriÄanta kolorÅlosilo" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "Igu XV-on memkoloriÄanta laÅ kolorÅlosilo" + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "bilineara moduso de skalo" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +#, fuzzy +msgid "Xv port number" +msgstr "nevalida numero de ero" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "lanĉu lavoradon por enliinigo" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +#, fuzzy +msgid "bicubic filtering" +msgstr "filtrilo kontraÅ tremo" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + +#: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "malebligu precizan alfa-miksadon de surmetoj" -#: src/xine-engine/alphablend.c:2124 +#: src/xine-engine/alphablend.c:2147 msgid "" "If you experience a performance impact when an On Screen Display or other " "overlays like DVD subtitles are active, then you might want to enable this " @@ -4225,56 +4536,61 @@ msgid "" "but the CPU usage will be decreased as well." msgstr "" -#: src/xine-engine/audio_decoder.c:366 +#: src/xine-engine/audio_decoder.c:365 #, c-format msgid "audio_decoder: no plugin available to handle '%s'\n" msgstr "audio_decoder: neniu disponebla kromaĵo por administi '%s'\n" -#: src/xine-engine/audio_decoder.c:383 +#: src/xine-engine/audio_decoder.c:382 #, c-format msgid "audio_decoder: error, unknown buffer type: %08x\n" msgstr "audio_decoder: eraro, nekonata speco de bufro: %08x\n" -#: src/xine-engine/audio_decoder.c:485 +#: src/xine-engine/audio_decoder.c:484 msgid "number of audio buffers" msgstr "nombro da bufroj de aÅdo" -#: src/xine-engine/audio_decoder.c:486 +#: src/xine-engine/audio_decoder.c:485 msgid "" "The number of audio buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1078 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" "audio_out: kalkulo de malfruo estas malebla kun nedisponebla aÅdaparato\n" -#: src/xine-engine/audio_out.c:1220 -msgid "write to sound card failed. Was a USB device unplugged ?\n" +#: src/xine-engine/audio_out.c:1249 +#, fuzzy, c-format +msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "skribo en sonkarto malsukcesis. Ĉu estas la USB-aparato nekonektita?\n" -#: src/xine-engine/audio_out.c:1373 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "" "moduso de 8 bitoj ne estas subtenita de zorgiloj, konvertante en moduso de " "16 bitoj.\n" -#: src/xine-engine/audio_out.c:1381 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "unufonio ne estas subtenita de zorgiloj, konvertante en stereofonio.\n" -#: src/xine-engine/audio_out.c:1387 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "stereofonio ne estas subtenita de zorgiloj, konvertante en unufonio.\n" -#: src/xine-engine/audio_out.c:2041 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "metodo de sinkronigo por aÅdo kaj video" -#: src/xine-engine/audio_out.c:2042 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4297,11 +4613,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2070 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "ebligu re-sampladon" -#: src/xine-engine/audio_out.c:2071 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4309,33 +4625,33 @@ msgid "" "automatically when necessary." msgstr "" -#: src/xine-engine/audio_out.c:2078 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "re-sampligu ĉiam per tiu ĉi kvanto (0 por malebligi)" -#: src/xine-engine/audio_out.c:2079 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2088 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "deÅovo por diÄita rekta transiro" -#: src/xine-engine/audio_out.c:2089 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2098 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "ludu aÅdon ankaÅ se Äi estas rapida aÅ malrapida" -#: src/xine-engine/audio_out.c:2099 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4343,132 +4659,135 @@ msgid "" "audio post plugin instead." msgstr "" -#: src/xine-engine/audio_out.c:2170 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "starta laÅteco" -#: src/xine-engine/audio_out.c:2171 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "Äœenerala laÅteco kiu estos uzata dum preparado de xine." -#: src/xine-engine/audio_out.c:2174 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "restarigu nivelon de laÅteco dum preparado" -#: src/xine-engine/audio_out.c:2175 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "Se Äi estas malebligita, xine ne povas ÅanÄi agordojn de miksilo dum " "preparado." -#: src/xine-engine/audio_out.c:2205 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "audio_out: pardonu, tio ne devus okazi. bonvolu restartigi xine.\n" -#: src/xine-engine/buffer.c:67 +#: src/xine-engine/buffer.c:64 #, c-format msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:925 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" "La nuna dosiero de agordoj estas modifita far de pli nova versio de xine." -#: src/xine-engine/configfile.c:1030 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "configfile: WARNING: reservado de configfile en %s malsukcesis\n" -#: src/xine-engine/configfile.c:1031 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: ATENTU: via agordaĵo ne estos konservita\n" -#: src/xine-engine/configfile.c:1130 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: ATENTU: skribo de agordaĵo en %s malsukcesis\n" -#: src/xine-engine/configfile.c:1131 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" "configfile: ATENTU: formovovo de probable difektita dosiero de agordoj %s\n" -#: src/xine-engine/configfile.c:1132 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: ATENTU: kontrolu restaÅrdosieron %s\n" -#: src/xine-engine/configfile.c:1267 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: ero '%s' ne devas esti modifita el MRL\n" -#: src/xine-engine/info_helper.c:230 +#: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "info_helper: estas neeble trovi nuna loka tiparo\n" -#: src/xine-engine/info_helper.c:244 +#: src/xine-engine/info_helper.c:242 #, c-format msgid "" "info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n" msgstr "" "info_helper: nesubtenita konvertado %s -> UTF-8, neniu transigo plenumiÄis\n" -#: src/xine-engine/input_cache.c:167 +#: src/xine-engine/input_cache.c:170 #, c-format msgid ": open() function should never be called\n" msgstr ": la funkcio pen() neniam estas alvokenda\n" -#: src/xine-engine/input_cache.c:349 +#: src/xine-engine/input_cache.c:353 #, c-format msgid ": input plugin not defined!\n" msgstr ": eniga kromaĵo ne estas difinita!\n" -#: src/xine-engine/input_rip.c:140 src/xine-engine/input_rip.c:260 +#: src/xine-engine/input_rip.c:138 src/xine-engine/input_rip.c:258 #, c-format msgid "input_rip: reading of saved data failed: %s\n" msgstr "input_rip: lego de konservitaj datumoj malsukcesis: %s\n" -#: src/xine-engine/input_rip.c:155 +#: src/xine-engine/input_rip.c:153 #, c-format msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: lego far de eniga kromaĵo malsukcesis\n" -#: src/xine-engine/input_rip.c:163 src/xine-engine/input_rip.c:292 -#: src/xine-engine/input_rip.c:658 +#: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: eraro dum skribo en dosiero laÅ %<PRIdMAX> bajtoj: %s\n" -#: src/xine-engine/input_rip.c:184 +#: src/xine-engine/input_rip.c:182 #, c-format msgid "input_rip: open() function should never be called\n" msgstr "input_rip: la funkcio open() estas nepre alvokenda\n" -#: src/xine-engine/input_rip.c:315 src/xine-engine/input_rip.c:420 +#: src/xine-engine/input_rip.c:313 src/xine-engine/input_rip.c:418 #, c-format msgid "input_rip: seeking failed\n" msgstr "input_rip: enpoziciigado malsukcesis\n" -#: src/xine-engine/input_rip.c:372 src/xine-engine/input_rip.c:390 +#: src/xine-engine/input_rip.c:370 src/xine-engine/input_rip.c:388 #, c-format msgid "input_rip: seeking failed: %s\n" msgstr "input_rip: enpoziciigado malsukcesis: %s\n" -#: src/xine-engine/input_rip.c:398 +#: src/xine-engine/input_rip.c:396 #, c-format msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %<PRIdMAX> falitaj bajtoj\n" -#: src/xine-engine/input_rip.c:563 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: eniga kromaĵo ne estas difinita!\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " @@ -4477,7 +4796,7 @@ msgstr "" "input_rip: celdosierujo ne estas difinita, bonvolu kompletigi la opcion " "'media.capture.save_dir'\n" -#: src/xine-engine/input_rip.c:571 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -4485,24 +4804,24 @@ msgstr "" "La funkcio por konservi datumstrion estas malebligita Äis ne estos " "kompletigita media.capture.save_dir fakon en la agordoj." -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: eltirado/kaÅmemorigado de ĉi fonto ne estas permesita!\n" -#: src/xine-engine/input_rip.c:580 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" msgstr "" "xine ne estas ebligita konservi de tiu ĉi fonto. (ĉu Äi estas kopirajtigita?)" -#: src/xine-engine/input_rip.c:586 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: dosiernomo ne estas havigita!\n" -#: src/xine-engine/input_rip.c:628 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: eraro dum malfermado de dosiero %s: %s\n" @@ -4536,12 +4855,12 @@ msgstr "io_helper: Netrovita dosiero\n" msgid "io_helper: Connection Refused\n" msgstr "io_helper: Rifuzita konektado\n" -#: src/xine-engine/load_plugins.c:212 +#: src/xine-engine/load_plugins.c:208 #, c-format msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "map_decoder_list: neniu spaco por malkodilo, do Äi estis forlasita.\n" -#: src/xine-engine/load_plugins.c:327 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" @@ -4554,14 +4873,14 @@ msgstr "" msgid "priority for %s decoder" msgstr "antaÅeco por %s malkodilo" -#: src/xine-engine/load_plugins.c:395 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:423 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " @@ -4570,7 +4889,7 @@ msgstr "" "load_plugins: malmuksor-kromaĵo %s ne havigi antaÅecon, xine-lib uzos " "defaÅltan antaÅeco.\n" -#: src/xine-engine/load_plugins.c:440 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " @@ -4579,44 +4898,44 @@ msgstr "" "load_plugins: eniga kromaĵo %s ne havigi antaÅecon, xine-lib uzos defaÅltan " "antaÅeco.\n" -#: src/xine-engine/load_plugins.c:496 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: kromaĵo %s estis trovita\n" -#: src/xine-engine/load_plugins.c:499 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: statika kromaĵo estis trovita\n" -#: src/xine-engine/load_plugins.c:506 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: oni atingas limon de kromaĵo, estas neeble Åargi %s\n" -#: src/xine-engine/load_plugins.c:509 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" "load_plugins: oni atingas limon de kromaĵo, estas neeble Åargi statikan " "kromaĵon\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: nekonata kromaĵospeco %d en %s\n" -#: src/xine-engine/load_plugins.c:530 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: nekonata statika kromaĵospeco %d\n" -#: src/xine-engine/load_plugins.c:590 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: mi estas nekapabla trovi %s\n" -#: src/xine-engine/load_plugins.c:631 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4625,7 +4944,7 @@ msgstr "" "load_plugins: estas neeble malfermi bibliotekon de kromaĵo %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:646 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -4634,12 +4953,12 @@ msgstr "" "load_plugins: estas neeble akiri informojn pri kromaĵo el %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:664 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: preterlasante nelegeblan kromaĵodosierujon %s.\n" -#: src/xine-engine/load_plugins.c:713 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -4648,34 +4967,35 @@ msgstr "" "load_plugins: estas neeble malfermi bibliotekon de kromaĵo %s (dua fazo):\n" "%s\n" -#: src/xine-engine/load_plugins.c:739 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: Ve! %s ne entenas informojn pri kromaĵo.\n" -#: src/xine-engine/load_plugins.c:1305 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: nekonata strategio de rekono de enhavo %d\n" -#: src/xine-engine/load_plugins.c:1415 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: uzante malmuksoron '%s'\n" -#: src/xine-engine/load_plugins.c:1726 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: Åargo de aÅdeliga kromaĵo malsukcesis <%s>\n" -#: src/xine-engine/load_plugins.c:1729 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" msgstr "" "load_plugins: mem-rekonado de aÅdeligo ne trovis uzelban aÅdozorgilon.\n" -#: src/xine-engine/load_plugins.c:2033 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4684,52 +5004,54 @@ msgstr "" "load_plugins: estas neeble malÅargi bibliotekon de kromaĵo %s:\n" "%s\n" -#: src/xine-engine/osd.c:745 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "tiparo '%s-%d' jam estas Åargita, strange.\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "Åargo de tiparo '%s' malsukcesis (%d < %d)\n" -#: src/xine-engine/osd.c:767 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "erara versio de tiparo '%s'. atendita %d trovita %d.\n" -#: src/xine-engine/osd.c:834 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: estas neeble prepari ft2 bibliotekon\n" -#: src/xine-engine/osd.c:857 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "osd: eraro dum kongruado de tiparo %s kun FontConfig" -#: src/xine-engine/osd.c:871 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: eraro dum Åargado de tiparo %s kun FontConfig" -#: src/xine-engine/osd.c:874 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "osd: eraro dum serĉado de tiparo %s kun FontConfig" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: eraro dum Åargado de tiparo %s kun ft2\n" -#: src/xine-engine/osd.c:905 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" "osd: eraro dum la argordado de tipargrando (ĉu Äi estas nereadaptebla " "tiparo?)\n" -#: src/xine-engine/osd.c:1021 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -4737,75 +5059,80 @@ msgid "" msgstr "" "osd: nekonata sinsekvo startas je bajto 0x%02X en kodo\"%s\", do miforlasas\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: estas neeble trovi nunan lokan tiparon\n" -#: src/xine-engine/osd.c:1087 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: nesubtenita konvertado %s -> %s, neniu konverto plenumiÄis\n" -#: src/xine-engine/osd.c:1142 src/xine-engine/osd.c:1310 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: tiparo ne estas difinita\n" -#: src/xine-engine/osd.c:1181 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: eraro dum Åargado de glyph\n" -#: src/xine-engine/osd.c:1187 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: eraro de bildigo de glyph\n" -#: src/xine-engine/osd.c:1347 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: eraro dum Åargado de glyph %i\n" -#: src/xine-engine/osd.c:1354 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: eraro de bildigo\n" -#: src/xine-engine/osd.c:1611 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "uzenda paletro (malfono-randoj-fono) por surskribaĵoj kaj OSD" -#: src/xine-engine/osd.c:1612 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:380 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: neniu disponebla kromaĵo por administi '%s'\n" -#: src/xine-engine/video_decoder.c:459 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: eraro, nekonata speco de bufro: %08x\n" -#: src/xine-engine/video_decoder.c:495 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "nombro da videobufroj" -#: src/xine-engine/video_decoder.c:496 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/video_out.c:642 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "" "%d filmeroj liveritaj, %d filmeroj forlasitaj, %d filmeroj formetitaj\n" -#: src/xine-engine/video_out.c:815 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -4814,45 +5141,46 @@ msgstr "" "video_out: bildo kun pts %<PRId64> estas rifuzita ĉar Äi estas tro malnova " "(diff : %<PRId64>).\n" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "defaÅlta nombro da filmeroj" -#: src/xine-engine/video_out.c:1795 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "tolerenda procento je forlasitaj filmeroj" -#: src/xine-engine/video_out.c:1835 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "tolerenda procento je formetitaj filmeroj" -#: src/xine-engine/video_out.c:1841 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1875 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "video_out: pardonu, tio ne devus okazi. bonvolu restartigi xine.\n" -#: src/xine-engine/vo_scale.c:389 +#: src/xine-engine/vo_scale.c:387 msgid "horizontal image position in the output window" msgstr "horizontala lokiÄo de bildo en eligfenestro" -#: src/xine-engine/vo_scale.c:390 +#: src/xine-engine/vo_scale.c:388 msgid "" "If the video window's horizontal size is bigger than the actual image to " "show, you can adjust the position where the image will be placed.\n" @@ -4860,11 +5188,11 @@ msgid "" "\", while 0 means \"at the very left\" and 100 \"at the very right\"." msgstr "" -#: src/xine-engine/vo_scale.c:397 +#: src/xine-engine/vo_scale.c:395 msgid "vertical image position in the output window" msgstr "vertikala lokiÄo de bildo en eligfenestro" -#: src/xine-engine/vo_scale.c:398 +#: src/xine-engine/vo_scale.c:396 msgid "" "If the video window's vertical size is bigger than the actual image to show, " "you can adjust the position where the image will be placed.\n" @@ -4872,11 +5200,11 @@ msgid "" "\", while 0 means \"at the top\" and 100 \"at the bottom\"." msgstr "" -#: src/xine-engine/vo_scale.c:405 +#: src/xine-engine/vo_scale.c:403 msgid "disable all video scaling" msgstr "malebligu readapton de video" -#: src/xine-engine/vo_scale.c:406 +#: src/xine-engine/vo_scale.c:404 msgid "" "If you want the video image to be always shown at its original resolution, " "you can disable all image scaling here.\n" @@ -4887,128 +5215,146 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:704 src/xine-engine/xine.c:811 -#: src/xine-engine/xine.c:850 src/xine-engine/xine.c:886 -#: src/xine-engine/xine.c:898 src/xine-engine/xine.c:911 -#: src/xine-engine/xine.c:924 src/xine-engine/xine.c:937 -#: src/xine-engine/xine.c:963 src/xine-engine/xine.c:988 -#: src/xine-engine/xine.c:1023 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: eraro dum sintaksa analizo de mrl\n" -#: src/xine-engine/xine.c:740 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: trovita enigkromaĵo : %s\n" -#: src/xine-engine/xine.c:758 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: eniga kromaĵo ne povas malfermi MRL [%s]\n" -#: src/xine-engine/xine.c:774 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: estas neeble trovi enigan kromaĵon por MRL [%s]\n" -#: src/xine-engine/xine.c:800 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: specifita malmuksoro %s malsukcesis starti\n" -#: src/xine-engine/xine.c:836 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: startigo de eniga kromaĵo por eltiri\n" -#: src/xine-engine/xine.c:843 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: eraro dum malfermado de eniga kromaĵo por eltiri\n" -#: src/xine-engine/xine.c:874 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: lasta testita malmuksoro %s malsukcesis starti\n" -#: src/xine-engine/xine.c:903 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "ignorante videon\n" -#: src/xine-engine/xine.c:916 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "ignorante aÅdon\n" -#: src/xine-engine/xine.c:929 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "ignorante sub-bildojn\n" -#: src/xine-engine/xine.c:942 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "eniga kromaĵo por kaÅmemoro estas malebligita\n" -#: src/xine-engine/xine.c:1013 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "mrl-surskribaĵo malfermita '%s'\n" -#: src/xine-engine/xine.c:1017 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: eraro dum malfermado de mrl-surskribaĵo\n" -#: src/xine-engine/xine.c:1049 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: eraro dum sintaksa analizo de MRL\n" -#: src/xine-engine/xine.c:1056 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "xine: ÅanÄo de opcio '%s' el MRL ne estas permesita\n" -#: src/xine-engine/xine.c:1076 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: estas neeble trovi malmuksilo por >%s<\n" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: estas neeble trovi malmuksilo por >%s<\n" -#: src/xine-engine/xine.c:1092 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: malmuksora kromaĵo estis trovita: %s\n" -#: src/xine-engine/xine.c:1112 +#: src/xine-engine/xine.c:1252 +#, fuzzy, c-format +msgid "xine: demuxer is already done. that was fast!\n" +msgstr "xine: malmuksoro malsukcesis starti\n" + +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: malmuksoro malsukcesis starti\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: neinu disponebla malmuksado\n" -#: src/xine-engine/xine.c:1247 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: malmuksilo malsukcesis starti\n" -#: src/xine-engine/xine.c:1523 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" "xine: La specifita savdosierujo \"%s\" povus esti danÄero por secureco.\n" -#: src/xine-engine/xine.c:1528 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "La specifita savdosierujo povus esti danÄero por secureco." -#: src/xine-engine/xine.c:1554 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: \"locale\" ne estas subtenita de C-biblioteko\n" -#: src/xine-engine/xine.c:1563 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "strategio por rekoni plurmedian formaton" -#: src/xine-engine/xine.c:1564 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5026,11 +5372,11 @@ msgid "" "Detect by file name extension only.\n" msgstr "" -#: src/xine-engine/xine.c:1582 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "dosierujo por konservi datumstriojn" -#: src/xine-engine/xine.c:1583 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5040,11 +5386,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1594 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "ebligu implicitajn ÅanÄojn en la agordaĵo (ekz. far de MRL)" -#: src/xine-engine/xine.c:1595 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5054,78 +5400,78 @@ msgid "" "configuration, you might end with a totally messed up xine." msgstr "" -#: src/xine-engine/xine.c:1609 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "Tempofino por legado de ret-datumstrioj (en sekundoj)" -#: src/xine-engine/xine.c:1610 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" -#: src/xine-engine/xine.c:1962 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "mesaÄoj" -#: src/xine-engine/xine.c:1963 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "kromaĵo" -#: src/xine-engine/xine.c:1964 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "bildigo" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "Atentu:" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "Nekonata gastiga komputilo:" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "Nekonata aparato:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "Neatingebla reto" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "Rifuzita konekto:" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "Netrovita dosiero:" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "Eraro de lego el:" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "Eraro dum Åargo de biblioteko:" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "Ĉifrita datumstio estis rekonita" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "MesaÄo de sekureco:" -#: src/xine-engine/xine_interface.c:968 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "AÅdaparato estas nedisponebla" -#: src/xine-engine/xine_interface.c:969 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "Eraro de permeso" -#: src/xine-engine/xine_interface.c:970 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "Dosiero estas vakua:" @@ -5141,5 +5487,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Testo de rapideco por medoto de memorkopio (pli eta estas pli bona):\n" @@ -1,18 +1,19 @@ -# translation of xine-lib-1.1.4.po to Spanish -# Spanish .po file for xine-lib. -# Copyright (C) 2002, 2006, 2007 Free Software Foundation, Inc. +# translation of xine-lib.hg.po to Spanish +# Spanish es.po file for xine-lib. +# Copyright (C) YEAR Copyright (C) 2000-2006 the xine project +# Copyright (C) 2002, 2006, 2007, 2008 Free Software Foundation, Inc. # # Juan Manuel GarcÃa Molina <juanma_gm@wanadoo.es>, 2002. -# Carlos E. Robinson M. <carloser@users.sourceforge.net>, 2006, 2007. +# Carlos E. R. M. <carloser@users.sourceforge.net>, 2006, 2007, 2008. # Cer: <<== marcas de revision. msgid "" msgstr "" -"Project-Id-Version: xine-lib-1.1.4\n" +"Project-Id-Version: xine-lib.hg\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" -"PO-Revision-Date: 2007-10-28 00:11+0200\n" -"Last-Translator: Carlos E. Robinson <carloser@users.sourceforge.net>\n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" +"PO-Revision-Date: 2008-04-02 01:05+0200\n" +"Last-Translator: Carlos E. R. M. <carloser@users.sourceforge.net>\n" +"Language-Team: Spanish <none>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -58,6 +59,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() de %s falló: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "audio_alsa_out: >>> comprobar si otro programa ya usa PCM <<<\n" @@ -175,11 +177,13 @@ msgstr "snd_pcm_open() falló:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Comprobar si otro programa está ya usando PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "disposición de altavoces" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -244,78 +248,78 @@ msgstr "" "su tarjeta de sonido." #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : los modos soportados son " - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8bit " +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : los modos soportados son" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16bit" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24bit" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32bit" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "estéreo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-canales " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " estéreo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4-canales no activado en la configuración de xine) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-canales" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1-canales " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4-canales no activado en la configuración de xine)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-canales no activado en la configuración de xine) " +msgid " 4.1-channel" +msgstr " 4.1-canales" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5-canales " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-canales no activado en la configuración de xine)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5-canales no activado en la configuración de xine) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5-canales" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1-canales " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5-canales no activado en la configuración de xine)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-canales no activado en la configuración de xine) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-canales" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "travesÃa a/52 y DTS\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-canales no activado en la configuración de xine)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(travesÃa a/52 and DTS no activada en la configuración de xine)\n" +msgid " a/52 and DTS pass-through" +msgstr " travesÃa a/52 y DTS" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (travesÃa a/52 and DTS no activada en la configuración de xine)" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "dispositivo mezclador alsa" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." @@ -323,7 +327,7 @@ msgstr "" "xine usará este dispositivo mezclador alsa para cambiar el volumen.\n" "Vea la documentación de alsa para información de dispositivos alsa." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" "complemento de xine de salida de audio usando dispositvos/drivers " @@ -337,205 +341,187 @@ msgstr "complemento de xine de salida de audio usando artsd de kde" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "complemento de xine de salida de audio para Coreaudio/Mac OS X" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "Error" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "éxito" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "acceso denegado" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "el recurso ya está siendo utilizado" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "el objecto ya fué inicializado" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "el formato de onda especificado no está soportado" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "el búfer en memoria se ha perdido y debe ser restaurado" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "el control del búfer pedido no está disponible" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "error indeterminado dentro del subsistema DirectSound" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "dispositivo fÃsico DirectSound no disponible" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "función no válida para el estado actual del object" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "se ha pasado un parámetro inválido" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "el objeto no soporta agregación" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "no hay driver de sonido disponible para su uso" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "interfase COM solicitada no disponible" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "otra aplicación tiene un nivel de prioridad más alto" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "memoria insuficiente" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "nivel de prioridad bajo para ésta función" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "DirectSound no fué inicializado" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "función no soportada" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "error desconocido" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "Incapaz de crear el objeto de sonido directo." -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "No pude poner el nivel cooperativo del sonido directo." -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "Incapaz de crear búfer secundario de sonido directo" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "Incapaz de crear eventos posicionales de búfer." - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "Incapaz de conseguir interfase de notificación" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "Incapaz de poner posiciones de notificación" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "No pude tocar el búfer de sonido" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "No pude parar el búfer de sonido" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "No puedo conseguir la posición del búfer" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "No puedo poner la posición del búfer" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "No puedo poner el volumen de sonido" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": búfer perdido, intentando restaurar\n" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "No pude bloquear el búfer de sonido directo" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "No pude desbloquear el búfer de sonido directo" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "Incapaz de crear el búfer primario de sonido directo." -#: src/audio_out/audio_directx2_out.c:632 -#, c-format -msgid ": play cursor overran, flushing buffers\n" +#: src/audio_out/audio_directx2_out.c:596 +#, fuzzy, c-format +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr ": cursor de ejecución desbordado, vaciando búffers\n" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr ": retrasado en %ld msec\n" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": no puedo crear condición pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": no puedo crear mutex pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": no puedo crear búfer pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": no puedo destruir búfer: %s\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ": no puedo crear condición pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": no puedo destruir mutex pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr ": comando de control desconocido %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "segundo complemento de xine de salida de audio usando directx" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "" "segundo complemento de xine de salida de audio para win32 usando directx" @@ -546,6 +532,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: conectando al servidor ESD %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: conectando al servidor esd...\n" @@ -558,7 +545,7 @@ msgstr "audio_esd_out: no puedo conectar al servidor ESD %s: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "latencia de salida de audio esd (ajustar sincronismo a/v)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -595,7 +582,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "complemento de xine de salida de audio usando libaudio IRIX" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "nombre del dispositivo de audio OSS" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "" "complemento de xine de salida de audio para \"JACK Audio Connection Kit\"" @@ -624,11 +622,11 @@ msgstr "" "audio_oss_out: tasa de audio: %d solicitada, %d proporcionada por el " "dispositivo\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "nombre del dispositivo de audio OSS" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" @@ -639,11 +637,11 @@ msgstr "" "dispositivo.\n" "Seleccione \"auto\" si desea que xine auto detecte el parámetro correcto." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "número de dispositivo audio OSS, -1 para ninguno" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -659,20 +657,22 @@ msgstr "" "El rango de este valor es -1 o 0-15. Éste parámetro se ignora cuando el " "nombre del dispositivo audio OSS está puesto a \"auto\"." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "audio_oss_out: audio.device.oss_device_name = auto, sondeando devs\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: Sondeo automático de dispositivo audio falló\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: usando dispositivo >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -681,11 +681,11 @@ msgstr "" "audio_oss_out: falló al abrir el dispositivo de audio %s:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "método de sincronismo a/v a usar por OSS" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -745,7 +745,8 @@ msgstr "" "soporta ninguno de los ioctls de tiempo real y observa errores de " "sincronismo después de una reproducción larga" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -757,32 +758,40 @@ msgstr "" "sync, en su lugar\n" "audio_oss_out: ...puede haber problemas de sincronización audio/vÃdeo\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "Latencia de salida de audio OSS audio (ajuste sincronismo a/v)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: Sincronismo tiempo real driver de audio desactivado...\n" -"audio_oss_out: ...ensayando tamaño del búfer de salida: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d bytes\n" +"audio_oss_out: Sincronismo tiempo real driver de audio desactivado...\n" +"audio_oss_out: ...ensayando tamaño del búfer de salida: %d bytes\n" "audio_oss_out: ...puede haber problemas de sincronización audio/vÃdeo\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: los modos soportados son" + +#: src/audio_out/audio_oss_out.c:1009 +#, fuzzy +msgid " a/52 pass-through" +msgstr " travesÃa a/52" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (travesÃa a/52 no activada en la configuración de xine)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "número de mezclador audio OSS, -1 para ninguno" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -799,30 +808,30 @@ msgstr "" "El rango de este valor es -1 o 0-15. Este parámetro se ignora cuando el " "nombre del dispositivo audio OSS está puesto a \"auto\"." -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: función open() mezclador %s falló: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" "complemento de xine de salida de audio usando dispositivos/drivers " "compatibles OSS" # Cer: ¿pulseaudio? -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "dispositivo usado para audio a pulsos" # Cer: ¿pulseaudio? Estaba como "polypaudio" pero fuzzy. -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" "use 'server[:sink]' para definir el sumidero del dispositivo audio a pulsos." # Cer: ¿pulseaudio? -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" msgstr "" "complemento de xine de salida de audio usando servidor de sonido audio a " @@ -863,30 +872,227 @@ msgstr "" "complemento de xine de salida de audio usando dispositivos/drivers " "compatibles sun" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"ffmpeg_audio_dec: incrementando el tamaño de la memoria tampón a %d para " +"evitar el desbordamiento.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_audio_dec: no pude encontrar el decodificador ffmpeg para el tipo de " +"tampón 0x%X\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: intentando abrir códec nulo\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: no pude abrir el decodificador\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"dvaudio: incrementando el tamaño de la memoria tampón a %d para evitar el " +"desbordamiento.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: formato de cuadro no soportado, DR1 desactivado.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" +"ffmpeg_video_dec: dimensiones de cuadro no soportadas, DR1 desactivado.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_video_dec: no pude encontrar el decodificador ffmpeg para el tipo de " +"tampón 0x%X\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: no pude abrir el decodificador\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: renderizado directo activado\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"ffmpeg_video_dec: incrementando el tamaño de la memoria tampón a %d para " +"evitar el desbordamiento.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "calidad de postprocesado MPEG-4" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"Puede ajustar la cantidad de postprocesado aplicado a video MPEG-4.\n" +"Valores más altos pueden resultar en mejor calidad, pero necesitarán más " +"CPU. Valores más bajos resultarán en defectos de imagen como artefactos de " +"bloque. Para contenido de alta calidad, demasiado postprocesado puede de " +"hecho hacer la imagen peor emborronándola demasiado." + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "Conteo de hilos decodificando vÃdeo FFmpeg" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Puede ajustar el número de hilos decodificadores que pueda usar FFmpeg.\n" +"Valores más altos deben acelerar la decodificación, pero depende del códec " +"si se soporta procesado en paralelo. Una regla general es tener un hilo " +"decodificador por cada CPU lógica (tÃpicamente de 1 a 4). Un cambio hará " +"efecto cuando se reproduzca el siguiente flujo." + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "Saltarse filtro de bucle" + +# Cer "saltar" por"skip" suena raro. +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Puede controlar para que cuadros el filtro de bucle será saltado después de " +"decodificar.\n" +"Omitir el filtro de bucle acelerará la decodificación, pero puede llevarnos " +"a tener artefactos. El número de cuadros para los que se salta aumenta de " +"'none' a 'all' (“nada†a “todosâ€). El valor por omisión deja la decisión en " +"manos de la implementación.\n" +"Un cambio de este ajuste tendrá efecto a la reproducción de siguiente flujo." + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "Elegir velocidad en vez de conformidad con la especificación" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Usted puede querer permitir trampas de velocidad que violan las " +"especificaciones del códec.\n" +"Hacer trampas puede acelerar la decodificación pero también provocar " +"artefactos de decodificación.\n" +"Un cambio de este ajuste tendrá efecto a la reproducción de siguiente flujo." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "tasa de bits salida mpeg de libavcodec (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" +"La velocidad de salida (tasa de bits) que el codificador mpeg de libavcodec " +"deberÃa usar para el modo de codificado de DXR3. Valores más altos " +"aumentarán la calidad y el uso de CPU.\n" +"Este ajuste sólo se considera cuando el modo de calidad constante está " +"desactivado." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "modo de calidad constante" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" +"Cuando se activa, libavcodec usará un modo de calidad constante " +"dinámicamente comprimiendo las imágenes basado en su complejidad. Cuando se " +"desactiva, libavcodec usará el modo de tasa de bits constante." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "compresión mÃnima" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" +"La mÃnima compresión a aplicar a una imagen en el modo de calidad constante." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "cuantificador máximo" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" +"La máxima compresión a aplicar a una imagen en modo de calidad constante." + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: aviso: El flujo de bits (stream) id=%d está encriptado.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: aviso: El flujo de bits (stream) id=%d está encriptado.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Flujo de bits del medio revuelto/encriptado" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Restaurando Ãndice..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "demux_avi: bloque avi inválido \"%c%c%c%c\" en posición %<PRIdMAX>\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: el Ãndice del avi está roto\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -897,20 +1103,26 @@ msgstr "" msgid "invalid FILM chunk size\n" msgstr "tamaño de bloque FILM inválido\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "bloque FILM no reconocido\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "Versión FLV no soportada (%d).\n" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "no hay flujo de vÃdeo ni audio en este fichero.\n" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -926,7 +1138,8 @@ msgstr "iff-ilbm: compresión desconocida: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: Bloque no reconocido: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "demux_mpc: marco demasiado grande para el búfer" @@ -940,6 +1153,7 @@ msgstr "" "stream_id 0x%02x. Por favor, repórtelo a los desarrolladores de xine.\n" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -962,7 +1176,7 @@ msgstr "" "demux_mpeg_block: aviso: la cabecera PES indica que este flujo de bits puede " "estar encriptado (modo de encriptación %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -971,19 +1185,19 @@ msgstr "" "xine-lib:demux_mpeg_pes: Identificador de flujo de bits no reconocido 0x%" "02x. Por favor, repórtelo a los desarrolladores de xine.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" "demux_mpeg_pes: aviso: decodificado del flujo de bits PACK id=0x%x falló.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" "demux_mpeg_pes: aviso: 10 bits reservados de la cabecera PES no encontrados\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -992,7 +1206,7 @@ msgstr "" "demux_mpeg_pes: aviso: la cabecera PES indica que este flujo de bits puede " "estar encriptado (modo de encriptación %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -1008,17 +1222,18 @@ msgstr "" "ogg: pista de audio vorbis indicada pero cabecera de flujo de bits vorbis no " "encontrada.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: parámetros de cabecera malos\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: tipo de audio no soportado: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "demux_tta: la cuenta total de cuadros es demasiado alta\n" @@ -1043,7 +1258,7 @@ msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" "demux_wc3movie: bloque SHOT referenció una paleta inválida (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "" @@ -1067,6 +1282,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: Falló la apertura de dispositivo spu %s (%s)\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "botón pedido no disponible\n" @@ -1159,6 +1375,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Falló al abrir el dispositivo de vÃdeo %s (%s)\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: escribir al dispositivo se bloquearÃa. Vaciando\n" @@ -1174,6 +1391,7 @@ msgstr "" "dxr3_decode_video: AVISO: código de frecuencia de cuadro desconocido %d\n" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" @@ -1181,10 +1399,12 @@ msgstr "" "PAL a NTSC\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: falló al inicializar librte\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1193,10 +1413,12 @@ msgstr "" "16\n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: falló en conseguir el contexto de rte.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: no pudo crear el códec.\n" @@ -1224,6 +1446,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: no puedo empezar a codificar: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: No pude arrancar la librerÃa FAME\n" @@ -1330,19 +1553,23 @@ msgstr "" "asà que pueden fallar." #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" "video_out_dxr3: el codificador de MPEG libavcodec falló al iniciarse.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: el codificador de MPEG rte falló al iniciarse.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: el codificador de MPEG fame falló al iniciarse.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1360,6 +1587,7 @@ msgstr "" "un codificador.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1484,6 +1712,7 @@ msgstr "" "si observa lineas verdes encima y debajo de la superposición." #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "" "video_out_dxr3: por favor, ejecute autocal, superposición desactivada\n" @@ -1510,10 +1739,12 @@ msgstr "" "default: mantener la configuración de la tarjeta" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: falló el establecimiento del modo de video..\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" @@ -1522,36 +1753,37 @@ msgstr "" "mpeg en DXR3\n" "video_out_dxr3: Lea el README.dxr3 para más detalles.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: ERROR leyendo en fichero de inicialización de la " "superposición. ¡Ejecute autocal!\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: no se puede conectar a %s:%d\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: conectado con éxito al servidor cddb '%s:%d'.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: falló al conectar al servidor cddb '%s:%d' (%s).\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "audio CD digital (alias CDDA)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "dispositivo usado para audio CD" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." @@ -1559,11 +1791,11 @@ msgstr "" "El camino al dispositivo, normalmente un lector de de CD o DVD, que desea " "usar para reproducir CDs de audio." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "consultar la CDDB" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1577,11 +1809,11 @@ msgstr "" "información se obtiene de un servidor en Internet que podrÃa sacar un perfil " "de sus hábitos de escucha." -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "nombre del servidor CDDB" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1594,20 +1826,20 @@ msgstr "" "consultas con respuestas maliciosas. Asegúrese de poner un servidor del que " "se pueda fiar." -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "puerto del servidor CDDB" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" "El puerto del servidor usado para obtener la información de tÃtulo y pista." -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "directorio caché del CDDB" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1620,11 +1852,11 @@ msgstr "" "serán creados en este directorio. Asegúrese de poner un directorio dedicado " "que no se use para ninguna otra cosa que el cacheado del CDDB." -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "enlentecer la unidad de disco a este factor de velocidad" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1639,56 +1871,64 @@ msgstr "" "que el enlentecimiento no afectarÃa el rendimiento de la reproducción.\n" "Un valor de cero desactivará el enlentecimiento." -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_dvb: falló al abrir el fichero de canales'%s': %s\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "" "input_dvb: el fichero de canales dvb '%s' no es un fichero texto plano\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: falló tuner_set_channel\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "input_dvb: IGU de DVB %s\n" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: no puedo abrir dispositivo DVB\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "input_dvb: canal %d fuera de rango, poniendo a 0\n" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: buscando el canal %s\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" "input_dvb: no encontrada una coincidencia exacta para %s: probando " "coincidencias parciales\n" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: encontrado el canal correspondiente %s\n" # Cer: (temporal) "valores por defecto" no es la traducción exacta -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" "input_dvb: canal %s no encontrado en channels.conf, yendo a valores por " "defecto.\n" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" @@ -1696,11 +1936,13 @@ msgstr "" "input_dvb: especificación de canal inválida, usaremos el ultimo canal " "visualizado.\n" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "input_dvb: especificación de canal inválida, usaremos el canal 0.\n" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" @@ -1708,7 +1950,8 @@ msgstr "" "input_dvb: se especificó mrl dvbs pero el sintonizador no aparenta ser QPSK " "(DVB-S)\n" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" @@ -1716,7 +1959,8 @@ msgstr "" "input_dvb: se especificó mrl dvbt pero el sintonizador no aparenta ser OFDM " "(DVB-T)\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" @@ -1724,7 +1968,8 @@ msgstr "" "input_dvb: se especificó mrl dvbc pero el sintonizador no aparenta ser QAM " "(DVB-C)\n" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" @@ -1732,20 +1977,21 @@ msgstr "" "input_dvb: se especificó mrl dvba pero el sintonizador no aparenta ser ATSC " "(DVB-A)\n" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: no se puede abrir el dispositivo DVR '%s'\n" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_dvb: no se puede crear el hilo actualizador de EPG\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "usar corte de la zona central del DVB (zoom)" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." @@ -1753,15 +1999,15 @@ msgstr "" "Esto permitirá reproducción a pantalla completa de contenido en formato 4:3 " "transmitido en un cuadro 16:9." -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "complemento de entrada DVB (TV Digital)" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "Recordar el último canal DVB visto" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " @@ -1769,19 +2015,19 @@ msgstr "" "En autoejecución, xine recordará y cambiará al canal indicado en media.dvb." "last_channel. " -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "Último canal DVB visto" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "Si se activa xine recordará y cambiará a este canal. " -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "Número de segundos hasta que la sintonización temporice." -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." @@ -1789,35 +2035,55 @@ msgstr "" "Dejar como 0 significa probar indefinidamente. Mayor que cero significa " "esperar esos segundos hasta conseguir un ajuste. El mÃnimo son 5 segundos." -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "Número de tarjeta DVB a usar." -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" "Dejar esto a cero a menos que realmemte tenga más de 1 tarjeta en sus " "sistema." -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "Activar el IGU de DVB" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" +"Activar el IGU de DVB, grabación y cambio de canal controlados por ratón." + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "input_dvd: ¡valores de \\beta darán lugar a 'dom'!\n" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Error al conseguir el siguiente bloque desde el DVD (%s)\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Error abriendo dispositivo DVD\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "dispositivo usado para reproducción de DVD" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." @@ -1825,11 +2091,11 @@ msgstr "" "El camino al dispositivo, usualmente una unidad de DVD, que desea usar para " "reproducir DVDs." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "dispositivo bruto usado para acceso al DVD" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1848,11 +2114,11 @@ msgstr "" "Vea la documentación de configuración de dispositivos en bruto (man raw) " "para más información." -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "método de desencriptación CSS" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " @@ -1862,11 +2128,11 @@ msgstr "" "DVDs protegidos de copia. Pruebe los varios métodos, si tiene problemas " "reproduciendo DVDs cifrados." -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "camino al caché de claves de tÃtulos" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1880,11 +2146,11 @@ msgstr "" "crearán ficheros con nombres incontrolables. Asegúrse de usar un directorio " "dedicado que no se use para otra cosa excepto cacheado de claves de DVDs." -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "Región a la cual el reproductor de DVDs dice pertenecer (1 a 8)" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " @@ -1894,11 +2160,11 @@ msgstr "" "código regional equivocado. No tiene nada ue ver con el código regional " "puesto en los reproductores de DVD, esto es puramente software." -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "idioma por defecto para reproducción de DVD" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" @@ -1909,11 +2175,11 @@ msgstr "" "idioma.\n" "El valor debe ser un código de idioma de dos caracteres según ISO639." -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "caché de lectura adelantada" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " @@ -1923,11 +2189,11 @@ msgstr "" "Esto puede dar lugar a reproducción a golpes en unidades lentas, pero mejora " "el impacto del cambio de capa del DVD en unidades más rápidas." -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "unidad para la acción de salto (skip)" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1963,11 +2229,11 @@ msgstr "" "saltará un tÃtulo del DVD, que es una unidad estructural representando " "piezas completas en el DVD" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "unidad para búsqueda" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1992,11 +2258,11 @@ msgstr "" "la busqueda abarcará un programa del DVD, que es una unidad navigacional " "representando un capÃtulo de la feature actual" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "modo de ejecución cuando se da el tÃtulo/capÃtulo" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -2017,45 +2283,45 @@ msgstr "" "un capÃtulo\n" "reproducir únicamente el tÃtulo capÃtulo especificado y entonces parar" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: error de lectura (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: Permiso denegado: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Fichero no encontrado: >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Fichero vacÃo: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "complemento de fichero entrada" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "localización de comienzo de ojeado de ficheros" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" "El ojeador para seleccionar el fichero a reproducir comenzará en esta " "localización." -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "listar ficheros ocultos" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." @@ -2063,91 +2329,91 @@ msgstr "" "si se activa. el ojeador para seleccionar el fichero a reproducir también " "mostrará los ficheros ocultos." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "complemento de entrada gnome-vfs tal como vino con xine" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s) falló: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: error de lectura %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "Conectando servidor HTTP..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: respuesta http no válida\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: redirección 3xx: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: el estado de http no es 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: longitud del contenido = %<PRIdMAX> bytes\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: tampón agotado después de %d bytes." -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "complemento de entrada http" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "Servidor delegado de HTTP" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "El nombre del servidor delegado (\"proxy\") de HTTP." -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "Puerto del servidor delegado de HTTP" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "El número de puerto en el servidor delegado (\"proxy\") de HTTP." -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "Usuario en el servidor delegado de HTTP" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "El nombre de usuario en el servidor delegado de HTTP." -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "Contraseña en el servidor delegado de HTTP" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "La contraseña en el servidor delegado de HTTP." -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "Dominios para los cuales se ignorará el servidor HTTP delegado" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -2159,15 +2425,15 @@ msgstr "" "Si un nombre de dominio se antecede con '=' entonces se trata como un " "nombre de servidor sólamente (se requiere coincidencia completa)." -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "complemento de flujo de bits mms" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "ancho de banda de red" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " @@ -2177,11 +2443,11 @@ msgstr "" "usará cuando servidores de flujos de bits ofrezcan diferentes versiones con " "diferentes requisitos de ancho de banda del mismo flujo." -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "protocolo MMS" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -2209,55 +2475,57 @@ msgstr "input_net: no se puede resolver '%s'.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: no se puede conectar a '%s'.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "complemento de entrada de red incluido en xine" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "complemento de flujo de bits pnm de entrada" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: error al crear el archivo pvr (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: error al abrir el archivo pvr (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: error de lectura (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: error al abrir el dispositivo %s\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "" "input_pvr: IVTV_IOC_G_CODEC falló, ¿quizás cambió la API? (interfase para " "programación de aplicaciones)\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "" "input_pvr: IVTV_IOC_S_CODEC falló, ¿quizás cambió la API? (interfase para " "programación de aplicaciones)\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "complemento de entrada para WinTV-PVR 250/350" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "dispositivo usado para WinTV-PVR 250/350 (complemento pvr)" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "El camino al dispositivo de su tarjeta WinTV." @@ -2310,92 +2578,119 @@ msgstr "incapaz de conectar a '%s'.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: parando el hilo de lectura...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: hilo de lectura terminado\n" # Cer: no esoy seguro del formato. -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Abriendo >fichero:%s puerto:%d interfase:%s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: no se puede crear un hilo nuevo (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "complemento de entrada RTP y UDP original de xine" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "complemento de flujo de bits de entrada rtsp" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "Complemento de entrada CIFS/SMB basado en libsmbclient" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: ¡no puedo ir hacia atrás! (%<PRIdMAX> > %<PRIdMAX>)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: falló al abrir '%s'\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "complemento de entrada de flujo de bits" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Memoria intermedia vacÃa..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Memoria intermedia rebosando..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "Ajustando..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Nombre del sintonizador no encontrado\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "Complemento de entrada v4l tv" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "Complemento de entrada v4l radio" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "dispositivo vÃdeo v4l" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "El camino a su dispositivo de vÃdeo Video4Linux." -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +msgid "v4l ALSA audio input device" +msgstr "dispositivo audio de entrada ALSA v4l" + +#: src/input/input_v4l.c:1913 +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "" +"El nombre del dispositivo de audio que corresponde a su dispositivo de vÃdeo " +"Video4Linux." + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "Estandar v4l de TV" + +#: src/input/input_v4l.c:1919 +#, fuzzy +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" +"Selecciona el estandar de TV de las señales de entrada. Ha de ser una de: " +"PAL, NTSC o SECAM. " + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "dispositivo audio v4l" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "El camino a su dispositivo de radio Video4Linux." #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: MRL mal formada. Use vcdo:/<núm. pista>\n" @@ -2408,21 +2703,21 @@ msgstr "input_vcd: pista %d no válida (rango válido: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "Complemento de entrada de vÃdeo CD" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "incapaz de abrir %s: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: incapaz de abrir %s: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "dispositivo usado para reproducción de VCD" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." @@ -2430,12 +2725,12 @@ msgstr "" "El camino al dispositivo, usualmente una unidad de CD o DVD, que quiere usar " "para reproducir sus VideoCDes." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: mal mrl: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: falló en conectar a '%s'\n" @@ -2446,10 +2741,20 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: falló en conectar al servidor %s\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: la sesión no pudo establecerse.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "" +"rtsp_session: el servidor rtsp devolvió cabeceras demasiado grandes, la " +"sesión no puede ser establecida.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2461,54 +2766,57 @@ msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "" "input_dvd: Dispositivo %s falló al abrir durante las llamadas para ejectar\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "Conectando a servidor MMS (sobre tcp)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: error de envÃo\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: mal formato de respuesta\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: redirección 3xx no implementada: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: estado http no 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: redirección de localización no implementada\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "Conectando a servidor MMS (sobre http)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "URL inválida\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "protocolo no soportado\n" # msgstr "Tamponeando..." +# Llenando mem. tampón... +# Tamponeando... #: src/input/net_buf_ctrl.c:89 msgid "Buffering..." -msgstr "Llenando mem. tampón..." +msgstr "Precargando..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2518,12 +2826,13 @@ msgstr "" "bits:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: falló en conectar '%s'\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: falló en poner el flujo de bits\n" @@ -2563,50 +2872,50 @@ msgstr "DeberÃa haber convertido esto arriba" msgid "failed to find a device with a VCD" msgstr "falló en encontrar un dispositivo con un VCD" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "se pasó un parámetro de clase nula" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Tipo de entrada actual incorrecta" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" "Complemento de entrada Video CD con PBC y soporte para: (X)VCD, (X)SVCD, " "HQVCD, CVD ... " -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "la selección no tiene entrada RETURN" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "se seleccionó DEFAULT, pero PBC no está activado." -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "la selección no tiene entrada NEXT" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "la selección no tiene entrada PREVIOUS" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "Tipo de evento desconocido: " -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "El mensaje de arriba tenÃa nivel de registro vcdimager desconocido" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "tipo por defecto VCD a usar en autoreproducción" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" @@ -2614,11 +2923,11 @@ msgstr "" "La unidad de reproducción VCD a usar cuando ninguna se especifica en un MRL, " "p.e. vcd:// o vcd:///dev/dvd:" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "Unidad de CD-ROM usada para VCD cuando no se da ninguno" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." @@ -2626,31 +2935,31 @@ msgstr "" "Que usar si no se especifica unidad. Si la configuración está vacÃa, xine " "buscará unidades CD." -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "rango de la barra deslizadora de posiciones del VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" "rango que la barra deslizadora de posiciones del flujo de bits representa al " "reproducir un VCD." -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "¿Memoria intermedia de lectura adelantada del VCD?" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "" "La clase puede llevar a reproducción temblorosa en máquinas de gama inferior." -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "automáticamente avanzar pista/entrada en el VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." @@ -2658,11 +2967,11 @@ msgstr "" "Si se activa, deberÃamos avanzar automáticamente a la siguiente entrada o " "pista. Se usa sólo cuando el control de reproducción (PBC) está desactivado." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "mostrar LIDs de VCD 'rechazados' " -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " @@ -2672,11 +2981,11 @@ msgstr "" "pero puede verlas en la lista de MRL si se activa esto. Las entradas " "rechazadas se marcan con un asterisco (*) anexado al MRL." -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "Cadena de formato VCD para pantalla banderola" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2716,11 +3025,11 @@ msgstr "" " Un número entre 1 y el contador de volúmenes.\n" " %% : a %\n" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "Cadena de formato VCD para campo de comentario" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2733,11 +3042,11 @@ msgstr "" "%.\n" "Vea la ayuda para title_format para ver su significado." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "Máscara de banderas de depuración VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2767,7 +3076,8 @@ msgstr "" "1024: Cuadro congelado\n" "2048: Depurando desde VCDINFO\n" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "¡AYUDA! ¿¡Un manejador de audio exclusivamente mono-aural?!\n" @@ -2818,167 +3128,33 @@ msgstr "" "de decodificación envolvente matricial como prologic, deberÃa activar esta " "opción de modo que los canales adicionales se mezclen en la señal estéreo." -#: src/libfaad/xine_faad_decoder.c:128 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad NeAACDecOpen() falló.\n" -#: src/libfaad/xine_faad_decoder.c:137 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad NeAACDecInit2 falló.\n" -#: src/libfaad/xine_faad_decoder.c:148 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad NeAACDecInit falló.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" -"ffmpeg_audio_dec: incrementando el tamaño de la memoria tampón a %d para " -"evitar el desbordamiento.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_audio_dec: no pude encontrar el decodificador ffmpeg para el tipo de " -"tampón 0x%X\n" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: intentando abrir códec nulo\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: no pude abrir el decodificador\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "" -"dvaudio: incrementando el tamaño de la memoria tampón a %d para evitar el " -"desbordamiento.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: formato de cuadro no soportado, DR1 desactivado.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "" -"ffmpeg_video_dec: dimensiones de cuadro no soportadas, DR1 desactivado.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_video_dec: no pude encontrar el decodificador ffmpeg para el tipo de " -"tampón 0x%X\n" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: no pude abrir el decodificador\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: renderizado directo activado\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" -"ffmpeg_video_dec: incrementando el tamaño de la memoria tampón a %d para " -"evitar el desbordamiento.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "calidad de postprocesado MPEG-4" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"Puede ajustar la cantidad de postprocesado aplicado a video MPEG-4.\n" -"Valores más altos pueden resultar en mejor calidad, pero necesitarán más " -"CPU. Valores más bajos resultarán en defectos de imagen como artefactos de " -"bloque. Para contenido de alta calidad, demasiado postprocesado puede de " -"hecho hacer la imagen peor emborronándola demasiado." - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "tasa de bits salida mpeg de libavcodec (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" -"La velocidad de salida (tasa de bits) que el codificador mpeg de libavcodec " -"deberÃa usar para el modo de codificado de DXR3. Valores más altos " -"aumentarán la calidad y el uso de CPU.\n" -"Este ajuste sólo se considera cuando el modo de calidad constante está " -"desactivado." - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "modo de calidad constante" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" -"Cuando se activa, libavcodec usará un modo de calidad constante " -"dinámicamente comprimiendo las imágenes basado en su complejidad. Cuando se " -"desactiva, libavcodec usará el modo de tasa de bits constante." - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "compresión mÃnima" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" -"La mÃnima compresión a aplicar a una imagen en el modo de calidad constante." - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "cuantificador máximo" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "" -"La máxima compresión a aplicar a una imagen en modo de calidad constante." - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "libmusepack: falló lectura mpc_streaminfo_read: %d\n" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "libmusepack: datos después de la última trama ignorados\n" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "libmusepack: falló mpc_decoder_initialise\n" @@ -3007,82 +3183,84 @@ msgstr "" "RealPlayer para usted. Consulte el FAQ de xine FAQ para más información " "sobre cómo instalar los codificadores." -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" "libreal: ¡Error resolviendo sÃmbolos! (¿incompatibilidad de versión?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (audio) No puedo resolver sÃmbolos - dll incompatible: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "" "libareal: falló la inicialización del decodificador, código de error: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" "libareal: falló la configuración de tipo de decodificador, código de error: " "0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: Ostras, ¿puede real hacer más de dos canales?\n" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "mostrar los subtÃtulos en flujos MPEG-2" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" "Son subtÃtulos (Closed Captions) pensados mayormente para ayudar a las " "personas con deficiencias auditivas." -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "esquema de subtitulado en primer o segundo plano" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Escoja su renderizado favorito de los subtÃtulos." -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "tipografÃa estándard de subtitulado" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Escoja la fuente tipográfica estándard para el texto del subtitulado." -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "tipografÃa cursiva de subtitulado" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "Escoja la fuente tipográfica cursiva para el texto del subtitulado." -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "tamaño de la tipografÃa del subtitulado" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "" "Escoja el tamaño de la fuente tipográfica para el texto del subtitulado." -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "subtitulado ajustado al centro " -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." @@ -3090,24 +3268,24 @@ msgstr "" "Cuando se activa, el subtitulado se posicionará en el centro de las lineas " "individuales." -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "tipografÃa para subtÃtulos externos" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "" "desplazamiento vertical de los subtÃtulos (relativo al tamaño de ventana)" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "codificado de los subtÃtulos" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "duración por defecto de la exhibición de los subtÃtulos en segundos" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " @@ -3118,11 +3296,11 @@ msgstr "" "a cero hará que el subtÃtulo se siga mostrando hasta que aparezca el " "siguiente." -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "tamaño de subtÃtulo " -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." @@ -3130,11 +3308,11 @@ msgstr "" "Puede ajustar el tamaño de los subtÃtulos aquÃ. El ajuste será evaluado " "relativo al tamaño de la ventana." -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "desplazamiento vertical de los subtÃtulos" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." @@ -3142,32 +3320,32 @@ msgstr "" "Puede ajustar la posición vertical de los subtÃtulos aquÃ. El ajuste será " "evaluado relativo al tamaño de la ventana." -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "tipografÃa para los subtÃtulos" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" "TipografÃa del directorio de xine que será usada para el texto de los " "subtÃtulos." -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" "Un fichero de tipografÃa tipo linea (pe: a.ttf) que será usada para el texto " "de los subtÃtulos." -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "si debemos usar una tipografÃa freetype" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "codificación de los subtÃtulos" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -3179,11 +3357,11 @@ msgstr "" "caracteres no ASCII no se muestran de la forma que usted espera, pregúntele " "al creador de los subtÃtulos que codificación se usó." -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "use OSD sin escalar si es posible" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -3284,22 +3462,22 @@ msgstr "w32codec: Error inicializando audio DMO\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: error haciendo descompresión ByteRun1\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 no está soportado de momento\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 no está soportado de momento\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ no está soportado de momento\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: Este tipo anim no está soportado de momento\n" @@ -3345,6 +3523,7 @@ msgstr "" "para escuchar sólo un canal de un flujo de datos dado.\n" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr ": mejorando Mono a Stereo.\n" @@ -3359,6 +3538,7 @@ msgstr[1] "" ": mejorando un canal simple desde los %d canales del flujo original.\n" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr ": dispositivo audio incapaz de AO_CAP_MODE_STEREO.\n" @@ -3378,7 +3558,14 @@ msgstr "" "varias muestras para nivelar las variaciones vÃa la media ponderada standard " "de las muestras pasadas.\n" -#: src/post/deinterlace/xine_plugin.c:202 +# Cer: pulldown: se refiere a curiosos mecanismos de adaptación +# de las diferentes frecuencias de cuadro entre pelicula y vÃdeo +# (ver http://en.wikipedia.org/wiki/Telecine#2:3_pulldown). +# Ignoro que nombre puede tener en español. Lo de “pulldown†+# viene del arrastre de la pelicula, de la que se tira con una uña +# en la cámara +#: src/post/deinterlace/xine_plugin.c:207 +#, fuzzy msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3392,6 +3579,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3430,8 +3620,8 @@ msgid "" "Deinterlacing methods: (Not all methods are available for all plataforms)\n" "\n" msgstr "" -"Complemento avanzado tvtime/desentrelazador con detección de despliegue de " -"menú {pulldown}\n" +"Complemento avanzado tvtime/desentrelazador con detección de conversión de " +"frecuencia de cuadro en el telecine (“pulldownâ€)\n" "Este complemento trata de suministrar mecanismos de desentrelazado " "comparables a reproductores de alta calidad progresivos de DVD y los asà " "llamados dobladores de linea, para usar con monitores de ordenador, " @@ -3444,10 +3634,10 @@ msgstr "" "\n" " Enabled (activado): Activar/desactivar el complemento.\n" "\n" -" Pulldown (despliegue): Escoger el algoritmo de detección de despliegue 2-3 " -"{¿de menú?}. Las pelÃculas de 24 CPS (cuadros por segundo) que han sido " -"convertidas a NTSC pueden ser detectadas e inteligentemente reconstruidas a " -"sus cuadros originales (no entrelazados).\n" +" Pulldown (ajuste de telecine): Escoger el algoritmo de detección de ajuste " +"de telecine 2-3. Las pelÃculas de 24 CPS (cuadros por segundo) que han sido " +"convertidas a NTSC con ese ajuste, pueden ser detectadas e inteligentemente " +"reconstruidas a sus cuadros originales (no entrelazados).\n" "\n" " Framerate_mode (modo de cadencia de cuadro): Seleccionar 'full' (completo) " "desentrelazará cada campo a un único cuadro en calidad de televisión y más " @@ -3457,11 +3647,11 @@ msgstr "" "Un RedHat más moderno y los kernels 2.6 usan una frecuencia mayor (512 y " "1000, respectivamente) y deberÃan funcionar bien.\n" "\n" -" Judder_correction (corrección de vibración): Una vez que despliegue 2-3 " -"está activado y se detecta que tenemos una pelÃcula, es posible reducir la " -"cadencia de cuadro a la original (24 CPS). Esto distribuirá los cuadros " -"uniformemente en el tiempo, coincidiendo con la velocidad con que fueron " -"rodados y eliminando el efecto de vibración.\n" +" Judder_correction (corrección de vibración): Una vez que ajuste de " +"telecine 2-3 está activado y se detecta que tenemos una pelÃcula, es posible " +"reducir la cadencia de cuadro a la original (24 CPS). Esto distribuirá los " +"cuadros uniformemente en el tiempo, coincidiendo con la velocidad con que " +"fueron rodados y eliminando el efecto de vibración.\n" "\n" " Use_progressive_frame_flag (use bandera de cuadro progresivo): Flujos de " "datos MPEG2 bien creados usan una bandera para indicar material progresivo. " @@ -3488,7 +3678,8 @@ msgstr "" "está disponibles para todas las plataformas)\n" "\n" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "tvtime: No hay métodos de desentrelazado disponibles, saliendo.\n" @@ -3535,7 +3726,7 @@ msgstr "" "Puede escoger el método de conversión del espacio de color usado por goom.\n" "Las selecciones disponibles deberÃan ser autoexplicativas." -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3583,7 +3774,7 @@ msgstr "" "\n" "Parámetros\n" " Radius (radio): tamaño del filtro\n" -" Power (potencia): qué a menudo deberÃa ser aplicado el filtro\n" +" Power (potencia): cuan a menudo deberÃa ser aplicado el filtro\n" "\n" "* mplayer's boxblur (C) 2002 Michael Niedermayer\n" @@ -3746,7 +3937,7 @@ msgstr "" "\n" "* mplayer's noise (C) Michael Niedermayer\n" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3758,7 +3949,7 @@ msgstr "" "Parámetros\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3766,7 +3957,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3793,7 +3984,7 @@ msgid "" "\n" "* mplayer's unsharp (C) 2002 Remi Guyomarch\n" msgstr "" -"Unsharp mask / gaussian blur (Máscara de des-nitidez / borrosidad " +"Unsharp mask / gaussian blur (máscara de des-nitidez / borrosidad " "gaussiana)\n" "Es posible ajustar el ancho y altura de la matriz, tamaño impar en ambas " "direcciones (min = 3x3, máx = 13x11 o 11x13, usualmente algo entre 3x3 y " @@ -3825,17 +4016,17 @@ msgstr "" "Complemento de xine de salida de vÃdeo usando la librerÃa de arte ascii " "(ascii-art)" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "" "Complemento de xine de salida de vÃdeo usando la librerÃa de arte ascii a " "color" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "modo de capa de vÃdeo tamponeado" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." @@ -3844,11 +4035,11 @@ msgstr "" "tamponeado (buffering) da una reproducción más suave, pero consume más " "memoria de vÃdeo." -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "esperar al retrazado vertical" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." @@ -3856,11 +4047,11 @@ msgstr "" "Activa la sincronización de la actualización de la imagen de vÃdeo con el " "repintado de la pantalla entera (\"retrazado vertical\")." -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "activar llave de color de vÃdeo" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." @@ -3868,15 +4059,13 @@ msgstr "" "Activar el uso de una llave de color para decirle a la tarjeta gráfica dónde " "superponer la imagen de vÃdeo." -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "llave de color de vÃdeo" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." @@ -3885,20 +4074,20 @@ msgstr "" "la imagen de vÃdeo. Pruebe diferentes valores si observa que las ventanas se " "vuelven transparentes." -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "filtro de parpadeo" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" "Active Filtro de Parpadeo para una salida suave en una pantalla entrelazada." -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "paridad de campo" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." @@ -3906,44 +4095,51 @@ msgstr "" "para una pantalla entrelazada, activa el control de paridad de campo(\"none" "\"=desactivado)." -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "video_out_directfb: usando aceleración hardware de subimagen\n" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_directfb: la capa soporta salida de vÃdeo\n" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_directfb: ¡la capa no soporta YV12!\n" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_directfb: ¡la capa no soporta YUV2!\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" "video_out_directfb:¡se necesita al menos DirectFB 0.9.25 para reproducir en " "esta capa!\n" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "video_out_directfb: ¡la capa no soporta modo tamponeado %d!\n" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "video_out_directfb: ¡la capa no soporta las opciones 0x%08x!\n" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "video_out_directfb: usando escalado de imagen en hardware acelerado.\n" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" @@ -3951,34 +4147,35 @@ msgstr "" "video_out_directfb: escalado de imagen con desentrelazado es acelerado en " "hardware.\n" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "id. de la capa de vÃdeo (auto: -1)" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "Seleccione la capa de salida de vÃdeo por su id." -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_directfb: usando capa de visualización nº %d.\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "complemento de xine de salida de vÃdeo usando DirectFB." -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" "video_out_directfb: ¡no se encontró una capa de visualización usable!\n" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "complemento de xine de salida de vÃdeo usando DirectFB bajo XDirectFB." -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "complemento de xine de salida de vÃdeo para win32 usando directx" @@ -3992,11 +4189,11 @@ msgstr "" "directo) empaquetado (%d).\n" " Compruebe 'fbset -i' o pruebe 'fbset -depth 16'.\n" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "nombre del dispositivo framebuffer" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -4011,6 +4208,7 @@ msgstr "" "es realmente un verdadero dispositivo framebuffer." #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Lo sentimos, su modo de vÃdeo no fue reconocido .\n" @@ -4037,6 +4235,7 @@ msgstr "" # frame flips --> volteos de cuadro # Zero copy buffers --> tampones copia cero #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -4067,11 +4266,11 @@ msgstr "" msgid "xine video output plugin which displays nothing" msgstr "Complemento de xine de salida de vÃdeo que no muestra nada" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "renderizador OpenGL" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -4127,11 +4326,11 @@ msgstr "" "Environment_Mapped_Torus\n" "Muestra las imágenes en un toro dando vueltas. Muy guais =)" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "frecuencia de cuadro mÃnima OpenGL" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" @@ -4139,13 +4338,12 @@ msgstr "" "Frecuencia mÃnima de cuadro para rutinas animadas de renderizado.\n" "Ignorado para rutinas estáticas de renderizado.\n" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "activar doble tamponeado" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" @@ -4155,11 +4353,12 @@ msgstr "" "también reduce un montón el parpadeo.\n" "No deberÃa impactar nada el rendimiento." -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "Complemento de xine de salida de vÃdeo usando la API gráfica 3D OpenGL" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx32: Error: no puedo coger el DGA pintable para la ventana de " @@ -4179,6 +4378,7 @@ msgstr "" # Cer: Mmm, coger :-? #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx64: Error: no puedo coger el DGA pintable para la ventana de " @@ -4208,6 +4408,7 @@ msgstr "" "cuadro) xvr100/pgx64/pgx24 \n" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" @@ -4215,30 +4416,33 @@ msgstr "" "ya está en uso\n" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "video_out_pgx64: Error: incapaz de poner las propiedades de ventana\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" "video_out_pgx64: Aviso: memoria de vÃdeo baja, multi-tamponeado desactivado\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Error: memoria de vÃdeo insuficiente\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: Aviso: memoria de vÃdeo baja, tamponeado-doble desactivado\n" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Error: falló ioctl (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "llave de color de superposición de vÃdeo" @@ -4276,11 +4480,11 @@ msgstr "" "Multi-tamponeado incrementa el rendimiento a costa de usar más memoria " "gráfica." -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "use aceleración gráfica si está disponible" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " @@ -4290,17 +4494,19 @@ msgstr "" "por su hardware gráfico. Esto podrÃa no funcionar, asà que lo puede " "desactivar, si las cosas van mal." -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" "sdl tiene que emular superficies de16 bit, que enlentecerán las cosas.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: el modo de pantalla completa NO está soportado\n" # Cer: traducción incierta -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "" "complemento de xine de salida de vÃdeo usando la Capa Simple de Medios " @@ -4312,36 +4518,44 @@ msgstr "" "complemento de vÃdeo de xine usando el \"Libstk Surface Set-top Toolkit\"" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: error. (YUY2 no está soportado por su tarjeta gráfica)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" "video_out_syncfb: error. (YV12 no está soportado por su tarjeta gráfica)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUV 4:2:0 (3 planos))\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUV 4:2:0 (2 planos))\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUV 4:2:2)\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUY2)\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: info. (módulo SyncFB soporta RGB565)\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" @@ -4349,7 +4563,8 @@ msgstr "" "video_out_syncfb: abortando. (módulo SyncFB no soporta YV12, YUY2 ni " "RGB565)\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " @@ -4359,11 +4574,11 @@ msgstr "" "porque su módulo del kernel SyncFB parece estar anticuado. Por favor, " "refiérase a README.syncfb para información sobre como actualizarlo.)\n" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "número por defecto de repeticiones de cuadros" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." @@ -4371,18 +4586,18 @@ msgstr "" "Esto especifica cuantas veces se mostrará consecutivamente el mismo cuadro " "de vÃdeo." -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "complemento de vÃdeo de xine usando el módulo SyncFB para tarjetas Matrox " "G200/G400" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "Nombre de dispositivo de SyncFB" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -4396,33 +4611,31 @@ msgstr "" "arbitrario. Asà que debiera ser cuidadoso con que el valor que introduzca " "sea realmente un dispositivo framebuffer adecuado." -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "intensidad de rojo " -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "La intensidad de los componentes de color rojo." -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "intensidad de verde" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "La intensidad de los componentes de color verde." -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "intensidad de azul" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "La intensidad de los componentes de color azul." -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " @@ -4433,50 +4646,54 @@ msgstr "" "vertical). Esto elimina el parpadeo y artifactos de rajado, pero usa más " "memoria gráfica." -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: el adaptador soporta el formato yuy2\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: el adaptador soporta el formato yv12\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "" "video_out_vidix: Tiene usted la versión incorrecta de la librerÃa VIDIX\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: No pude localizar el driver VIDIX que funcione\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: usando driver: %s por %s\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "clave de componente rojo en superposición de vÃdeo" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "clave de componente verde en superposición de vÃdeo" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "clave de componente azul en superposición de vÃdeo" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "complemento de salida de vÃdeo usando libvidix para x11" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "" "complemento de salida de vÃdeo usando libvidix para frame buffer de linux" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" @@ -4486,7 +4703,8 @@ msgstr "" "video_out_xcbshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" @@ -4497,7 +4715,8 @@ msgstr "" "video_out_xcbshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" @@ -4507,7 +4726,7 @@ msgstr "" "video_out_xcbshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -4522,23 +4741,26 @@ msgstr "" "rendimiento se recomienda una profundidad de 16 bpp!\n" "\n" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xcbshm: la extensión de memoria compartida del MIT (MIT Shared " "Memory) no está presente en la pantalla.\n" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xcbshm: su modo de vÃdeo no fué reconocido, lo siento :-(\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" "complemento de salida de vÃdeo de xine usando la extensión de memoria " "compartida del MIT (MIT Shared Memory) " -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4547,7 +4769,7 @@ msgstr "" "video_out_xcbxv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" @@ -4557,7 +4779,8 @@ msgstr "" "video_out_xcbxv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4566,11 +4789,24 @@ msgstr "" "video_out_xcbxv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xcbxv: la extensión Xv no está presente.\n" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "%s: no se pudo abrir el puerto Xv %d - autodetectando\n" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4581,7 +4817,7 @@ msgstr "" "puerto yuv12 usable.\n" " ¡¿Parece que su driver de hardware gráfico no soporta Xv?!\n" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " @@ -4590,75 +4826,41 @@ msgstr "" "video_out_xcbxv: usando puerto Xv %d del adaptador %s para conversión y " "escalado de espacio de color en hardware .\n" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "llave de color autopintado" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "Hacer Xv autopintar su llave de color." - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "modo de escalado bilineal" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "activar sincronismo de blanqueo vertical (vblank sync)" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -"Selecciona el modo de escalado bilineal para las tarjetas Permedia. Los " -"valores individuales son:\n" -"\n" -"Permedia 2\n" -"0 - desactivar filtrado bilineal\n" -"1 - activar filtrado bilineal\n" -"\n" -"Permedia 3\n" -"0 - desactivar filtrado bilineal\n" -"1 - filtrado horizontal lineal\n" -"2 - sactivar filtrado bilineal completo" +"Esta opción sincronizará la actualización de la imagen de vÃdeo al " +"redibujado de la pantalla de video entera (\"vertical retrace\", retrazado " +"vertical). Esto elimina el parpadeo y artefactos de rajado. En las tarjetas " +"nvidia puede también necesitar que ejecute \"nvidia-settings" +"\" (configuración de nvidia) y escoger que dispositivo de pantalla debe " +"sincronizar bajo la pestaña de configuración de XVideo" -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xcbxv: éste adaptador soporta el formato yv12.\n" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xcbxv: éste adaptador soporta el formato yuy2.\n" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "rodeo para alineamiento de paso" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" -"Algunos drivers de vÃdeo con errores necesitan un rodeo para que funcionen " -"adecuadamente." - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "método de desentrelazado (obsolescente)" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4733,12 +4935,13 @@ msgstr "" "Aplica un ligero borrón vertical para eliminar los artifactos de peine. " "Buenos resultados con uso de CPU mediano." -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "complemento de salida de vÃdeo usando la extensión MIT X vÃdeo" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4747,7 +4950,7 @@ msgstr "" "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -4757,7 +4960,8 @@ msgstr "" "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4767,7 +4971,8 @@ msgstr "" "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4776,17 +4981,20 @@ msgstr "" "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: la extensión de memoria compartida del MIT (MIT Shared " "Memory) no está presente en la pantalla.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: su modo de vÃdeoo no fué reconocido, lo siento :-(\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4795,7 +5003,8 @@ msgstr "" "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4804,7 +5013,7 @@ msgstr "" "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -4814,7 +5023,8 @@ msgstr "" "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4823,11 +5033,18 @@ msgstr "" "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT " "Shared Memory).\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: la extensión Xv no está presente.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, fuzzy, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "%s: no se pudo abrir el puerto Xv %d - autodetectando\n" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4837,7 +5054,7 @@ msgstr "" "puerto yuv12 usable.\n" " ¡¿Parece que su driver de hardware gráfico no soporta Xv?!\n" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " @@ -4846,23 +5063,27 @@ msgstr "" "video_out_xv: usando puerto Xv %ld del adaptador %s para conversión y " "escalado de espacio de color en hardware .\n" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: éste adaptador soporta el formato yv12.\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: éste adaptador soporta el formato yuy2.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "complemento de vÃdeo de xine usando extensión de vÃdeo X XvMC" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: extensión XvMC no presente.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4870,7 +5091,7 @@ msgstr "" "video_out_xvmc: la extensión Xv está presente pero no pude encontrar un " "puerto yuv12 usable.\n" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" @@ -4879,24 +5100,28 @@ msgstr "" "video_out_xvmc: usando puerto %ld de Xv del adaptador %s\n" " para conversión del espacio de color y escalado en hardware\n" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " compensación de movimiento y aceleración idct \n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " sólo compensación de aceleración \n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " sin soporte XvMC \n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " Con Overlay = %d; UnsignedIntra = %d.\n" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4905,7 +5130,8 @@ msgstr "" "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory\" (memoria " "compartida MIT).\n" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4914,7 +5140,7 @@ msgstr "" "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory\" (memoria " "compartida MIT).\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4924,7 +5150,8 @@ msgstr "" "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory\" (memoria " "compartida MIT).\n" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4934,11 +5161,13 @@ msgstr "" "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory\" (memoria " "compartida MIT).\n" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xxmc: extensión Xv no presente.\n" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4949,7 +5178,7 @@ msgstr "" " ¿Parece como que su driver de hardware gráfico no soporta " "Xv?!\n" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " @@ -4958,19 +5187,21 @@ msgstr "" "video_out_xxmc: usando el puerto %ld de Xv del adaptador %s para conversión " "y escalado del espacio de color en hardware.\n" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xxmc: éste adaptador soporta el formato yv12.\n" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xxmc: éste adaptador soporta el formato yuy2.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "Hacer que XvMC ubique más cuadros more cuadros para mejor tamponeado." -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" @@ -4980,11 +5211,11 @@ msgstr "" "Esta opción, cuando se activa, hace que el manejador trate de\n" "ubicar 15 cuadros. hay que tenerlo para VDR uni cromático y en vivo.\n" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "Ahorro de cpu unichrome" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" @@ -4994,11 +5225,11 @@ msgstr "" "Sólo para Linux con kernel serie 2.6 series o 2.4 con parche multimedia.\n" "Experimental.\n" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "Arreglar colores de subimagen en NVIDIA XvMC con errores" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" @@ -5007,24 +5238,24 @@ msgstr "" "rojo en el DEP aparezca como azul y viceversa.\n" "Esta opción proporciona un arreglo.\n" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "Use «bob» como método acelerado de desentrelazado." -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -"Cuando el entrelazado está activado para cuadros acelerados \n" -"en hardware, alterna entre el campo superior e inferior \n" +"Cuando el entrelazado está activado para cuadros acelerados\n" +"en hardware, alterna entre el campo superior e inferior\n" "al doble de la frecuencia de cuadro.\n" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "No usar desentrelazado «bob» para cuadros progresivos." -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" @@ -5032,12 +5263,12 @@ msgstr "" "Los cuadros progresivos no necesitan desentrelazado, de manera\n" "que desentrelazarlos bajo demanda no resultará en una mejor imagen.\n" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" "No usar desentrelazado «bob» mientras una escalado de VEP (OSD) está activo." -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" @@ -5047,18 +5278,21 @@ msgstr "" "mejor imagen VEP (visualización en pantalla, OSD)\n" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" "x11osd: extensión XShape no disponible. Superposición no escalada " "desactivada.\n" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" "x11osd: error al crear ventana . Superposición no escalada desactivada.\n" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" "x11osd: error al crear pixmap (mapa de pÃxeles). Superposición no escalada " @@ -5069,6 +5303,87 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: superposición no escalada creada (modo %s).\n" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "llave de color autopintado" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "Hacer Xv autopintar su llave de color." + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "modo de escalado bilineal" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" +"Selecciona el modo de escalado bilineal para las tarjetas Permedia. Los " +"valores individuales son:\n" +"\n" +"Permedia 2\n" +"0 - desactivar filtrado bilineal\n" +"1 - activar filtrado bilineal\n" +"\n" +"Permedia 3\n" +"0 - desactivar filtrado bilineal\n" +"1 - filtrado horizontal lineal\n" +"2 - sactivar filtrado bilineal completo" + +#: src/video_out/xv_common.h:53 +msgid "Xv port number" +msgstr "puerto Xv número" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "Selecciona el número de puerto Xv a usar (0 para autodetectar)." + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "rodeo para alineamiento de paso" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" +"Algunos drivers de vÃdeo con errores necesitan un rodeo para que funcionen " +"adecuadamente." + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "preferencia de método de visualización de vÃdeo (display)" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" +"Selecciona que método de salida de vÃdeo se prefiere. La detección se hace " +"usando los nombres reportados del adaptador Xv.\n" +"(Sólo aplica al detectar qué puerto Xv a usar.)" + +#: src/video_out/xv_common.h:81 +#, fuzzy +msgid "bicubic filtering" +msgstr "filtro de parpadeo" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "desactivar la mezcla alfa exacta de superposiciones" @@ -5112,36 +5427,41 @@ msgstr "" "entradas poco fiables, pero también aumentan la latencia y el consumo de " "memoria." -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" "audio_out: cálculo de retardo imposible con un dispositivo de sonido no " "disponible\n" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" "la escritura a la tarjeta de sonido falló. Supondremos que el dispositivo se " "desconectó.\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "8 bits no soportados por el driver, convirtiendo a 16 bits.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "mono no soportado por el driver, convirtiendo a estéreo.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "estéreo no soportado por el driver, convirtiendo a mono.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "método para sincronizar audio y vÃdeo" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -5183,11 +5503,11 @@ msgstr "" "audio. Esto no funciona para para paso a través digital, donde los datos de " "audio se pasan a un decodificador externo en forma digital." -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "activar remuestreo (resampling)" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -5199,11 +5519,11 @@ msgstr "" "\"remuestreo\". Aquà puede seleccionar si se activa el remuestreo, se " "desactiva, o se usa automáticamente cuando sea necesario." -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "siempre remuestrear a ésta cadencia (0 para desactivar)" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " @@ -5213,11 +5533,11 @@ msgstr "" "hardware de audio. Poniendo este valor a algo distinto de cero aquÃ, puede " "forzar el flujo de datos de audio a ser remuestreado a la cadencia dada." -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "compensación para paso a través digital" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" @@ -5228,11 +5548,11 @@ msgstr "" "para compensar.\n" "Las unidades del valor es una marca PTS, que es 1/90000 segundo." -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "reproduzca vÃdeo incluso a velocidades lentas/rápidas" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -5241,27 +5561,28 @@ msgid "" msgstr "" "Si activa esta opción, el audio se escuchará incluso cuando la velocidad de " "reproducción no sea 1X. Por supuesto, sonará distorsionado (tono más agudo o " -"grave). Si desea experimentar preservando el tono, puede probar el " -"postcomplemento de sonido 'stretch' en su lugar." +"grave). Si desea experimentar preservando el tono, puede probar el post-" +"complemento de sonido 'stretch' en su lugar." -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "volumen de audio inicial" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "El volumen de sonido al arrancar xine." -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "restaurar el nivel del volumen al arrancar" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "Si se desactiva, xine no modificará ningún ajuste del mezclador al arrancar." -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "audio_out: lo siento, ésto no debiera ocurrir. Por favor reinicie xine.\n" @@ -5273,46 +5594,48 @@ msgstr "" "xine-lib: buffer.c: Ha ocurrido un error fatal: DEMASIADAS LIBERACIONES DE " "MEMORIA (FREE'S)\n" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" "El fichero actual de configuración ha sido modificado por una versión de " "xine más nueva." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" "configfile: AVISO: la copia de seguridad del fichero de configuración a %s " "falló\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: AVISO: su configuración no será guardada\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: AVISO: la escritura de la configuración a %s falló\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" "configfile: AVISO: eliminando fichero de configuración %s posiblemente roto\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: AVISO: deberÃa comprobar el fichero de respaldo %s\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: la entrada '%s' no deberÃa ser modificada desde MRL\n" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "" "info_helper: no puedo encontrar el \"locale\" actual del juego de " @@ -5346,7 +5669,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: falló la lectura por complemento de entrada\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: error escribiendo al fichero %<PRIdMAX> bytes: %s\n" @@ -5354,7 +5677,7 @@ msgstr "input_rip: error escribiendo al fichero %<PRIdMAX> bytes: %s\n" #: src/xine-engine/input_rip.c:182 #, c-format msgid "input_rip: open() function should never be called\n" -msgstr "" +msgstr "input_rip: la función open() no debiera ser nunca llamada\n" #: src/xine-engine/input_rip.c:313 src/xine-engine/input_rip.c:418 #, c-format @@ -5371,12 +5694,12 @@ msgstr "input_rip: la búsqueda falló: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %<PRIdMAX> bytes desechados\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: ¡complemento de entrada no definido!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " @@ -5385,7 +5708,7 @@ msgstr "" "input_rip: el directorio de destino no fué especificado, por favor rellene " "la opción 'media.capture.save_dir'\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -5394,13 +5717,13 @@ msgstr "" "defina media.capture.save_dir en la configuración." # CER: ¿ripeado? -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: ¡ripeado/cacheado de esta fuente no está permitido!\n" # CER: el "." está mal colocado, pero al final darÃa eror. -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" @@ -5408,12 +5731,12 @@ msgstr "" "a xine no se le permite grabar desde esta fuente. (¿puede ser material con " "copyright?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: file ¡el nombre no está dado!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: error abriendo fichero %s: %s\n" @@ -5452,7 +5775,7 @@ msgstr "io_helper: Conexión Rechazada\n" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "map_decoder_list: no hay espacio para el decodificador, omitido.\n" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" @@ -5460,13 +5783,13 @@ msgstr "" "load_plugins: ignorando complemento%s, versión \"iface\" equivocada%d " "(deberÃa ser %d)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "prioridad para decodificador %s" # CER: ¿rank? -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" @@ -5476,7 +5799,7 @@ msgstr "" "manejado por más de un decodificador.\n" "Una prioridad de 0 activa la prioridad por omisión del decodificador." -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " @@ -5485,7 +5808,7 @@ msgstr "" "load_plugins: el complemento desmultiplexor %s no proporciona una prioridad, " "xine-lib usará la prioridad por defecto.\n" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " @@ -5494,47 +5817,47 @@ msgstr "" "load_plugins: el complemento de entrada %s no proporciona una prioridad, " "xine-lib usará la prioridad por defecto.\n" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: encontrado complemento %s\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: encontrado complemento estático\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "" "load_plugins: alcanzado lÃmite de complementos, %s no pudo ser cargado\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" "load_plugins: alcanzado lÃmite de complementos, complemento estático no " "pudo ser cargado\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: tipo de complemento desconocido %d en %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "" "load_plugins: tipo de complemento estáticamente ligado desconocido %d\n" # CER: ¿stat? -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: incapaz de obtener estado %s\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -5543,7 +5866,7 @@ msgstr "" "load_plugins: no puedo abrir librerÃa de complemento %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -5552,12 +5875,12 @@ msgstr "" "load_plugins: no puedo conseguir información del complemento de %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: omitiendo directorio de complementos ilegible %s.\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -5566,27 +5889,28 @@ msgstr "" "load_plugins: no puedo (etapa 2) abrir librerÃa de complementos %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: ¡Ondiá! %s no contiene información del complemento.\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: estrategia %d de detección de contenido desconocida\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: usando desmultiplexor '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: fallé al cargar complemento de salida de audio <%s>\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -5594,7 +5918,7 @@ msgstr "" "load_plugins: el auto-probado de salida de audio no encontró ningún driver " "de audio usable audio.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -5603,51 +5927,53 @@ msgstr "" "load_plugins: no puedo descargar librerÃa de complementos %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "la tipografÃa '%s-%d' ya estaba cargada, raro.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "la carga de la tipografÃa '%s' falló (%d < %d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "" "versión incorrecta para la tipografÃa '%s'. Se esperaba %d se encontró %d.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: no puedo inicializar librerÃa ft2\n" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "osd: error encajando tipografÃa %s con FontConfig" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: error cargando tipografÃa %s con FontConfig" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "osd: error buscando tipografÃa %s con FontConfig" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: error cargando tipografÃa %s con ft2\n" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "osd: error poniendo tamaño de (¿tipografÃa no escalable?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -5656,41 +5982,46 @@ msgstr "" "osd: secuencia desconocida comenzando con byte 0x%02X en codificación \"%s" "\", saltando\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: no puedo encontrar juego de caracteres actual del \"locale\"\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: conversión no soportada %s -> %s, conversión no realizada\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: la tipografÃa no está definida\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: error cargando glifo\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: error en renderizado de glifo\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: error cargando glifo %i\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: error en renderizado\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "paleta (frente-borde-fondo) a usar para subtÃtulos y VEP (OSD)" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " @@ -5700,21 +6031,21 @@ msgstr "" "que no especifican ningún coloreado ellos mismos. Las paletas se listan en " "la forma:frente-borde-fondo." -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: no hay complemento disponible para manejar '%s'\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: error, tipo de tampón desconocido: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "número de tampones de vÃdeo" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " @@ -5725,12 +6056,12 @@ msgstr "" "entradas poco fiables, pero también aumentan la latencia y el consumo de " "memoria." -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d marcos entregados, %d cuadros omitidos, %d cuadros descartados\n" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -5739,11 +6070,11 @@ msgstr "" "video_out: tirando la imagen con pts %<PRId64> porque es demasiado vieja " "(diff : %<PRId64>).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "número por defecto de marcos de vÃdeo" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." @@ -5751,11 +6082,11 @@ msgstr "" "El número por omisión de cuadros de vÃdeo a pedir del manejador de vÃdeo de " "salida. Algunos manejadores invalidará este ajuste con sus propios valores." -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "porcentaje de cuadros omitidos a tolerar" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." @@ -5763,11 +6094,11 @@ msgstr "" "Cuando más de este porcentaje de cuadros no sean mostrados, porque no fueron " "decodificados a tiempo, xine envÃa una notificación." -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "porcentaje de cuadros descartados a tolerar" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." @@ -5775,7 +6106,8 @@ msgstr "" "Cuando más de este porcentaje de cuadros no sean mostrados, porque no fueron " "programados para su visualización a tiempo, xine envÃa una notificación." -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out: Lo siento, esto no deberÃa ocurrir. Por favor, reinicie xine.\n" @@ -5837,139 +6169,152 @@ msgstr "" "imagen no está acelerado en hardware, esto puede reducir drásticamente el " "uso de cpu." -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: error mientras se interpretaba mrl\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: encontrado complemento de entrada : %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: el complemento de entrada no puede abrir el MRL [%s]\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: no se puede encontrar el complemento de entrada para MRL [%s]\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: fallo al iniciar el demultiplexor %s especificado\n" # cer: ¿join rip? -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: complemento de entrada join rip \n" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: error al abrir instancia de complemento de entrada rip\n" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "" "xine: el último demultiplexor probado (last_probed) %s no consiguió " "iniciarse \n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "ignorando vÃdeo\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "ignorando audio\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "ignorando subimagen\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "caché del complemento de entrada desactivado\n" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "abierto mrl de subtÃtulos '%s'\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: error abriendo mrl de subtÃtulos\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: error al interpretar MRL\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "xine: cambiar la ocpión '%s' del MRL no está permitido\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: no se pudo encontrar un demultiplexor para >%s<\n" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: no se pudo encontrar un demultiplexor para >%s<\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: encontrado complemento demultiplexor: %s\n" -#: src/xine-engine/xine.c:1198 -#, fuzzy, c-format +#: src/xine-engine/xine.c:1252 +#, c-format msgid "xine: demuxer is already done. that was fast!\n" -msgstr "xine: fallo al iniciar el demultiplexor\n" +msgstr "xine: el demultiplexor ya ha terminado, ¡eso fué rápido\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: fallo al iniciar el demultiplexor\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: no hay disponible un demultiplexor\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: fallo al iniciar el demultiplexor\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" "xine: El directorio (save_dir) especificado \"%s\" pudiera ser un riesgo " "para la seguridad.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" "El directorio (save_dir) especificado pudiera ser un riesgo para la " "seguridad." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: \"locale\" no soportada por la librerÃa de C\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "estrategia de detecciónde formato" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -6003,11 +6348,11 @@ msgstr "" "extension\n" "Detectar sólo por la extensión del nombre del fichero.\n" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "directorio para guardar flujos de bits" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -6023,11 +6368,11 @@ msgstr "" "arbitrario. Asà que debiera ser cuidadoso que el directorio especificado sea " "robusto contra cualquier contenido en cualquier fichero." -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "permitir cambios implÃcitos a la configuración (p.e. por MRL)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -6044,11 +6389,11 @@ msgstr "" "arbitrariamente cambiar su configuración, usted podrÃa acabar con un xine " "totalmente enredado." -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "Temporización para lectura de flujos de bits desde red (en segundos)" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " @@ -6059,67 +6404,67 @@ msgstr "" "fuente es lenta o el ancho de banda está ocupado; valores demasiado altos " "congelarán el reproductor si se pierde la conexión." -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "mensajes" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "complemento" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "traza" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "Aviso:" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "host desconocido:" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "Dispositivo desconocido:" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "Red no alcanzable" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "Conexión rechazada:" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "Fichero no encontrado:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "Error de lectura desde:" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "Error de carga de librerÃa:" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "Detectado flujo de bits de medios encriptado" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "Mensaje de seguridad:" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "Dispositivo de audio no disponible" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "Error de permisos" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "El fichero está vacÃo:" @@ -6139,8 +6484,6 @@ msgstr "" "automáticamente." #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Evaluando métodos \"memcpy\" (menor es mejor):\n" - -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: Versión ASX equivocada: %s\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: xine-lib-1\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2005-02-17 14:29+0100\n" "Last-Translator: Piarres Beobide <pi@beobide.net>\n" "Language-Team: lubrezale <librezale@librezale.org>\n" @@ -54,6 +54,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "%s audio_alsa_out: snd_pcm_open()-ek huts egin du: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" "audio_alsa_out: >>> Egiaztatu beste programa batek PCM darabilkien<<<\n" @@ -173,11 +174,13 @@ msgstr "snd_pcm_open()-ek huts egin du:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Egiaztatu beste programa batek PCM darabilkien<<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "bozgorailu ordenamendua" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -237,78 +240,78 @@ msgstr "" "formats you want to play to your sound card's digital output." #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : Onartutako moduak: " - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8bit " +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : Onartutako moduak:" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16bit" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24bit" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32bit" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "estereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-kanal " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " estereo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4-kanal ez dago gaiturik xine konfigruaketan)" +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-kanal" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1-kanal " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4-kanal ez dago gaiturik xine konfigruaketan)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-kanal ez dago gaiturik xine konfigruaketan)" +msgid " 4.1-channel" +msgstr " 4.1-kanal" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5-kanal " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-kanal ez dago gaiturik xine konfigruaketan)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5-kanal ez dago gaiturik xine konfigruaketan)" +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5-kanal" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1-kanal " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5-kanal ez dago gaiturik xine konfigruaketan)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-kanal ez dago gaiturik xine konfigruaketan)" +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-kanal" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "a/52 eta DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-kanal ez dago gaiturik xine konfigruaketan)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(a/52 eta DTS pass-through ez daude gaiturik xine konfiguraketan)\n" +msgid " a/52 and DTS pass-through" +msgstr " a/52 eta DTS pass-through" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (a/52 eta DTS pass-through ez daude gaiturik xine konfiguraketan)" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "alsa nahasle gailua" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." @@ -316,7 +319,7 @@ msgstr "" "xinek alsa nahaslea erabiliko du bolumena aldatzeko.\n" "Begiratu alsa dokumentazioa alsa gailueri buruzko argibideentzat." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" "xine audio irteera plugina alsa-konpilaturiko audio gailu/kontrolatzailea " @@ -330,211 +333,193 @@ msgstr "xine audio irteera plugina kde artsd erabiliaz" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "xine irteera plugina Coreaudio/Mac OS X-entzat" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 #, fuzzy msgid "Error" msgstr "Errorerik ez" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 #, fuzzy msgid "requested buffer control is not available" msgstr "eskatutako botoia ez da erabilgarri\n" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 #, fuzzy msgid "DirectSound hardware device is unavailable" msgstr "Erabili hardware azelerazioa eskuragarri badago" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 #, fuzzy msgid "requested COM interface not available" msgstr "eskatutako botoia ez da erabilgarri\n" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 #, fuzzy msgid "unknown error" msgstr "Errore ezezaguna" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "" -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "" -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "" - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "" -#: src/audio_out/audio_directx2_out.c:632 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": play cursor overran, flushing buffers\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, fuzzy, c-format msgid ": can't create pthread condition: %s\n" msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, fuzzy, c-format msgid ": can't create pthread mutex: %s\n" msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, fuzzy, c-format msgid ": can't create buffer pthread: %s\n" msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, fuzzy, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, fuzzy, c-format msgid ": unknown control command %d\n" msgstr "iff-ilbm: konpresio ezezaguna: %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 #, fuzzy msgid "second xine audio output plugin using directx" msgstr "xine audio irteera plugina win32-arentzat directx erabiliaz" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "xine audio irteera plugina win32-arentzat directx erabiliaz" @@ -544,6 +529,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: %s ESD zerbitzarira konektatzen: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: esd zerbitzarira konektatzen...\n" @@ -556,7 +542,7 @@ msgstr "audio_esd_out: ezin da %s ESD zerbitzarira konektatu: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "esd audio irteera atzerapena (a/b sinkronia ezarri)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -593,7 +579,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "xine audio irteera plugina IRIX libaudio erabiliaz" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "OSS audio gailu izena" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 #, fuzzy msgid "xine output plugin for JACK Audio Connection Kit" msgstr "xine irteera plugina Coreaudio/Mac OS X-entzat" @@ -620,22 +617,22 @@ msgstr "" msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "audio_oss_out: audio abiadura : %d eskaturik, %d gailuak hornitua\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "OSS audio gailu izena" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "OSS audio gailu zenbakia, -1 batez" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -650,21 +647,23 @@ msgstr "" "balio honen muga -1 eta 0-15 artean dago. Ezarpena hau alde batetar utziko " "da OSS audio gailu izena\"auto\" bezala ezarririk badago." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "" "audio_oss_out: audio.device.oss_device_name = auto, gailuak frogatzen\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: Audio gailu auto-frogak huts egin du\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: Erabilitako gailua >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -673,11 +672,11 @@ msgstr "" "audio_oss_out: huts %s audio gailua irekitzerakoan:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "OSS-k erabilitako a/b sinkronimo metodoa" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -734,7 +733,8 @@ msgstr "" "kontrolatzailerik onartzen eta erreprodukzio luzeetan sinkronismo arazoak " "badituzu" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -746,33 +746,40 @@ msgstr "" "sinkronismoaren ordez\n" "audio_oss_out: ...audio/bideo sinkronismo arazoak egon daitezke\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "OSS audio irteera atzerapena(a/b synk ezarri)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: Audio kontrolatzailearen denbora errealeko sinkronia " -"ezgaitu...\n" -"audio_oss_out: ...irteera bufffer tamaina frogatzen: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d bite\n" +"audio_oss_out: Audio kontrolatzailearen denbora errealeko sinkronia " +"ezgaitu...\n" +"audio_oss_out: ...irteera bufffer tamaina frogatzen: %d bite\n" "audio_oss_out: ...audio/bideo sinkronismo arazoak egon daitezke\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: Onartutako moduak:" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr " a/52 pass-through" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (a/52 pass-through ez daude gaiturik xine konfiguraketan)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "OSS audio nahasle zenbakia, -1 ez erabiltzeko" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -788,26 +795,26 @@ msgstr "" "Balio honen eremua -1 eta 1-15 artekoa da. OSS gailu izena \"auto\" bezala " "ezarririk dagoenean ezarpen hau alde batetara utziko da." -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: huts %s nahaslea abiaraztean: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" "xine audio irteera plugina oss-kompilaturiko audio gailu/kontrolatzailea" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 #, fuzzy msgid "device used for pulseaudio" msgstr "CD audio-k erabiliko duen gailua" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 #, fuzzy msgid "xine audio output plugin using pulseaudio sound server" msgstr "xine audio irteera plugina esound erabiliz" @@ -843,30 +850,185 @@ msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "" "xine audio irteera plugina sun-kompilaturiko audio gailu/kontrolatzailea" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: bufferra%d-ra handitzen askieza sahiesteko.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, fuzzy, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: ezin da deskodetzailea ireki\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: ezin da deskodetzailea ireki\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "dvaudio: bufeera %d -ra handitzen askieza sahiesteko.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: marko formatu onartezina, DR1 ezgaiturik.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, fuzzy, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: marko formatu onartezina, DR1 ezgaiturik.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: ezin da deskodetzailea ireki\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: direct reenderizazioa gaiturik\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_video_dec: bufferra %d -ra handitzen askieza saiesteko.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "MPEG-4 postprozesatze kalitatea" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "libavcodec mpeg irteera bit tasa (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "kalitate modu iraunkorra" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "konpresio txikiena" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" +"Kalitate iraunkorreko kalitate moduko ezarriko den gutxienezko konpresioa." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" +"Kalitate iraunkorreko kalitate moduko ezarriko den gehinezko konpresioa." + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: abisua: id=%d korrontea enkriptaturik dago.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: abisua: id=%d korrontea enkriptaturik dago.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Medioa korrontea nahasi/enkriptaturik" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Indizea bersortzen..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, fuzzy, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "demux_avi: \"%c%c%c%c\" baliogabeko avi zatia %lld kokalekuan\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: avi indizea hautsirik dago\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, fuzzy, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "demux_avi: huts hurrengo zatira pasatzekoan (%lld kokalekua)\n" @@ -876,20 +1038,26 @@ msgstr "demux_avi: huts hurrengo zatira pasatzekoan (%lld kokalekua)\n" msgid "invalid FILM chunk size\n" msgstr "baliogabeko FILMA zati tamaina\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "FILMA zati ezezaguna\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -905,7 +1073,8 @@ msgstr "iff-ilbm: konpresio ezezaguna: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: Zati ezezaguna: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "" @@ -919,6 +1088,7 @@ msgstr "" "garatzaileei.\n" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -939,7 +1109,7 @@ msgstr "" "demux_mpeg_block: kontuz: PES goiburuak korrontea enkriptaturik dagoela " "ezartzen du (enkriptazioa %d modua)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -948,19 +1118,19 @@ msgstr "" "xine-lib:demux_mpeg_pes: 0x%02x korronte_id ezezaguna. MEsedez honen berri " "eman xine garatzaileei.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" "demux_mpeg_pes: kontuz: PACK korronte -aid=0x%x dekodifikatzerakoan huts.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" "demux_mpeg_pes: abisua: PES buruarentzat gorderiko 10 bit ez dira aurkitu\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -969,7 +1139,7 @@ msgstr "" "demux_mpeg_pes: abisua: PES buruak korronte hau enkriptaturik dagoela " "adierazten du (enkriptazio mota: %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -985,17 +1155,18 @@ msgstr "" "ogg: vorbis audio pista esan da baina ez da vorbis korronte bururik " "aurkitu.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: okerreko goiburu parametroa\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: onartzen ez den audio mota: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" @@ -1019,7 +1190,7 @@ msgstr "" msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "demux_wc3movie: Arazo bat dago paleta zatiak kargatzerakoan\n" @@ -1042,6 +1213,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: Huts %s (%s) spu gailua irekitzerakoan\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "eskatutako botoia ez da erabilgarri\n" @@ -1124,6 +1296,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Huts %s (%s) bideo gailua irekitzerakoan\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: gailuan idaztea blokeatuta egon liteke. garbitzen\n" @@ -1138,16 +1311,19 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: KONTUZ: %d marko abiadura kode ezezaguna\n" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" "dxr3_decode_video: ABISUA: marko abiaradura PAT-etik NTSC-ra biurtzen\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: huts librte abiaraztean\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1156,10 +1332,12 @@ msgstr "" "ditzake\n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: huts rte contestua eskuratzerakoan.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: Ezin da kodeka sortu.\n" @@ -1186,6 +1364,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: ezin kodifikazioa abiarazi: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: Ezin da FAME liburutegia abiarazi\n" @@ -1292,18 +1471,22 @@ msgstr "" "zaharkiturik dago beraz exkeutatzean huts egin dezalekete." #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "video_out_dxr3: Mpeg kodetzaile libavcodec huts abiaraztean.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: Mpeg kodetzaile rte huts abiaraztean.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: Mpeg kodetzaile fame huts abiaraztean.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1320,6 +1503,7 @@ msgstr "" "konfigurazioa.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1414,6 +1598,7 @@ msgstr "" "gaitu gainjarpen goi eta beheko aldean lerro orlegiak ikusi ezkero." #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: mesedez autocal abiarazi, gainjarpena ezgaiturik\n" @@ -1438,10 +1623,12 @@ msgstr "" "default: mantendu txartel ezarpenak" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: bideo modu ezarpenak huts egin du.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" @@ -1450,36 +1637,37 @@ msgstr "" "bistaratzeko\n" "video_out_dxr3: README.dxr3 begiratu xehetasunentzat.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: ERROREA gainjarri abiarazte fitxategia irakurtzeab. Run " "abiarazi!\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: Ezin da %s-ra konektatu: %d\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: arrakastatsuki konektaturik cddb zerbitzarira'%s:%d'.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: huts cddb zerbitzarira konektatzerakoan '%s:%d' (%s).\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "CD Audio Digitala (hemen. CDDA)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "CD audio-k erabiliko duen gailua" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." @@ -1487,11 +1675,11 @@ msgstr "" "Gailuaren bidea, arruntean audio CD erreproduzitzeko erabili nahi duzun CD " "edo DVD gailua." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "CDDB galderak" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1504,11 +1692,11 @@ msgstr "" "Izan kontutan zuk ez baduzu CDDB zerbitzari pribatu bat, informazio hau zure " "ohiturak grabatuko dituen internet ostalari batetatik jasoko da." -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "CDDB zerbitzari izena" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1520,20 +1708,20 @@ msgstr "" "entzuteko ohituraz informazioa jaso eta erantzun zitalekin erantzun bait " "dezake. Ziurtatu konfidantza duzun zerbitzari bat izatea." -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "CDDB zerbitzari ataka" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" "Izenburu eta pista informazioa jasotzeko erabiliko den zerbitzari ataka." -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "CDDB katxe karpeta" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1545,11 +1733,11 @@ msgstr "" "sortuko bait dira. Ziurtatu erabiliko den karpeta ez dela honetaz beste " "ezertarako erabiliko." -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "gutxitu diska gailua abiadura faktore honetara" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1563,63 +1751,72 @@ msgstr "" "geldoarazteak ez du ezertan txikiagotzen erreprodukzio kalitatea.\n" "Zero balioa poliagotzea ezgaitzen da." -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, fuzzy, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_dvb: huts '%s' dvb kanal fitxategia irekitzerakoan\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, fuzzy, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_dvb: huts '%s' dvb kanal fitxategia irekitzerakoan\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: irrati_ezarpen_kanalak huts egin du\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: ezin da dvb gailua ireki\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "input_dvb: %d kanala eremutik kanpo, 0-ra lehenesten\n" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: %s kanala bilatzen\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" "input_dvb: ez da %s-ren parekatze zehatzik aurkitu: parekatze hurbilduak " "saiatzen\n" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: %s kanal parekatzea aurkiturik\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, fuzzy, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "input_dvb: %s kanala ez da kanaletan aurkitu, 0 kanalera lehenesten\n" -#: src/input/input_dvb.c:2855 -#, fuzzy +#: src/input/input_dvb.c:2871 +#, fuzzy, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "input_dvb: baliogabeko kanal ezarpena, 0 kanalera lehenesten\n" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "input_dvb: baliogabeko kanal ezarpena, 0 kanalera lehenesten\n" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" @@ -1627,7 +1824,8 @@ msgstr "" "input_dvb: dvbs mrl ezarririk baina sintonizatzailea ez dirudu QPSK (DVB-S) " "dagoenik\n" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" @@ -1635,7 +1833,8 @@ msgstr "" "input_dvb: dvbt mrl ezarririk baina sintonizatzailea ez dirudu OFDM (DVB-T) " "dagoenik\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" @@ -1643,8 +1842,8 @@ msgstr "" "input_dvb: dvbc mrl ezarririk baina sintonizatzailea ez dirudu QAM (DVB-C) " "dagoenik\n" -#: src/input/input_dvb.c:2942 -#, fuzzy +#: src/input/input_dvb.c:2958 +#, fuzzy, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" @@ -1652,21 +1851,21 @@ msgstr "" "input_dvb: dvbc mrl ezarririk baina sintonizatzailea ez dirudu QAM (DVB-C) " "dagoenik\n" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: ezin da '%s' dvr gailua ireki\n" -#: src/input/input_dvb.c:2999 -#, fuzzy +#: src/input/input_dvb.c:3016 +#, fuzzy, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." @@ -1674,67 +1873,86 @@ msgstr "" "Honek pantaila osoko erreprdukzioa 4:3 formatu edukiak 16:9 markotan " "transmititzea gaitzen du." -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "DVB (Telebista Digitala) sarrera plugina" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 #, fuzzy msgid "Last DVB channel viewed" msgstr "bistaratu DVB kanal izena" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 #, fuzzy msgid "Number of dvb card to use." msgstr "audio buffer kopurua" -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Errorea DVD-tik hurrengo blokea eskuratzerakoan (%s)\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Errorea DVD gailua irekitzerakoan\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "DVD-a erreproduzitzeko erabiliko den gailua" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." @@ -1742,11 +1960,11 @@ msgstr "" "DVD-ak erreproduzitzeko erabli nahi duzun, arruntean DVD gailu bat, gaiuaren " "bidea." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "DVD irakurleantzat gailu gordin (raw) ezarpenak" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1757,22 +1975,22 @@ msgid "" "See the documentation on raw device setup (man raw) for further information." msgstr "" -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "CSS desenkriptazio metodoa" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " "scrambled DVDs." msgstr "" -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1781,11 +1999,11 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "DVD erreproduktorean eskatzen duen erregioa (1 - 8)" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " @@ -1795,11 +2013,11 @@ msgstr "" "bakarrik behar da hau. Honek ez du zerikusirik DVD gailuetan ezarritako " "erregio kodearekin, hau software hutsa da." -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "DVD erreprodukzioaren lehenetsirako hizkuntza" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" @@ -1810,22 +2028,22 @@ msgstr "" "hizkuntza honetan emango dira.\n" "Balioak bi karaktereko ISO639 kode bat izan behar da." -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "irakuketa-goiburu gordetzea" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "Ekintza egingo ez den unitatea" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1844,11 +2062,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "Bilatuko den untitatea" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1862,11 +2080,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1878,44 +2096,44 @@ msgid "" "play just the specified title/chapter and then stop" msgstr "" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: irakurketa errorea (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: Baimena ukaturik: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Fitxategia ez da aurkitu: >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, fuzzy, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Fitxategia ez da aurkitu: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "fitxategi sarrera plugina" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "fitxategi kudeatzailearen abiarazte kokalekua" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" "Erreproduzitzeko fitxategi kudeatzailea kokaleu horretan abiaraziko da." -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "bistaratu ezkutatuako fitxategiak" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." @@ -1923,92 +2141,92 @@ msgstr "" "gaiturik dagoenean, fitxategi kudeatzaileak ezkutatutako fitxategia " "bistaraziko ditu." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "gnome-vfs sarrera plugina, xinerekin banatzen dena" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s)-ek huts egin du: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: irekurketa errorea %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "HTTP zerbitzarira konektatzen..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: http erantzun baliogabea\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx birbideratzea: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: http egoera ez da 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, fuzzy, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: eduki luzera = %Ld bite\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, fuzzy, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: irekurketa errorea %d\n" -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "http sarrera plugina" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "HTTP proxy ostalaria" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "HTTP proxy-aren ostalari izena." -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "HTTP proxy ataka" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "HTTP proxy-aren ataka zenbakia." -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "HTTP proxy erabiltzailea" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "HTTP proxy-aren erabiltzaile izena" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "HTTP proxy pasahitza" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "HRRP proxy-aren pasahitza." -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 #, fuzzy msgid "Domains for which to ignore the HTTP proxy" msgstr "Domeinuak, non ez den HTTP proxy-a erabiliko" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -2016,15 +2234,15 @@ msgid "" "(full match required)." msgstr "" -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "mms korronte sarrera plugina" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "sare zabalera" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " @@ -2034,11 +2252,11 @@ msgstr "" "korronte berdinaren konexio zabalera behar duten korronte bertsio ezberdinak " "eskeintzean erabiliko da." -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "MMS protokoloa" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -2066,51 +2284,53 @@ msgstr "input_net: ezin da '%s' ebatzi.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: ezin da '%s'-ra konektatzen.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "sare sarrera plugina, xinerekin anatzen dena" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "pnm korronte sarrera plugina" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: errorea¡pvr fitxategia (%s) sortzerakoan\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: errorea¡pvr fitxategia (%s) irekitzerakoan\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: irakurketa errorea (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: errorea %s gailua irekitzerakoan\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_G_CODEC-ak huts egin du, agian API-a aldatu da?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_S_CODEC-ak huts egin du, agian API-a aldatu da?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "WinTV-PVR 250/350 sarrera plugina" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "WinTV-PVR 250/350 (pvr plugin)-ek erabiliko duen gailua" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "WinTV txartelaren gailuaren bidea." @@ -2163,91 +2383,115 @@ msgstr "Ezin da '%s' lotu.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: geratu irakurketa haria...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: hari irakurketa amaiturik\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Opening >fitxategia:%s ataka:%d interfazea:%s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "RTP eta UDP sarrera plugina, xinerekin banatzen dena" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "rtsp korronte sarrera plugina" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, fuzzy, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: ezin da atzera salto egin! (%lld > %lld)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: ezin da '%s' ireki\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "stdin korronte sarrera plugina" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Buffer gainditzea..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Buffer askieza..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "Egokitzen..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "sintonizatzaile izena ez da aurkitu\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "v4l tv sarrera plugina" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "v4l irrati sarrera plugina" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "v4l bideo gailua" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "Video4Linux bideo gailuaren bidea." -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "v4l irrati gailua" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Video4Linux bideo gailuaren bidea." + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "v4l irrati gailua" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "Video4Linux irrati gailuaren bidea." #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: gaikieraturiko MRL-a. vcdo:/<pista #> erbili\n" @@ -2260,32 +2504,32 @@ msgstr "input_vcd: %d pista baliogabea (baliozko eremua: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "Bideoa CD sarrera plugina" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "Ezin da %s ireki: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: Ezin da %s ireki: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "VCD erreproduzitzeko erabiliko den gailua" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." msgstr "BideoCD-ak erreproduzitzeko erabili nahi duzun gailuaren bidea." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: okerreko mrl-a: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: huts '%s'-ra konektatzerakoan\n" @@ -2296,10 +2540,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: huts %s zerbitzarira konektatzerakoan\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: ezin da saioa sortu.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: ezin da saioa sortu.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2312,44 +2564,45 @@ msgstr "" "input_dvd: %s gailuak huts egin du ateratzen ari den bitartean " "irekitzerakoan\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "MMS zerbitzarira konektatzen (tcp bidez),,," -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: bidalketa errorea\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: okerreko erantzun formatua\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: 3xx berbideraketa ez da onartzen: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: http egoera ez da 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: Kokaleku nbirbideratzea ez da onartzen\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "MMS zerbitzarira konektatzen (http bidez)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "url baliogabea\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "onartzen ez den protokoloa\n" @@ -2358,7 +2611,7 @@ msgstr "onartzen ez den protokoloa\n" msgid "Buffering..." msgstr "Bufferra betetzen..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2367,12 +2620,13 @@ msgstr "" "input_pnm: zerbitzariritik mezua bat jaso da korrontea irakurtzerakoan:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: ezin da '%s' konektatu\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: huts korrotea ezartzerakoan\n" @@ -2413,52 +2667,52 @@ msgstr "" msgid "failed to find a device with a VCD" msgstr "huts VCD bat duen gailu bat bilatzerakoan" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "baliogabeko klase parametroa pasa zen" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "baliogabeko sarrera mota" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" "Bideo CD plugina PBC.rekin eta onarpen hauekin: (X)VCD, (X)SVCD, HQVCD, " "CVD ... " -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "Aukerak ez du RETURN sarrerarik" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 #, fuzzy msgid "DEFAULT selected, but PBC is not on." msgstr "LEHENETSIRIKOA aukeraturik baina PBC ez dago gaiturik." -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "Aukerak ez du HURRENGO sarrerarik" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "Aukerak ez du AURREKO sarrerarik" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "gertaera mota ezezaguna: " -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "Goiko mezuak vcdimager arazpen maila ezezagun bat du" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 #, fuzzy msgid "VCD default type to use on autoplay" msgstr "VCD auto-erreproduzitzea erabiltzeko lehenetsiriko mota" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 #, fuzzy msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " @@ -2467,12 +2721,12 @@ msgstr "" "MRL-an ez ezarri ezkero erabiliko den erreprodukzio unitatea, adib. vcd:// " "edo vcd:///dev/dvd:" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 #, fuzzy msgid "CD-ROM drive used for VCD when none given" msgstr "Lehenetsiriko CD gailya VCD-entzat ematen ez denean" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." @@ -2480,31 +2734,31 @@ msgstr "" "Zein erabili gailurik ez ezartzean. Ezarpen hau hutsik utzi ezkero xinek " "gailu guztietan bilatuko du." -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 #, fuzzy msgid "VCD position slider range" msgstr "posizio graduatzaile bitartea" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 #, fuzzy msgid "VCD read-ahead caching?" msgstr "irakuketa-goiburu gordetzea" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 #, fuzzy msgid "automatically advance VCD track/entry" msgstr "automatikoki aurrera pista/sarrera" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." @@ -2512,24 +2766,24 @@ msgstr "" "Gaiturik dagoenean, hurrengo sarrera edo pista automatikoki erreproduzituko " "du. Erreprodukzio kontrola (PBC) ezgaiturik dagoenean bakarrik erabiliko da." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 #, fuzzy msgid "show 'rejected' VCD LIDs" msgstr "bistaratu ukaturiko LID-ak" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 #, fuzzy msgid "VCD format string for display banner" msgstr "Bistaratze banerraren kate formatua" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2550,12 +2804,12 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 #, fuzzy msgid "VCD format string for stream comment field" msgstr "Korronte iruzkin eremuaren kate formatua" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 #, fuzzy msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " @@ -2567,12 +2821,12 @@ msgstr "" "Formatu espezifikazioakehuneko ikur bates hasten dira. Ezpezifikazioak: %A, %" "C, %c, %F, %I, %L, %N, %P, %p, %S, %T, %V, %v, eta %%." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 #, fuzzy msgid "VCD debug flag mask" msgstr "arazpen bandera maskara" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2589,7 +2843,8 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "LAGUNTZA! mono bakarrik audio kontrolatzailea?\n" @@ -2628,148 +2883,33 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:128 -#, fuzzy +#: src/libfaad/xine_faad_decoder.c:132 +#, fuzzy, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad faacDecOpen()-ek huts egin du.\n" -#: src/libfaad/xine_faad_decoder.c:137 -#, fuzzy +#: src/libfaad/xine_faad_decoder.c:141 +#, fuzzy, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad faacDecInit2-ek huts egin du.\n" -#: src/libfaad/xine_faad_decoder.c:148 -#, fuzzy +#: src/libfaad/xine_faad_decoder.c:152 +#, fuzzy, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad faacDecInit-ek huts egin du.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: bufferra%d-ra handitzen askieza sahiesteko.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:253 -#, fuzzy -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: ezin da deskodetzailea ireki\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: ezin da deskodetzailea ireki\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: bufeera %d -ra handitzen askieza sahiesteko.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: marko formatu onartezina, DR1 ezgaiturik.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -#, fuzzy -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: marko formatu onartezina, DR1 ezgaiturik.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: ezin da deskodetzailea ireki\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: direct reenderizazioa gaiturik\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: bufferra %d -ra handitzen askieza saiesteko.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "MPEG-4 postprozesatze kalitatea" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "libavcodec mpeg irteera bit tasa (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "kalitate modu iraunkorra" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "konpresio txikiena" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" -"Kalitate iraunkorreko kalitate moduko ezarriko den gutxienezko konpresioa." - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "" -"Kalitate iraunkorreko kalitate moduko ezarriko den gehinezko konpresioa." - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "" @@ -2798,79 +2938,81 @@ msgstr "" "dekodifikatzeko. Begiratu XINE FAQ dokumentua kodek horiek nola instalaturi " "buruzko argibide gehiagorako." -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" "libreal: Errorea sinboloak ebazterakoan! (bertsio bateragarritasun eza?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (audio) Ezin dira sinboloak ebatzi - dll bateraezina: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "libareal: huts deskodetzailea abiaraztekoan, errore kodea: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" "libareal: deskodetzaile zapore konfigurazio hutsa, errore kodea: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "bistaratu itxitako izenburuak MPEG-2 korronteetan" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" "Itxitako Tituluak (closed caption) normalean entzumen arazoak dituztenei " "laguntzeko azpitituluak dira." -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "Itxitako-tituluen atzealdeko eskema" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Aukeratu itxitako tituluentzat gustoko duzun errendarizatzailea." -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "Lehenetsitako itxitako titulu letra-tipoa" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Aukeratu ixtitako titulu testuarentzat lehenetsitako letra-tipoa." -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "etzandako itxitako izenburu letra-tipoa" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "Aukeratu etzandako itxitako tituluen letra-tipoa." -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "Itxitako izenburuen letra-tamaina" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "Aukeratuko itxitako tituluen letra tamaina" -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "erdira-doitu itxitako tituluak" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." @@ -2878,23 +3020,23 @@ msgstr "" "Gaiturik daudenean, itxitako titulu testua lerro bakoitzean erdiratu egingo " "da." -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "Kanpo azpitituluen letra-tipoa" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "azpititulu kokapen bertikala (panataila tamainaren arabera)" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "Apititulu kodifikatzea" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "azpititulu bistaratze denbora segundutan" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " @@ -2904,11 +3046,11 @@ msgstr "" "Hauentzat lehenetsitako iraupena ezarri dezakezu hemen. Zero bezala " "ezartzean azpititulu bakoizta hurrengo azpititulu arte bistaraziko da." -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "azpititulu tamaina" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." @@ -2916,11 +3058,11 @@ msgstr "" "Azpititulu tamaina ezarri dezakezi hemen. Ezarpenak panatailaren tamainaren " "arabera ulertuko dira." -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "azpititulu mugimetu bertikala" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." @@ -2928,33 +3070,33 @@ msgstr "" "Azpitituluen kokapen bertikala ezarri dezakezu hemen.Ezarpenak panatailaren " "tamainaren arabera ulertuko dira." -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "Azpitituluen letra-tipoa" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" "Xine letra-tipo karpetako letra-tipo bat erabili daiteke azpititulu " "testuetarako." -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 #, fuzzy msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" "Xine letra-tipo karpetako letra-tipo bat erabili daiteke azpititulu " "testuetarako." -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "azpitituluen kodifikazioa" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2966,11 +3108,11 @@ msgstr "" "badira zuk espero bezala bistaratzen, galdetu azpititulu sortzaileari zein " "kodeketa erabiltzen duen." -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "erabili eskalagabeko OSD posible bada" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -3066,22 +3208,22 @@ msgstr "w32codec: Errorea DMO Audioa abiarazterakoan\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: errorea ByteRun1 dekonpresioa egiterakoan\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 ez da onartzen momentuz\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 ez da onartzen momentuz\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ ez da onartzen momentuz\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: Animazio-mota ahu ez da onartzen momentu honetan\n" @@ -3119,6 +3261,7 @@ msgid "" msgstr "" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr "" @@ -3130,6 +3273,7 @@ msgstr[0] "" msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr "" @@ -3143,7 +3287,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3157,6 +3301,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3196,7 +3343,8 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "tvtime: Ez dago elkargurutzatur modurik eskuragarri, irteten.\n" @@ -3238,7 +3386,7 @@ msgid "" "The available selections should be self-explaining." msgstr "" -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3380,7 +3528,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3392,7 +3540,7 @@ msgstr "" "Parametroak\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3400,7 +3548,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3432,146 +3580,149 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "xine bideo irteera plugina AsCii Arte liburutegia erabiliaz" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "xine bideo irteera plugina Kolore AsCii Arte liburutegia erabiliaz" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." msgstr "" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1530 -#, fuzzy +#: src/video_out/video_out_directfb.c:1526 +#, fuzzy, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_vidix: egokigailuak yuy2 formatua onartzen du\n" -#: src/video_out/video_out_directfb.c:1539 -#, fuzzy +#: src/video_out/video_out_directfb.c:1535 +#, fuzzy, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_syncfb: info. (SyncFB moduluak YUY2 onartzen du)\n" -#: src/video_out/video_out_directfb.c:1546 -#, fuzzy +#: src/video_out/video_out_directfb.c:1542 +#, fuzzy, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_syncfb: info. (SyncFB moduluak YUY2 onartzen du)\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 #, fuzzy msgid "video layer id (auto: -1)" msgstr "bideo saturazioa" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, fuzzy, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_vidix: erabilitako kontrolatzailea: %s, %s-rena\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 #, fuzzy msgid "xine video output plugin using DirectFB." msgstr "xine bideo irteera plugina DirectFB liburutegia erabiliaz" -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 #, fuzzy msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "xine bideo irteera plugina DirectFB liburutegia erabiliaz" -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "xine bideo irteera plugina win32-rentzat directx erabiliaz" @@ -3582,11 +3733,11 @@ msgid "" " Check 'fbset -i' or try 'fbset -depth 16'.\n" msgstr "" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "framebuffer gailu izena" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3599,6 +3750,7 @@ msgstr "" "balioaegiazko framebuffer gailu bat dela ziurtatu behar duzu." #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Bideo modua ez da ezagutzen, barkatu.\n" @@ -3617,6 +3769,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3638,11 +3791,11 @@ msgstr "Xine bideo irteera plugina Linux framebuffer gailua erabiliaz" msgid "xine video output plugin which displays nothing" msgstr "xine bideo irteera plugina ezer bistaratzeko" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3671,35 +3824,35 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" msgstr "" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "gaitu buffer bikoitza" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 #, fuzzy msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "xine bideo irteera OpenGL - TNG erabiliaz" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3714,6 +3867,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "video_out_pgx32: Errorea: '%s' ez da pgx32 framebuffer gailua\n" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3738,36 +3892,40 @@ msgstr "" "video_out_pgx64: Errorea: '%s' ez da xvr100/pgx64/pgx24 framebuffer gailua\n" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" "video_out_pgx64: Errorea: pantaila honetako bideo ingurunea erabilia dago\n" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "video_out_pgx64: Errorea: ezin dira leiho propietateak ezarri\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" "video_out_pgx64: Abisua: bideo memoria baxua, buffer-anitza ezgaiturik\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Errorea: Bideo memoria askieza\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: Abisua: bideo memoria baxua, buffer-bikoitza ezgaiturik\n" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Errorea: ioctl hutsa (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "" @@ -3800,11 +3958,11 @@ msgstr "" "Buffer anitzek performantzia betzen dute baina memoria grafiko gehiago " "erabiliaz." -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "Erabili hardware azelerazioa eskuragarri badago" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " @@ -3814,16 +3972,18 @@ msgstr "" "azelerazioa erbailikiko da. Honek agian ez du funtzionatzen, beraz zerbait " "oker joan ezkero ezgaitu ezazu." -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" "sdl-ek ez ditu 16 bit gainazalak emulatu, honek gauzak geldot ditzake.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: pantaila osoko modua EZ da onartzen\n" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "xine video irteera plugina \"Simple Direct Media Layer\" erabiliaz" @@ -3832,36 +3992,44 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "xine video output plugina \"Libstk Surface Set-top Toolkit\" erabiliaz" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "video_out_syncfb: errorea. (txartela grafikoak ez du YUY2 onartzen)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "video_out_syncfb: errorea. (txartela grafikoak ez du YV12 onartzen)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" "video_out_syncfb: info. (SyncFB moduluak YUV 4:2:0 (3 plano) onartzen du)\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" "video_out_syncfb: info. (SyncFB moduluak YUV 4:2:0 (2 plano) onartzen du)\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "video_out_syncfb: info. (SyncFB moduluak YUV 4:2:2 onartzen du)\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: info. (SyncFB moduluak YUY2 onartzen du)\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: info. (SyncFB moduluak RGB565 onartzen du)\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" @@ -3869,36 +4037,37 @@ msgstr "" "video_out_syncfb: uzten. (SyncFB moduluak ez du YV12, YUY2 edo RGB565 " "onartzen)\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " "README.syncfb for informations on how to update it.)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "marko errepikatze lehenetsiriko kopurua" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "" "Bideo marko bat gelditu gabe zenbat aldiz errepikatu behar den ezartzen du." -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "xine bideo irteera plugina Matrox G200/G400 txartelen SyncFB modulua " "erabiliaz" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "SyncFB gailu izena" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3910,102 +4079,106 @@ msgstr "" "xinek fitxategia eduki arbitrario bat erabiliaz bete bait dezake. Beraz " "balioaegiazko framebuffer gailu bat dela ziurtatu behar duzu." -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "intentsitate gorria" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "Gorri koloreko osagaien intentsitatea." -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "intentsitate berdea" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "Berde koloreko osagaien intentsitatea." -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "Intentsitate urdina" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "Urdin koloreko osagaien intentsitatea." -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: egokigailuak yuy2 formatua onartzen du\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: egokigailuak yv12 formatua onartzen du\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: VIDIX liburutegiaren okerreko bertsio bat duzu\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: Ezin da dabilen VIDIX kontrolatzailerik\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: erabilitako kontrolatzailea: %s, %s-rena\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "bideo ingurune kolore teklaren gorri osagaia" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "bideo ingurune kolore teklaren berde osagaia" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "bideo ingurune kolore teklaren urdin osagaia" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "xine bideo irteera plugina libvidix X11-rentzat erabiliaz" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "" "xine bideo irteera plugina libvidix Linux Frame buffer-arentzat erabiliaz" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -4015,47 +4188,60 @@ msgid "" "\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1111 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1114 +#, fuzzy, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: MIT partekatutako memoria luzapena ez dago pantailan.\n" -#: src/video_out/video_out_xcbshm.c:1210 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1213 +#, fuzzy, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: bideo modua ez da ezagutzen, barkatu :-(\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1289 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1354 +#, fuzzy, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xv: Xv luzapena ez dago.\n" -#: src/video_out/video_out_xcbxv.c:1331 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, fuzzy, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4066,71 +4252,42 @@ msgstr "" "erabilgarririkaurkitu.\n" " Dirudienez zure txartela grafikoak ez du Xv onartzen?!\n" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" msgstr "" -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "eskalatze modu bilinearra" - -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1507 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1579 +#, fuzzy, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: adaptadoreak yv12 formatua onartzen du.\n" -#: src/video_out/video_out_xcbxv.c:1512 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1584 +#, fuzzy, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: adaptadoreak yuy2 formatua onartzen du.\n" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "ez-elkarlituriko metodoa (zaharkiturik)" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4168,75 +4325,90 @@ msgid "" "with medium CPU usage." msgstr "" -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "xine bideo irteera plugina MIT X bideo luzapena erabiltzen" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: MIT partekatutako memoria luzapena ez dago pantailan.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: bideo modua ez da ezagutzen, barkatu :-(\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: Xv luzapena ez dago.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4246,91 +4418,101 @@ msgstr "" "erabilgarririkaurkitu.\n" " Dirudienez zure txartela grafikoak ez du Xv onartzen?!\n" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: adaptadoreak yv12 formatua onartzen du.\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: adaptadoreak yuy2 formatua onartzen du.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "xineo bideo irteera plugina XvMC X bideo luzapena erabiltzen" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: XvMC luzapena ez dago.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" " for hardware colour space conversion and scaling\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " ez da XvMC onartzen \n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2380 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2432 +#, fuzzy, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xvmc: XvMC luzapena ez dago.\n" -#: src/video_out/video_out_xxmc.c:2417 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2476 +#, fuzzy, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4340,96 +4522,99 @@ msgstr "" "erabilgarririkaurkitu.\n" " Dirudienez zure txartela grafikoak ez du Xv onartzen?!\n" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2602 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2649 +#, fuzzy, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: adaptadoreak yv12 formatua onartzen du.\n" -#: src/video_out/video_out_xxmc.c:2607 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2654 +#, fuzzy, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: adaptadoreak yuy2 formatua onartzen du.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "" -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "" -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" "x11osd: errorea leihoa sorzterakoan, eskala gabeko gainjarria ezgaiturik.\n" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" "x11osd: errorea pixel mapa sorzterakoan, eskala gabeko gainjarria " @@ -4440,6 +4625,71 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: eskala gabeko gainjarria sorturik (%s modua).\n" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "" + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "eskalatze modu bilinearra" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +#, fuzzy +msgid "Xv port number" +msgstr "sarrera zenbaki okerra" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +msgid "bicubic filtering" +msgstr "" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "" @@ -4474,35 +4724,39 @@ msgid "" "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" "audio_out: atzerapena kalkulatzea ezinezko audio gailu eskuraezin batekin\n" -#: src/xine-engine/audio_out.c:1248 -#, fuzzy +#: src/xine-engine/audio_out.c:1249 +#, fuzzy, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" "Hus soinu txartelan idazterakoan. Konektatu gabeko USB gailu bat ote?\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "kontrolatzaileak ez du 8bit onartzen, 16bit-era bihurtzen.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "kontrolatzaileak ez du mono onartzen, estereo-ra bihurtzen.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "kontrolatzaileak ez du estereo onartzen, mono-ra bihurtzen.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "audioa eta bideoa sinkronizatzeko metodoa" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4525,11 +4779,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4537,33 +4791,33 @@ msgid "" "automatically when necessary." msgstr "" -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4571,24 +4825,25 @@ msgid "" "audio post plugin instead." msgstr "" -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "abiarazterakoan audio bolumena" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "Xine abiaraztean ezarriko den audio bolumena." -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "berezarri tamaina maila abiaraztean" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "ezgaiturik badago, xine-k ez ditu nahasle ezarpenak aldatuko abiaraztean." -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "audio_out: barkatu, hau ez zen gertatu beharko. mesedez xine berrabiarazi.\n" @@ -4598,47 +4853,48 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" "Konfigurazio fitxategia xine-ren bertsio berriagobategatik aldatua izan da." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" "configfile: ABISUA: %s-en konfigurazio fitxategia segurtasun kopia egiten\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: ABISUA: zure konfigurazioa ezin da gorde\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: ABISUA: huts %s konfigurazioa gordetzerakoan\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" "configfile: ABISUA: agian apurturiko %s konfigurazio fitxategia ezabatzen\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "" "configfile: ABISUA: zuk segurtasun kopia %s fitxategia egiaztatu beharko " "zenuke\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: ¡'%s' sarrera ezin MRL-tik aldatu\n" #: src/xine-engine/info_helper.c:228 -#, fuzzy +#, fuzzy, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "osd: ezin da irteera karaktere jokoa aurkitu\n" @@ -4669,7 +4925,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: huts sarrera pluginetik irakirtzerakoan\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, fuzzy, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: errorea %lld fitxategian idazterakoan, byte-ak: %s\n" @@ -4694,19 +4950,19 @@ msgstr "input_rip: bilaketak huts egin du: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %lld byte alde batetara utzirik\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: sarrera pluginia ez ezarririk!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " "'media.capture.save_dir'\n" msgstr "" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -4714,12 +4970,12 @@ msgstr "" "korreonte grabaketa aukera ezgaiturik dago konfigruaketan media.capture." "save_dir ezarri arte." -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" @@ -4727,12 +4983,12 @@ msgstr "" "xine ez dago jatorri horretatik grabatzeko gaiturik (kopia eskubidedun " "materiala agian?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: ez da fitxategi izena eman!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: errorea %s fitxategia irekitzerakoan: %s\n" @@ -4771,7 +5027,7 @@ msgstr "io_helper: Konexioa Ukaturik\n" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" @@ -4779,68 +5035,68 @@ msgstr "" "load_plugins: %s plugina alde batetara utzi, okerreko iface bertsioa %d (%d " "espero zen)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "%s deskodetzailearen lehentasuna" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " "the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: %s plugin aurkitu dira\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, fuzzy, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: %s plugin aurkitu dira\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: plugin muga gainditu da, %s ezin da kargatu\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "load_plugins: plugin muga gainditu da, %s ezin da kargatu\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: %d plugin mota ezezaguna %s-n\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, fuzzy, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: %d plugin mota ezezaguna %s-n\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: ezin da %s identifikatu\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4849,7 +5105,7 @@ msgstr "" "load_plugins: ezin da %s plugin liburutegia ireki:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -4858,39 +5114,40 @@ msgstr "" "load_plugins: ezin da %s-eko plugin informazio eskuratu:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: alde batetara uzten %s plugin karpeta irakurtezina.\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" "%s\n" msgstr "" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: %d eduki atzemate estrategia ezezaguna\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: huts <%s> audio irteera plugina kargatzerakoan\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -4898,7 +5155,7 @@ msgstr "" "load_plugins: audio irteera auto-frogak ez du adio kontrolatzailerik " "aurkitu.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, fuzzy, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4907,165 +5164,173 @@ msgstr "" "load_plugins: ezin da %s plugin liburutegia ireki:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "'%s-%d' letra-tipoa dagoeneko kargaturik, bitxia.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "huts '%s' letra tipoa kargatzerakoan (%d < %d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "" "'%s' letra tipoaren okerreko bertsioa. %d espero zen baina %d aurkitu da.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: ezin da ft2 liburutegia abiarazi\n" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, fuzzy, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: errorea glyph %i kargatzerakoan\n" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" "osd: errorea letra-tipo tamaina ezarpenean (letra-tipo ez eskalagarria?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " "skipping\n" msgstr "" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: ezin da irteera karaktere jokoa aurkitu\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: ez da moldatzea onartzen: %s -> %s, ez da moldatuko\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: letra-tipoa ez dago ezarririk\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: errorea glyph kargatzerkaoan\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: errorea glyph reenderizatzerakoan\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: errorea glyph %i kargatzerakoan\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: errorea reenderizatzerakoan\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "" "OSD eta azpitituluetan erabiliko den paleta (aurreko-ertza-atzeko koloreak)" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: ez dago pluginik '%s' kudeatzeko\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: errorea, buffer mota ezezaguna: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "bideo buffer kopurua" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " "(diff : %<PRId64>).\n" msgstr "" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 #, fuzzy msgid "default number of video frames" msgstr "marko errepikatze lehenetsiriko kopurua" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "onartzen den alde batetara utziko marko kopuru ehunekoa" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "onartzen den alde batetara utziko marko kopuru ehunekoa" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out: barkatu, hau ez zen gertatu beharko. mesedez xine berrabiarazi.\n" @@ -5109,135 +5374,148 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: errorea mrl analizatzerakoan\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: input plugin-a aurkiturik : %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: sarrera pluginak ezin du MRL-a [%s] ireki\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: ezin da [%s] MRL-aren plugina aurkitu\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "bidoa alde batetara uzten\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "audioa alde batetara uzten\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "azpi-irudia alde batetara uzten\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "'%s' azpititulu mrl-a irekirik\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: errorea azpititulu mrl-a irekitzerakoan\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: errorea MRL-analizatzerakoan\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "xine: MRL-ko '%s' aukera aldaketa ez da onartzen\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" "xine: Ezarritako \"%s\" gordetze karpeta (save_dir) segurtasun arrisku bat " "izan daiteke.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" "Ezarritako gordetze karpeta (save_dir) segurtasun arrisku bat izan daiteke." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: lokala ez du C liburutegiak onartzen\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "medio formatu atzemate modua" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5266,11 +5544,11 @@ msgstr "" "extension\n" "Izen luzapen bidez bakarrik atzemna.\n" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "korronteak gordetzeko karpeta" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5280,11 +5558,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "Onartu aldaketa inplizitoak konfiguraketan (adib. MRL bidez)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5294,84 +5572,84 @@ msgid "" "configuration, you might end with a totally messed up xine." msgstr "" -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "mezuak" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "plugina" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "aztarna" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 #, fuzzy msgid "Unknown host:" msgstr "ostalari ezezaguna" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 #, fuzzy msgid "Unknown device:" msgstr "gertaera mota ezezaguna: " -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 #, fuzzy msgid "Connection refused:" msgstr "io_helper: Konexioa Ukaturik\n" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 #, fuzzy msgid "File not found:" msgstr "io_helper: Fitxategia ez da aurkitu\n" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 #, fuzzy msgid "Error loading library:" msgstr "osd: errorea glyph kargatzerkaoan\n" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 #, fuzzy msgid "Audio device unavailable" msgstr "Sun audio gailu izena" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "" @@ -5387,66 +5665,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "memcpy metodoak frogatzen (txeikiena obea da)\n" - -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: Okerreko ASX bertsioa: %s\n" - -#, fuzzy -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "input_rtp: Ezin da hari berria sortu (%s)\n" - -#~ msgid "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) failed.\n" -#~ msgstr "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) hutsa.\n" - -#~ msgid "video brightness" -#~ msgstr "bideo distira" - -#~ msgid "The brightness of the video image." -#~ msgstr "Bideo imagenaren distira." - -#~ msgid "The saturation of the video image." -#~ msgstr "Bideo irudiaren saturazioa" - -#~ msgid "brightness correction" -#~ msgstr "distira zuzentzea" - -#~ msgid "" -#~ "The brightness correction can be used to lighten or darken the image. It " -#~ "changes the blacklevel without modifying the contrast, but it limits the " -#~ "tonal range." -#~ msgstr "" -#~ "Distira zuzenketa irudia argitu edo iluntzeko erabili daiteke. Berauk " -#~ "kontrastea aldatu gabe beltz maila aldatzen du, baina tonalitate eremua " -#~ "murrizten du." - -#~ msgid "Do we use read-ahead caching?" -#~ msgstr "Irakurketa-goiburu katxea erabili nahi al duzu?" - -#~ msgid "audio_oss_out: open() %s failed: %s\n" -#~ msgstr "audio_oss_out: open() %s huts egin du: %s\n" - -#~ msgid "" -#~ "This will display the current channel name in xine's on-screen-display. " -#~ "Menu button 7 will disable this temporarily." -#~ msgstr "" -#~ "Honek erreproduzitzen aru den kanal izen xine leihoan bistaratuko du. " -#~ "Menuko 7 botoiak hau denbora batez ezgaituko du." - -#~ msgid "" -#~ "A Comma separated list of domain names, where the proxy is to be ignored." -#~ msgstr "" -#~ "Domeinu izenen gakoz bereizitako zarrenda, non proxy zerbitzaria ez den " -#~ "erabiliko." - -#~ msgid "selection has no DEFAULT entry" -#~ msgstr "Aukerak ez du LEHENETSIRIKO sarrerarik" - -#~ msgid "" -#~ "You can disable video scaling globally. The image will then no longer " -#~ "adapt to the size of the video window, which can dramatically reduce CPU " -#~ "usage." -#~ msgstr "" -#~ "Bideo eskalatzea orokorrean ezgaitu dezakezu. Irudia ez da gehiago bideo " -#~ "leihoaren tamainaren arabera aldatuko, CPU erabilera asko murriztuz." @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xine-lib 1.1.9\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2008-01-01 15:18+0100\n" "Last-Translator: Christophe Giraud <chris256gnu@gmail.com>\n" "Language-Team: french <fr@li.org>\n" @@ -52,8 +52,10 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() de %s a echoué: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" -msgstr "audio_alsa_out: >>> Vérifie si un autre programme utilise déjà PCM <<<\n" +msgstr "" +"audio_alsa_out: >>> Vérifie si un autre programme utilise déjà PCM <<<\n" #: src/audio_out/audio_alsa_out.c:393 #, c-format @@ -74,9 +76,9 @@ msgid "" "notification so that it can update its graphical representation of the mixer " "settings on the fly." msgstr "" -"A chaque modification du mixeur matériel , votre application recevra " -"une notification afin qu'elle puisse automatiquement mettre à jour " -"sa représentation graphique du mixeur ." +"A chaque modification du mixeur matériel , votre application recevra une " +"notification afin qu'elle puisse automatiquement mettre à jour sa " +"représentation graphique du mixeur ." #: src/audio_out/audio_alsa_out.c:1361 #, c-format @@ -93,9 +95,10 @@ msgid "" "You can try enabling it and check, if everything works. If it does, this " "will increase performance." msgstr "" -"Activez ceci si votre carte son et votre pilote alsa supportent memory mapped IO.\n" -"Essayez de l'activer et contrôlez que tout fonctionne correctement.Si c'est le cas," -"cela augmentera les performances ." +"Activez ceci si votre carte son et votre pilote alsa supportent memory " +"mapped IO.\n" +"Essayez de l'activer et contrôlez que tout fonctionne correctement.Si c'est " +"le cas,cela augmentera les performances ." #: src/audio_out/audio_alsa_out.c:1378 msgid "device used for mono output" @@ -107,8 +110,8 @@ msgid "" "See the alsa documentation for information on alsa devices." msgstr "" "xine utilisera ce périphérique alsa pour la sortie son mono.\n" -"Voir la documentation alsa pour toutes informations complémentaires " -"sur les périphériques alsa." +"Voir la documentation alsa pour toutes informations complémentaires sur les " +"périphériques alsa." #: src/audio_out/audio_alsa_out.c:1387 msgid "device used for stereo output" @@ -120,8 +123,8 @@ msgid "" "See the alsa documentation for information on alsa devices." msgstr "" "xine utilisera ce périphérique alsa pour la sortie son stéréo.\n" -"Voir la documentation alsa pour toutes informations complémentaires " -"sur les périphériques alsa" +"Voir la documentation alsa pour toutes informations complémentaires sur les " +"périphériques alsa" #: src/audio_out/audio_alsa_out.c:1396 msgid "device used for 4-channel output" @@ -132,8 +135,10 @@ msgid "" "xine will use this alsa device to output 4 channel (4.0) surround sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -"xine utilisera ce périphérique alsa pour la sortie son 4 canaux ( 4.0 ) surround.\n" -"Voir la documentation alsa pour toutes informations complémentaires sur les périphériques alsa." +"xine utilisera ce périphérique alsa pour la sortie son 4 canaux ( 4.0 ) " +"surround.\n" +"Voir la documentation alsa pour toutes informations complémentaires sur les " +"périphériques alsa." #: src/audio_out/audio_alsa_out.c:1406 src/audio_out/audio_alsa_out.c:1416 msgid "device used for 5.1-channel output" @@ -145,9 +150,10 @@ msgid "" "sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -"xine utilisera ce périphérique alsa pour la sortie son 5 canaux plus LFE (5.1) " -"surround.\n" -"Voir la documentation alsa pour toutes informations complémentaires sur les périphériques alsa." +"xine utilisera ce périphérique alsa pour la sortie son 5 canaux plus LFE " +"(5.1) surround.\n" +"Voir la documentation alsa pour toutes informations complémentaires sur les " +"périphériques alsa." #: src/audio_out/audio_alsa_out.c:1417 msgid "" @@ -155,9 +161,10 @@ msgid "" "This can be used be external surround decoders.\n" "See the alsa documentation for information on alsa devices." msgstr "" -"xine utilisera ce périphérique alsa pour une sortie son numérique surround non décodée. " -"Celle-ci peut être utilisée par un décodeur surround externe.\n" -"Voir la documentation alsa pour toutes informations complémentaires sur les périphériques alsa." +"xine utilisera ce périphérique alsa pour une sortie son numérique surround " +"non décodée. Celle-ci peut être utilisée par un décodeur surround externe.\n" +"Voir la documentation alsa pour toutes informations complémentaires sur les " +"périphériques alsa." #: src/audio_out/audio_alsa_out.c:1437 #, c-format @@ -169,11 +176,13 @@ msgstr "snd_pcm_open() a échoué:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Vérifie si un autre programme utilise déjà PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "Arrangement des haut-parleurs" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -204,122 +213,127 @@ msgid "" "xine. You need to connect a digital surround decoder capable of decoding the " "formats you want to play to your sound card's digital output." msgstr "" -"Choisissez parmi les choix suivants selon les haut-parleurs à votre disposition , " -"Cela déterminera quels haut-parleurs xine utilisera pour la sortie son. " -"Les valeurs individuelles sont:\n" +"Choisissez parmi les choix suivants selon les haut-parleurs à votre " +"disposition , Cela déterminera quels haut-parleurs xine utilisera pour la " +"sortie son. Les valeurs individuelles sont:\n" "\n" "Mono 1.0: Vous avez seulement un haut-parleur.\n" -"Stereo 2.0: Vous avez deux haut-parleurs , un pour le canal gauche et un pour " -" le canal droit\n" +"Stereo 2.0: Vous avez deux haut-parleurs , un pour le canal gauche et un " +"pour le canal droit\n" "Headphones 2.0: Vous utilisez un casque audio.\n" -"Stereo 2.1: Vous avez deux haut-parleurs: 1 gauche et 1 droit, plus un subwoofer " -"pour les basses fréquences.\n" -"Surround 3.0: Vous avez trois haut-parleurs : 1 avant gauche et 1 avant droit, " -"plus un arrière.\n" -"Surround 4.0: Vous avez quatre haut-parleurs : 1 avant gauche , 1 avant droit, " -"1 arrière gauche et 1 arrière droit.\n" -"Surround 4.1: Vous avez quatre haut-parleurs : 1 avant gauche, 1 avant droit, " -"1 arrière gauche et 1 arrière droit, plus un subwoofer pour les basses fréquences.\n" +"Stereo 2.1: Vous avez deux haut-parleurs: 1 gauche et 1 droit, plus un " +"subwoofer pour les basses fréquences.\n" +"Surround 3.0: Vous avez trois haut-parleurs : 1 avant gauche et 1 avant " +"droit, plus un arrière.\n" +"Surround 4.0: Vous avez quatre haut-parleurs : 1 avant gauche , 1 avant " +"droit, 1 arrière gauche et 1 arrière droit.\n" +"Surround 4.1: Vous avez quatre haut-parleurs : 1 avant gauche, 1 avant " +"droit, 1 arrière gauche et 1 arrière droit, plus un subwoofer pour les " +"basses fréquences.\n" "Surround 5.0: Vous avez cinq haut-parleurs : 1 avant gauche, 1 avant droit, " "1 voie centrale, 1 arrière gauche et 1 arrière droit.\n" "Surround 5.1: Vous avez cinq haut-parleurs : 1 avant gauche, 1 avant droit, " -"1 voie centrale, 1 arrière gauche et 1 arrière droit, plus un subwoofer " -"pour les basses fréquences .\n" -"Surround 6.0: Vous avez six haut-parleurs : 1 avant gauche, 1 avant droit, " -"1 voie centrale avant, 1 arrière gauche, 1 arrière droit et 1 voie centrale arrière.\n" -"Surround 6.1: Vous avez six haut-parleurs : 1 avant gauche, 1 avant droit, " -"1 voie centrale avant, 1 arrière gauche, 1 arrière droit et 1 voie centrale arrière, " -"plus un subwoofer pour les basses fréquences.\n" +"1 voie centrale, 1 arrière gauche et 1 arrière droit, plus un subwoofer pour " +"les basses fréquences .\n" +"Surround 6.0: Vous avez six haut-parleurs : 1 avant gauche, 1 avant droit, 1 " +"voie centrale avant, 1 arrière gauche, 1 arrière droit et 1 voie centrale " +"arrière.\n" +"Surround 6.1: Vous avez six haut-parleurs : 1 avant gauche, 1 avant droit, 1 " +"voie centrale avant, 1 arrière gauche, 1 arrière droit et 1 voie centrale " +"arrière, plus un subwoofer pour les basses fréquences.\n" "Surround 7.1: Vous avez sept haut-parleurs : 1 avant gauche, 1 avant droit, " -"1 voie centrale avant droite et 1 avant gauche, 1 arrière gauche et 1 arrière droit, " -"plus un subwoofer pour les basses fréquences.\n" +"1 voie centrale avant droite et 1 avant gauche, 1 arrière gauche et 1 " +"arrière droit, plus un subwoofer pour les basses fréquences.\n" "Pass Through: Votre système de son recevra un signal numérique non décodé " -"provenant de xine .Vous aurez besoin de connecter un décodeur numérique " -" surround capable de traiter le signal envoyé par votre carte son. " +"provenant de xine .Vous aurez besoin de connecter un décodeur numérique " +"surround capable de traiter le signal envoyé par votre carte son. " #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : les modes supportés sont " +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : les modes supportés sont" -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16bit" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24bit" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32bit " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32bit" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "stéréo " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " stéréo" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-canaux" +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-canaux" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(sortie 4 canaux non activée dans la configuration de xine)" - -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "sortie 4.1 canaux" +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (sortie 4 canaux non activée dans la configuration de xine)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(sortie 4.1 canaux non activée dans la configuration de xine)" +msgid " 4.1-channel" +msgstr " sortie 4.1 canaux" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "Sortie 5 canaux" +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (sortie 4.1 canaux non activée dans la configuration de xine)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(Sortie 5 canaux non activée dans la configuration de xine)" +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " Sortie 5 canaux" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "Sortie 5.1 canaux" +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (Sortie 5 canaux non activée dans la configuration de xine)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(Sortie 5.1 canaux non activée dans la configuration de xine)" +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " Sortie 5.1 canaux" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (Sortie 5.1 canaux non activée dans la configuration de xine)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(a/52 et DTS pass-through non activés dans la configuration de xine)\n" +msgid " a/52 and DTS pass-through" +msgstr " a/52 et DTS pass-through" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (a/52 et DTS pass-through non activés dans la configuration de xine)" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "périphérique du mixeur alsa" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." msgstr "" "xine utilisera ce périphérique du mixeur alsa pour changer le volume.\n" -"Voir la documentation alsa pour toutes informations complémentaires sur les périphériques alsa." +"Voir la documentation alsa pour toutes informations complémentaires sur les " +"périphériques alsa." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" -msgstr "plugin de sortie audio xine utilisant les pilotes/périphériques compatible alsa " +msgstr "" +"plugin de sortie audio xine utilisant les pilotes/périphériques compatible " +"alsa " #: src/audio_out/audio_arts_out.c:371 msgid "xine audio output plugin using kde artsd" @@ -329,205 +343,187 @@ msgstr "plugin de sortie audio xine utilisant arts de kde" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "plugin de sortie audio xine pour Coreaudio/Mac OS X" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "Erreur" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "succès" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "accès interdit" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "la ressource est déjà en cours d'utilisation" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "L'objet était déjà initialisé" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "Le format wave spécifié n'est pas supporté" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "le tampon mémoire a été perdu et doit être restauré" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "Le contrôle du buffer requis n'est pas disponible" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "Erreur interne indéterminée du sous-système DirectSound" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "Le périphérique matériel DirectSound est indisponible" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "La fonction n'est pas valide pour l'état actuel de l'objet" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "Un paramètre invalide a été passé" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "L'objet ne supporte pas l'agrégation" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "pas de pilote son disponible" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "L'interface COM requise n'est pas disponible" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "une autre application a un niveau de priorité plus élevé" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "mémoire insuffisante" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "Niveau de priorité bas pour cette fonction" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "DirectSound n'était pas initialisé" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "cette fonction n'est pas supportée" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "erreur inconnue" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "Impossible de créer l'objet direct sound." -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "" -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "Impossible de créer un second tampon pour direct sound " -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "" - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "Impossible d'obtenir une notification de l'interface" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "Ne peut pas utiliser le buffer audio" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "Ne peut pas stopper le buffer audio" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "Ne peut pas obtenir la position du buffer" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "Ne peut pas ajuster la position du buffer" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "Impossible de régler le volume sonore" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": buffer perdu, tentative de restauration\n" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "Impossible de verrouiller le buffer de direct sound" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "Impossible de déverrouiller le buffer de direct sound" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "incapable d'allouer le buffer d'entré." -#: src/audio_out/audio_directx2_out.c:632 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": play cursor overran, flushing buffers\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr ": retardé de %ld msec\n" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": ne peux pas créer la condition pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": ne peut pas créer pthread mutex: %s\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": ne peut pas créer le pthread du buffer: %s\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": ne peut pas détruire le pthread du buffer: %s\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ":ne peut pas détruire la condition pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": ne peut pas détruire pthread mutex: %s\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr ": commande inconnu %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "second plugin de sortie audio xine utilisant directx" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "plugin de sortie audio xine pour win32 utilisant directx" @@ -537,6 +533,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: connexion au serveur ESD en cours %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: connexion au serveur esd en cours...\n" @@ -549,14 +546,14 @@ msgstr "audio_esd_out: ne peut pas se connecter au %s serveur ESD: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "Temps de latence de la sortie audio esd (ajustement de a/v sync) " -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -"Si vous rencontrez des problèmes de synchronisation du son par rapport a la vidéo, " -"Vous pouvez entrer une valeur de décalage fixe pour compenser.\n" +"Si vous rencontrez des problèmes de synchronisation du son par rapport a la " +"vidéo, Vous pouvez entrer une valeur de décalage fixe pour compenser.\n" "L'unité de valeur est un PTS tick, ce qui représente 1/90000 de seconde." #: src/audio_out/audio_esd_out.c:572 @@ -583,7 +580,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "plugin de sortie audio xine utilisant IRIX libaudio" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "Nom du périphérique audio OSS" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "plugin de sortie audio xine pour JACK Audio Connection Kit" @@ -598,19 +606,22 @@ msgstr "audio_oss_out: Ouverture du périphérique audio %s: %s\n" #: src/audio_out/audio_oss_out.c:218 #, c-format -msgid "audio_oss_out: warning: sampling rate %d Hz not supported, trying 44100 Hz\n" -msgstr "audio_oss_out: Attention: un taux d'échantillonage de %d Hz n'est pas supporté , essayez 44100 Hz\n" +msgid "" +"audio_oss_out: warning: sampling rate %d Hz not supported, trying 44100 Hz\n" +msgstr "" +"audio_oss_out: Attention: un taux d'échantillonage de %d Hz n'est pas " +"supporté , essayez 44100 Hz\n" #: src/audio_out/audio_oss_out.c:230 #, c-format msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "Nom du périphérique audio OSS" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" @@ -618,13 +629,14 @@ msgid "" msgstr "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" -"Choisissez \"auto\" si vous voulez que xine détecte automatiquement le réglage adéquat." +"Choisissez \"auto\" si vous voulez que xine détecte automatiquement le " +"réglage adéquat." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -634,20 +646,22 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: utilise le périphérique >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -656,11 +670,11 @@ msgstr "" "audio_oss_out: l'ouverture du périphérique audio %s a échouée:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "méthode A/V sync à utiliser par OSS" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -690,35 +704,44 @@ msgid "" "ioctls and you experience sync errors after long playback" msgstr "" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "Temps de latence de la sortie audio OSS (ajustement de a/v sync) " -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out : les modes supportés sont" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr " a/52 pass-through" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (a/52 pass-through non activé dans la configuration de xine)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -728,24 +751,26 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: l'ouverture() du mixeur %s a échouée: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" -msgstr "plugin de sortie audio xine utilisant les pilotes/périphériques audio compatible oss" +msgstr "" +"plugin de sortie audio xine utilisant les pilotes/périphériques audio " +"compatible oss" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "périphérique utilisé pour pulseaudio" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" msgstr "plugin de sortie audio xine utilisant le serveur de son pulseaudio" @@ -773,32 +798,196 @@ msgstr "audio_sun_out: audio ioctl sur le périphérique %s a échoué: %s\n" #: src/audio_out/audio_sun_out.c:1022 msgid "xine audio output plugin using sun-compliant audio devices/drivers" -msgstr "plugin de sortie audio xine utilisant les pilotes/périphériques compatible sun" +msgstr "" +"plugin de sortie audio xine utilisant les pilotes/périphériques compatible " +"sun" + +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"ffmpeg_audio_dec: augmentation du buffer à %d pour éviter sa saturation.\n" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "dvaudio: augmentation du buffer à %d pour éviter sa saturation.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"ffmpeg_video_dec: augmentation du buffer à %d pour éviter sa saturation.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "Qualité du post-traitement MPEG-4" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"Vous pouvez ajuster le niveau de post-traitement a appliqué au vidéo MPEG-" +"4.\n" +"De hautes valeurs donnent une meilleure qualité d'image mais sollicite " +"davantage le processeur.De faibles valeurs peuvent provoquer une dégradation " +"de l'image comme par exemple l'apparition d'artefacts. Dans le cas d'une " +"vidéo de haute qualité, un post-traitement trop important peut actuellement " +"dégrader l'image en la rendant plus floue . " + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: attention: Le flux id=%d est crypté.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: attention: Le flux id=%d est crypté.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Flux média brouillé/crypté" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Restauration de l'index..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: l'index avi est corrompu\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -808,20 +997,26 @@ msgstr "" msgid "invalid FILM chunk size\n" msgstr "" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "aucun flux audio ou vidéo n'est présent dans ce fichier.\n" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -837,7 +1032,8 @@ msgstr "iff-ilbm: compression inconnue: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "" @@ -849,7 +1045,9 @@ msgid "" msgstr "" #: src/demuxers/demux_mpeg_block.c:305 -msgid "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" +#, c-format +msgid "" +"demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" #: src/demuxers/demux_mpeg_block.c:637 @@ -863,58 +1061,65 @@ msgid "" "demux_mpeg_block: warning: PES header indicates that this stream may be " "encrypted (encryption mode %d)\n" msgstr "" -"demux_mpeg_block: attention: l'entête PES indique que ce flux peut être crypté " -"(mode de cryptage %d)\n" +"demux_mpeg_block: attention: l'entête PES indique que ce flux peut être " +"crypté (mode de cryptage %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " "to xine developers.\n" -msgstr "xine-lib:demux_mpeg_pes: stream_id 0x%02x non reconnu. Veuillez reporter ceci aux développeurs xine.\n" +msgstr "" +"xine-lib:demux_mpeg_pes: stream_id 0x%02x non reconnu. Veuillez reporter " +"ceci aux développeurs xine.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " "encrypted (encryption mode %d)\n" msgstr "" -"demux_mpeg_block: attention: l'entête PES indique que ce flux peut être crypté " -"(mode de cryptage %d)\n" +"demux_mpeg_block: attention: l'entête PES indique que ce flux peut être " +"crypté (mode de cryptage %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " "xine developers.\n" -msgstr "demux_mpeg_pes:Flux privé non reconnu 1 0x%02x. Veuillez reporter ceci aux développeurs xine.\n" +msgstr "" +"demux_mpeg_pes:Flux privé non reconnu 1 0x%02x. Veuillez reporter ceci aux " +"développeurs xine.\n" #: src/demuxers/demux_ogg.c:805 #, c-format msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" -msgstr "ogg: piste audio vorbis indiquée mais aucune entête de flux vorbis n'a été trouvée.\n" +msgstr "" +"ogg: piste audio vorbis indiquée mais aucune entête de flux vorbis n'a été " +"trouvée.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: type audio non supporté: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" @@ -925,7 +1130,8 @@ msgstr "" #: src/demuxers/demux_voc.c:118 #, c-format -msgid "unknown VOC compression type (0x%02X); please report to xine developers\n" +msgid "" +"unknown VOC compression type (0x%02X); please report to xine developers\n" msgstr "" #: src/demuxers/demux_wc3movie.c:190 @@ -933,7 +1139,7 @@ msgstr "" msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "" @@ -954,6 +1160,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "" @@ -1017,9 +1224,11 @@ msgstr "" #: src/dxr3/dxr3_decode_video.c:545 #, c-format msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" -msgstr "dxr3_decode_video: L'ouverture du périphérique vidéo a echouée %s (%s)\n" +msgstr "" +"dxr3_decode_video: L'ouverture du périphérique vidéo a echouée %s (%s)\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "" @@ -1034,24 +1243,30 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "" #: src/dxr3/dxr3_decode_video.c:760 -msgid "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" +#, c-format +msgid "" +"dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "" @@ -1076,6 +1291,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: ne peut pas démarrer l'encodage: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "" @@ -1126,7 +1342,8 @@ msgid "use smooth play mode for mpeg encoder playback" msgstr "" #: src/dxr3/video_out_dxr3.c:272 -msgid "Enabling this option will utilise a smoother play mode for non-MPEG content." +msgid "" +"Enabling this option will utilise a smoother play mode for non-MPEG content." msgstr "" #: src/dxr3/video_out_dxr3.c:280 @@ -1158,18 +1375,22 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1180,6 +1401,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1259,6 +1481,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "" @@ -1277,43 +1500,46 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" msgstr "" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: ne peut pas se connecter à %s:%d\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: serveur cddb '%s:%d' connecté avec succés.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: impossible de se connecter au serveur cddb '%s:%d' (%s).\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "périphérique utilisé pour les cd audio" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." @@ -1321,11 +1547,11 @@ msgstr "" "Le chemin d'accès vers le périphérique, généralement un lecteur CD ou DVD, " "choisissez celui que vous souhaitez utiliser pour lire vos CD audio." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1334,11 +1560,11 @@ msgid "" "listening habits." msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "Nom du serveur CDDB" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1346,19 +1572,19 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "Port du serveur CDDB " -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1366,11 +1592,11 @@ msgid "" "used for anything but CDDB caching." msgstr "" -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1379,160 +1605,194 @@ msgid "" "A value of zero here will disable the slowdown." msgstr "" -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, fuzzy, c-format msgid "input_dvb: tuner_set_channel failed\n" +msgstr "input_cda: fopen(%s) à échoué: %s\n" + +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" msgstr "" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: ne peux pas ouvrir le périphérique dvb\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: recherche pour le canal %s\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" msgstr "" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" msgstr "" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: ne peut pas ouvrir le périhérique dvr '%s'\n" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." msgstr "" -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "" -#: src/input/input_dvb.c:3306 -msgid "Leave this at zero unless you really have more than 1 card in your system." +#: src/input/input_dvb.c:3326 +msgid "" +"Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Erreur à l'ouverture du périphérique DVD\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "périphérique utilisé pour la lecture des DVD" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." @@ -1540,11 +1800,11 @@ msgstr "" "Le chemin d'accès vers le périphérique, généralement un lecteur CD ou DVD, " "choisissez celui que vous souhaitez utiliser pour lire vos DVD ." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1555,22 +1815,22 @@ msgid "" "See the documentation on raw device setup (man raw) for further information." msgstr "" -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " "scrambled DVDs." msgstr "" -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1579,44 +1839,44 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." msgstr "" -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "langue par défaut pour la lecture des DVD" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1635,11 +1895,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1653,11 +1913,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1669,135 +1929,135 @@ msgid "" "play just the specified title/chapter and then stop" msgstr "" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: erreur de lecture (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: Permission refusée: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Fichier non trouvé: >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Fichier vide: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "lister les fichiers cachés" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "" -"Si activé, le navigateur qui vous permet de sélectionner " -"les fichiers à jouer vous montrera également ceux qui sont cachés." +"Si activé, le navigateur qui vous permet de sélectionner les fichiers à " +"jouer vous montrera également ceux qui sont cachés." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "plugin d'entré gnome-vfs fourni avec xine" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s) a echoué: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: erreur de lecture %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "Connexion au serveur HTTP..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: réponse http invalide\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx redirection: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: buffer épuisé après %d bytes." -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "plugin d'entré http" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "Le nom d'hôte pour le proxy HTTP." -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -1805,26 +2065,26 @@ msgid "" "(full match required)." msgstr "" -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." msgstr "" -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "Protocole MMS" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -1850,51 +2110,55 @@ msgstr "input_net: impossible de résoudre '%s'.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: impossible de se connecter à '%s'.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "plugin d'entré réseau fournis avec xine" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: erreur à la création du fichier pvr (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: erreur à l'ouverture du fichier pvr (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: erreur de lecture (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: erreur à l'ouverture du périphérique %s\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" -msgstr "input_pvr: IVTV_IOC_G_CODEC a échoué, peut-être que l' API a changé ?\n" +msgstr "" +"input_pvr: IVTV_IOC_G_CODEC a échoué, peut-être que l' API a changé ?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" -msgstr "input_pvr: IVTV_IOC_S_CODEC a échoué, peut-être que l' API a changé ?\n" +msgstr "" +"input_pvr: IVTV_IOC_S_CODEC a échoué, peut-être que l' API a changé ?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "plugin d'entré WinTV-PVR 250/350" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "périphérique utilisé pour WinTV-PVR 250/350 (pvr plugin)" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "Le chemin d'accès vers le périphérique de votre carte WinTV." @@ -1947,91 +2211,115 @@ msgstr "incapable de se connecter à '%s'.\n" msgid "recv(): %s.\n" msgstr "" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: arrêt de la lecture du thread...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "plugin d'entré RTP et UDP fournis avec xine" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "plugin d'entré CIFS/SMB basé sur libsmbclient" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: impossible d'ouvrir '%s'\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "" -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "" -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "" -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Tuner non trouvé\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "plugin d'entré tv V4l" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "plugin d'entré radio v4l" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "périphérique vidéo v4l" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "Le chemin d'accès vers votre périphérique vidéo Video4Linux" -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "périphérique radio v4l" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Le chemin d'accès vers votre périphérique vidéo Video4Linux" + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "périphérique radio v4l" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "Le chemin d'accès vers votre périphérique radio Video4Linux" #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: MRL mal formée. Utilisez vcdo:/<track #>\n" @@ -2044,21 +2332,21 @@ msgstr "input_vcd: piste %d invalide (limites correctes: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "plugin d'entré Video CD" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "incapable d'ouvrir %s: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: incapable d'ouvrir %s: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "périphérique utilisé pour la lecture des VCD" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." @@ -2066,12 +2354,12 @@ msgstr "" "Le chemin d'accès vers le périphérique, généralement un lecteur CD ou DVD, " "choisissez celui que vous souhaitez utiliser pour lire vos VideoCD ." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: mauvaise mrl: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: impossible de se connecter à '%s'\n" @@ -2082,57 +2370,68 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: impossible de se connecter au serveur %s\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: la session ne peut pas être établie.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: la session ne peut pas être établie.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" -msgstr "rtsp_session: ce type de serveur rtsp '%s' n'est pas encore supporté. Désolé.\n" +msgstr "" +"rtsp_session: ce type de serveur rtsp '%s' n'est pas encore supporté. " +"Désolé.\n" #: src/input/media_helper.c:148 #, c-format msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "Connexion au serveur MMS (over tcp)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: mauvais format de réponse\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: 3xx redirection non effectuée: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "" -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "" @@ -2141,19 +2440,20 @@ msgstr "" msgid "Buffering..." msgstr "" -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" "%s\n" msgstr "" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: impossible de se connecter '%s'\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "" @@ -2193,104 +2493,106 @@ msgstr "" msgid "failed to find a device with a VCD" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1014 -msgid "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " +#: src/input/vcd/xineplug_inp_vcd.c:1012 +msgid "" +"Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "type d'évènement inconnu:" -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1861 -msgid "range that the stream playback position slider represents playing a VCD." +#: src/input/vcd/xineplug_inp_vcd.c:1859 +msgid "" +"range that the stream playback position slider represents playing a VCD." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2311,11 +2613,11 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2323,11 +2625,11 @@ msgid "" "See the help for the title_format for the meanings of these." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2344,7 +2646,8 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "" @@ -2383,147 +2686,33 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:128 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad NeAACDecOpen() a échoué.\n" -#: src/libfaad/xine_faad_decoder.c:137 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad NeAACDecInit2 a échoué.\n" -#: src/libfaad/xine_faad_decoder.c:148 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad NeAACDecInit a échoué.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: augmentation du buffer à %d pour éviter sa saturation.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: augmentation du buffer à %d pour éviter sa saturation.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: augmentation du buffer à %d pour éviter sa saturation.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "Qualité du post-traitement MPEG-4" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"Vous pouvez ajuster le niveau de post-traitement a appliqué au vidéo MPEG-4.\n" -"De hautes valeurs donnent une meilleure qualité d'image mais sollicite davantage " -"le processeur.De faibles valeurs peuvent provoquer une dégradation de l'image " -"comme par exemple l'apparition d'artefacts. Dans le cas d'une vidéo de haute " -"qualité, un post-traitement trop important peut actuellement dégrader l'image " -"en la rendant plus floue . " - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "" - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "" @@ -2546,144 +2735,147 @@ msgid "" "information on how to install the codecs." msgstr "" -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "" -#: src/libspucc/xine_cc_decoder.c:190 -msgid "Closed Captions are subtitles mostly meant to help the hearing impaired." +#: src/libspucc/xine_cc_decoder.c:196 +msgid "" +"Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "" -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " "in the subtitle being shown until the next one takes over." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2691,11 +2883,11 @@ msgid "" "used." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -2739,12 +2931,14 @@ msgstr "" #: src/libw32dll/w32codec.c:684 #, c-format -msgid "w32codec: DS_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" +msgid "" +"w32codec: DS_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" msgstr "" #: src/libw32dll/w32codec.c:695 #, c-format -msgid "w32codec: DMO_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" +msgid "" +"w32codec: DMO_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" msgstr "" #: src/libw32dll/w32codec.c:815 src/libw32dll/w32codec.c:1484 @@ -2777,22 +2971,22 @@ msgstr "" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "" @@ -2823,6 +3017,7 @@ msgid "" msgstr "" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr "" @@ -2834,6 +3029,7 @@ msgstr[0] "" msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr "" @@ -2847,7 +3043,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -2861,6 +3057,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -2900,7 +3099,8 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "" @@ -2940,7 +3140,7 @@ msgid "" "The available selections should be self-explaining." msgstr "" -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3059,7 +3259,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3067,13 +3267,13 @@ msgid "" "\n" msgstr "" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3105,139 +3305,146 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "plugin de sortie video xine utilisant la bibliothèque ascii-art" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "plugin de sortie video xine utilisant la bibliothèque Color AsCii Art" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." msgstr "" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1557 -msgid "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" +#: src/video_out/video_out_directfb.c:1553 +#, c-format +msgid "" +"video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "plugin de sortie vidéo xine utilisant DirectFB." -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "plugin de sortie vidéo xine utilisant DirectFB sous XDirectFB." -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "plugin de sortie vidéo xine pour win32 utilisant directx" @@ -3248,11 +3455,11 @@ msgid "" " Check 'fbset -i' or try 'fbset -depth 16'.\n" msgstr "" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "Nom du périphérique framebuffer" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3261,6 +3468,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "" @@ -3279,6 +3487,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3294,17 +3503,18 @@ msgstr "" #: src/video_out/video_out_fb.c:1067 msgid "Xine video output plugin using the Linux frame buffer device" -msgstr "plugin de sortie video xine utilisant le périphérique framebuffer de linux" +msgstr "" +"plugin de sortie video xine utilisant le périphérique framebuffer de linux" #: src/video_out/video_out_none.c:277 msgid "xine video output plugin which displays nothing" msgstr "plugin de sortie video xine qui n'affiche rien" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3333,34 +3543,34 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" msgstr "" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "plugin de sortie vidéo xine utilisant l'API graphique 3D OpenGL" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3375,51 +3585,65 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" #: src/video_out/video_out_pgx64.c:296 #, c-format msgid "video_out_pgx64: Error: can't open framebuffer device '%s'\n" -msgstr "video_out_pgx64: Erreur: ne peut pas ouvrir le périphérique framebuffer '%s'\n" +msgstr "" +"video_out_pgx64: Erreur: ne peut pas ouvrir le périphérique framebuffer '%" +"s'\n" #: src/video_out/video_out_pgx64.c:303 #, c-format -msgid "video_out_pgx64: Error: ioctl failed (VIS_GETIDENTIFIER), bad device (%s)\n" -msgstr "video_out_pgx64: Erreur: ioctl a échoué (VIS_GETIDENTIFIER), mauvais périphérique (%s)\n" +msgid "" +"video_out_pgx64: Error: ioctl failed (VIS_GETIDENTIFIER), bad device (%s)\n" +msgstr "" +"video_out_pgx64: Erreur: ioctl a échoué (VIS_GETIDENTIFIER), mauvais " +"périphérique (%s)\n" #: src/video_out/video_out_pgx64.c:316 #, c-format -msgid "video_out_pgx64: Error: '%s' is not a xvr100/pgx64/pgx24 framebuffer device\n" -msgstr "video_out_pgx64: Erreur: '%s' n'est pas un périphérique framebuffer xvr100/pgx64/pgx24\n" +msgid "" +"video_out_pgx64: Error: '%s' is not a xvr100/pgx64/pgx24 framebuffer device\n" +msgstr "" +"video_out_pgx64: Erreur: '%s' n'est pas un périphérique framebuffer xvr100/" +"pgx64/pgx24\n" #: src/video_out/video_out_pgx64.c:337 -msgid "video_out_pgx64: Error: video overlay on this screen is already in use\n" +#, c-format +msgid "" +"video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Erreur: ioctl a échoué (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "" @@ -3450,93 +3674,106 @@ msgid "" "memory." msgstr "" -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "plugin de sortie video xine utilisant Simple Direct Media Layer" #: src/video_out/video_out_stk.c:452 msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" -msgstr "plugin de sortie video xine utilisant le toolkit Libstk Surface Set-top" +msgstr "" +"plugin de sortie video xine utilisant le toolkit Libstk Surface Set-top" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " "README.syncfb for informations on how to update it.)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "" -#: src/video_out/video_out_syncfb.c:1058 -msgid "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" +#: src/video_out/video_out_syncfb.c:1070 +msgid "" +"xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3544,101 +3781,106 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "plugin de sortie vidéo xine utilisant libvidix pour x11" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" -msgstr "plugin de sortie video xine utilisant libvidix pour le framebuffer linux" +msgstr "" +"plugin de sortie video xine utilisant libvidix pour le framebuffer linux" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3648,42 +3890,59 @@ msgid "" "\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -3691,69 +3950,42 @@ msgid "" "Xv?!\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "Certains pilotes vidéo buggés ont besoin d'un workaround ( une solution de rechange/contournement ) pour fonctionner correctement." - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -3791,256 +4023,288 @@ msgid "" "with medium CPU usage." msgstr "" -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "plugin de sortie video xine utilisant l'extension video MIT X" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "plugin de sortie video xine utilisant l'extension video XvMC " -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" " for hardware colour space conversion and scaling\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "" -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "" -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" @@ -4049,6 +4313,72 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "" + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +msgid "Xv port number" +msgstr "" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" +"Certains pilotes vidéo buggés ont besoin d'un workaround ( une solution de " +"rechange/contournement ) pour fonctionner correctement." + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +msgid "bicubic filtering" +msgstr "" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "" @@ -4083,31 +4413,37 @@ msgid "" "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1109 -msgid "audio_out: delay calculation impossible with an unavailable audio device\n" +#: src/xine-engine/audio_out.c:1110 +#, c-format +msgid "" +"audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4130,11 +4466,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4142,33 +4478,33 @@ msgid "" "automatically when necessary." msgstr "" -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4176,23 +4512,24 @@ msgid "" "audio post plugin instead." msgstr "" -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "" -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" @@ -4201,47 +4538,50 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "" #: src/xine-engine/info_helper.c:242 #, c-format -msgid "info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n" +msgid "" +"info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n" msgstr "" #: src/xine-engine/input_cache.c:170 @@ -4265,7 +4605,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: la lecture par le plugin d'entré a echoué\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "" @@ -4290,41 +4630,41 @@ msgstr "input_rip: la recherche a échouée: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " "'media.capture.save_dir'\n" msgstr "" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." msgstr "" -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" msgstr "" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: erreur à l'ouverture du fichier %s: %s\n" @@ -4363,73 +4703,74 @@ msgstr "io_helper: Connexion refusée\n" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format -msgid "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" +msgid "" +"load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" msgstr "" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " "the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4438,52 +4779,53 @@ msgstr "" "load_plugins: impossible d'ouvrir plugin lib %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" "%s\n" msgstr "" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" "%s\n" msgstr "" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: utilise le demuxer '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: impossible de charger le plugin de sortie audio <%s>\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" msgstr "" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4492,161 +4834,169 @@ msgstr "" "load_plugins: ne peut pas décharger plugin lib %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " "skipping\n" msgstr "" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: conversion non supportée %s -> %s, pas de conversion effectuée\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " "(diff : %<PRId64>).\n" msgstr "" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" @@ -4689,132 +5039,145 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: plugin d'entré trouvé : %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: le plugin d'entré ne peut pas ouvrir la MRL [%s]\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: erreur à l'ouverture des sous-titres de la mrl\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -4832,11 +5195,11 @@ msgid "" "Detect by file name extension only.\n" msgstr "" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -4846,11 +5209,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -4860,78 +5223,78 @@ msgid "" "configuration, you might end with a totally messed up xine." msgstr "" -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "messages" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "plugin" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "Attention:" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "Hôte inconnu:" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "Périphérique inconnu:" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "Réseau inaccessible" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "Connexion refusée:" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "Fichier non trouvé:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "Erreur de lecture provenant de:" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "Flux média crypté détecté" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "Message de sécurité:" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "Périphérique audio non disponible" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "Erreur de permission" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "Le fichier est vide:" @@ -4947,989 +5310,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "" - -#, fuzzy -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: copyright : %s\n" - -#, fuzzy -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n" - -#, fuzzy -#~ msgid "audio_oss_out: open() %s failed: %s\n" -#~ msgstr "input_cda: open(%s) a échoué: %s.\n" - -#, fuzzy -#~ msgid "device used for 5+ channel output" -#~ msgstr "périphérique utilisé pour la sortie 5 canaux" - -#~ msgid "used to inform xine about what the sound card can do" -#~ msgstr "Utilisé pour informer xine de ce que la carte son sait faire" - -#~ msgid "Adjust a/v sync for OSS softsync" -#~ msgstr "Ajuste a/v sync pour softsync d'OSS" - -#~ msgid "Use this to manually adjust a/v sync if you're using softsync" -#~ msgstr "" -#~ "A utiliser pour ajuster automatiquement a/v sync si vous utilisez softsync" - -#~ msgid "Enable 4.0 channel analog surround output" -#~ msgstr "Active la sortie surround analogique 4.0 canaux" - -#~ msgid "Enable 5.0 channel analog surround output" -#~ msgstr "Active la sortie surround analogique 5.0 canaux" - -#~ msgid "Enable 5.1 channel analog surround output" -#~ msgstr "Active la sortie surround analogique 5.1 canaux" - -#, fuzzy -#~ msgid "OSS mixer device" -#~ msgstr "périphérique du mixeur oss" - -#~ msgid "device used for audio output with the 'Sun' audio plugin" -#~ msgstr "Périphérique utilisé pour le plugin audio 'Sun'" - -#, fuzzy -#~ msgid "input_cdda: cannot connect to host.\n" -#~ msgstr "input_net: impossible de se connecter à '%s'.\n" - -#, fuzzy -#~ msgid "input_cdda: unable to resolve '%s'.\n" -#~ msgstr "input_net: impossible de resoudre '%s'.\n" - -#, fuzzy -#~ msgid "input_cdda: unable to connect to '%s'.\n" -#~ msgstr "input_net: impossible de se connecter à '%s'.\n" - -#~ msgid "/dev/dsp# device to use for oss output, -1 => auto_detect" -#~ msgstr "" -#~ "périphérique /dev/dsp# a utiliser pour la sortie oss, -1 => détection auto" - -#~ msgid "" -#~ "demux_mpeg_block: too many errors, stopping playback. Maybe this stream " -#~ "is scrambled?\n" -#~ msgstr "" -#~ "demux_mpeg_block: trop d'erreurs, arrêt de la lecture. Ce flux est peut " -#~ "être crypté ?\n" - -#, fuzzy -#~ msgid "RTP: waiting for preview data\n" -#~ msgstr "metronom: attente de démarrage vidéo...\n" - -#~ msgid "Opening >%s<\n" -#~ msgstr "Ouvre >%s<\n" - -#~ msgid "Enable A52 / AC5 digital audio output via spdif" -#~ msgstr "Active la sortie audio numérique A52 / AC5 par spdif" - -#, fuzzy -#~ msgid "demux_wc3movie: encountered unknown chunk: %c%c%c%c\n" -#~ msgstr "demux_film: codec vidéo inconnu '%c%c%c%c'\n" - -#, fuzzy -#~ msgid "input_http: timeout\n" -#~ msgstr "input_file: erreur de lecture (%s)\n" - -#~ msgid "OUCH - ran out of buffers\n" -#~ msgstr "AILLE - débordement de buffers.\n" - -#~ msgid "OUCH - dropped input packet %d %d\n" -#~ msgstr "AILLE - saute les pacquet %d %d\n" - -#~ msgid "rtp input plugin as shipped with xine" -#~ msgstr "plugin d'entrée rtp fournis avec xine" - -#~ msgid "demux_mpgaudio: no audio driver!\n" -#~ msgstr "demux_mpgaudio: pas de pilote audio!\n" - -#~ msgid "input_cda: ioctl(CDROM_MEDIA_CHANGED) failed: %s.\n" -#~ msgstr "input_cda: l'ioctl(CDROMSUBCHNL) a échouée: %s.\n" - -#~ msgid "input_cda: No rights to open %s.\n" -#~ msgstr "input_cda: pas de droits pour ouvrir %s.\n" - -#~ msgid "input_cda: error seek to origin %d not implemented!\n" -#~ msgstr "input_cda: erreur seek depuis origine %d non implémentée!\n" - -#~ msgid "cd audio plugin as shipped with xine" -#~ msgstr "plugin d'entrée pour lecture de CD audio fournis avec xine" - -#~ msgid "demux_qt: Apple Quicktime file, %srunning time: %d min, %d sec\n" -#~ msgstr "" -#~ "demux_qt: Fichier Apple Quicktime, %stemps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "demux_qt: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_qt: audio '%c%c%c%c' @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_film: FILM version %c%c%c%c, running time: %d min, %d sec\n" -#~ msgstr "" -#~ "demux_film: Fichier FILM %c%c%c%c, temps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "demux_film: %c%c%c%c video @ %dx%d, %d Hz playback clock\n" -#~ msgstr "demux_film: '%c%c%c%c' video @ %dx%d, %d Hz\n" - -#, fuzzy -#~ msgid "demux_fli: %d frames, %dx%d\n" -#~ msgstr "demux_fli: %d taille de trame vidéo %d x %d\n" - -#, fuzzy -#~ msgid "demux_fli: running time: %d min, %d sec\n" -#~ msgstr "demux_wav: Fichier WAV, temps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "demux_smjpeg: SMJPEG file, running time: %d min, %d sec\n" -#~ msgstr "demux_smjpeg: Fichier SMJPEG, temps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "demux_smjpeg: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_smjpeg: video '%c%c%c%c' @ %dx%d\n" - -#, fuzzy -#~ msgid "demux_smjpeg: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_smjpeg: audio '%c%c%c%c' @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_wav: format 0x%X audio, %d Hz, %d bits/sample, %d %s\n" -#~ msgstr "demux_wav: audio 0x%X @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_wav: running time = %lld min, %lld sec\n" -#~ msgstr "demux_wav: Fichier WAV, temps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "demux_aiff: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_qt: audio '%c%c%c%c' @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_aiff: running time: %d min, %d sec\n" -#~ msgstr "demux_wav: Fichier WAV, temps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "demux_snd: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_qt: audio '%c%c%c%c' @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_snd: running time: %d min, %d sec\n" -#~ msgstr "demux_wav: Fichier WAV, temps d'execution: %d min, %d sec\n" - -#, fuzzy -#~ msgid "" -#~ "demux_voc: VOC format 0x%X audio, %d Hz, running time: %d min, %d sec\n" -#~ msgstr "demux_wav: audio 0x%X @ %d Hz, %d bits, %d %s\n" - -#~ msgid "xine audio output plugin using arts-compliant audio devices/drivers" -#~ msgstr "" -#~ "plugin de sortie audio de xine utilisant les pilotes/périphériques arts" - -#~ msgid "demux_ts: error %02x %02x %02x (should be 0x000001)\n" -#~ msgstr "demux_ts: erreur %02x %02x %02x (devrais être 0x000001)\n" - -#~ msgid "demux_ts: unexpected cc %d (expected %d)\n" -#~ msgstr "demux_ts: cc inattendu %d (%d attendu)\n" - -#~ msgid "demux_ts: corrupted pes encountered\n" -#~ msgstr "demux_ts : pes corrompu rencontré\n" - -#~ msgid "demux error! PMT with invalid pointer\n" -#~ msgstr "erreur demux ! PMT avec pointeur invalide\n" - -#~ msgid "" -#~ "demux_ts: demux error! PMT with invalid CRC32: packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" -#~ msgstr "" -#~ "demux_ts : erreur demux! PMT avec CRC non valide : packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" - -#~ msgid "demux error! PMT with inconsistent progInfo length\n" -#~ msgstr "erreur demux ! PMT avec taille de progInfo inconsistente\n" - -#~ msgid "demux error! PMT with inconsistent streamInfo length\n" -#~ msgstr "erreur demux ! PMT avec taille de streamInfo inconsistente\n" - -#~ msgid "demux error! invalid ts sync byte %.2x\n" -#~ msgstr "erreur demux ! octet de sync ts %.2x invalide\n" - -#~ msgid "demux error! transport error\n" -#~ msgstr "erreur demux ! erreur de transport\n" - -#~ msgid "demux_mpeg: please specify mpeg(mpeg1/mpeg2) stream type.\n" -#~ msgstr "" -#~ "demux_mpeg: specifiez le type de flux mpeg (mpeg1/mpeg2), s'il vous plait " -#~ "le type.\n" - -#~ msgid "stdin/fifo input plugin as shipped with xine" -#~ msgstr "plugin d'entrée stdin/fifo fournis avec xine" - -#~ msgid "vcd device input plugin as shipped with xine" -#~ msgstr "Plugin d'entrée VCD fournis avec xine" - -#, fuzzy -#~ msgid "demux_film: unknown video codec %c%c%c%c\n" -#~ msgstr "demux_film: codec vidéo inconnu '%c%c%c%c'\n" - -#, fuzzy -#~ msgid "demux_vqa: running time: %d min, %d sec\n" -#~ msgstr "demux_wav: Fichier WAV, temps d'execution: %d min, %d sec\n" - -#~ msgid "lstat failed for %s{%s}\n" -#~ msgstr "lstat a échoué pour %s{%s}\n" - -#~ msgid "%s(%d): readlink() failed: %s\n" -#~ msgstr "%s(%d): readlink() à échoué: %s\n" - -#~ msgid "plain file input plugin as shipped with xine" -#~ msgstr "plugin d'entrée pour lecteur de fichier fournis avec xine" - -#~ msgid "demux_avi: video format = %s\n" -#~ msgstr "demux_avi: format vidéo = %s\n" - -#~ msgid "demux_avi: video frame size %ld x %ld\n" -#~ msgstr "demux_avi: taille de trame vidéo %ld x %ld\n" - -#~ msgid "demux_avi: audio format[%d] = 0x%lx\n" -#~ msgstr "demux_avi: format[%d] audio = 0x%lx\n" - -#~ msgid "demux_avi: unknown audio type 0x%lx\n" -#~ msgstr "demus_avi: type audio inconnu 0x%lx\n" - -#~ msgid "demux_avi: audio type %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_avi: type audio %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_avi: unknown video codec '%.4s'\n" -#~ msgstr "demux_avi: codec vidéo inconnu '%.4s'\n" - -#~ msgid "demux_avi: video codec is '%s'\n" -#~ msgstr "demux_avi: le codec vidéo est '%s'\n" - -#~ msgid "demux_mpgaudio: MPEG %s Layer %d %ldkbps\n" -#~ msgstr "demux_mpgaudio: MPEG %s Layer %d %ldkbps\n" - -#, fuzzy -#~ msgid "ogg: vorbis avg. bitrate %d, samplerate %d\n" -#~ msgstr "" -#~ "ogg: flux audio vorbis detecté\n" -#~ "\n" - -#, fuzzy -#~ msgid "ogg: video format %.4s, frame size %d x %d, %d fps\n" -#~ msgstr "demux_avi: taille de trame vidéo %ld x %ld\n" - -#, fuzzy -#~ msgid "" -#~ "ogg: unknown stream type (signature >%.8s<). hex dump of bos packet " -#~ "follows:\n" -#~ msgstr "ogg: type de flux inconnu (signature >%.8s<)\n" - -#~ msgid "demux_asf: audio format : %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_asf: format audio: %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_asf: video format : %s\n" -#~ msgstr "demux_asf: format vidéo: %s\n" - -#~ msgid "demux_asf: stream length is %d sec, rate is %d bytes/sec\n" -#~ msgstr "" -#~ "demux_asf: la longeur du flux est de %d sec, cadence à %d octets/" -#~ "secondes\n" - -#~ msgid "demux_asf: title : %s\n" -#~ msgstr "demux_asf: titre : %s\n" - -#~ msgid "demux_asf: author : %s\n" -#~ msgstr "demux_asf: auteur : %s\n" - -#~ msgid "demux_asf: comment : %s\n" -#~ msgstr "demux_asf: commentaire : %s\n" - -#~ msgid "demux_mpeg_block: unknown block size. try using demux_mpeg.\n" -#~ msgstr "" -#~ "demux_mpeg_block: taille de bloc inconnu. Tente d'utiliser demux_mpeg.\n" - -#~ msgid "" -#~ "demux_ts: plugin doesn't support plugin API version %d.\n" -#~ " This means there's a version mismatch between xine and this " -#~ "demuxer plugin.\n" -#~ " Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ts: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ " Installer la version courante des plugins de \n" -#~ " demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_avi: this plugin doesn't support plugin API version %d.\n" -#~ "demux_avi: this means there's a version mismatch between xine and this " -#~ "demux_avi: demuxer plugin.\n" -#~ "Installing current demuxer plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_elem: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_elem: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_mpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_pes: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_qt: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_ogg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_asf: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_cda: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_cda: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_film: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_film: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "demux_mpeg_block: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg_block: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_roq: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_idcin: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_idcin: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_smjpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins " -#~ "should help.\n" -#~ msgstr "" -#~ "demux_smjpeg: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_wav: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_wav: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_aiff: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_snd: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_voc: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_vqa: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_wc3movie: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_idcin: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#~ msgid "" -#~ "net input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin net ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "" -#~ "rtp input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin rtp ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "" -#~ "stdin/fifo input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin stdin/fifo ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "" -#~ "file input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin file ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "" -#~ "vcd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin vcd ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "" -#~ "http input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin http ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "" -#~ "cda input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin cda ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libmpeg2: plugin doesn't support plugin API version %d.\n" -#~ "libmpeg2: this means there's a version mismatch between xine and this " -#~ "libmpeg2: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libmpg123: plugin doesn't support plugin API version %d.\n" -#~ "libmpg123: this means there's a version mismatch between xine and this " -#~ "libmpg123: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libspudec: Doesn't support plugin API version %d.\n" -#~ "libspudec: This means there is a version mismatch between XINE and\n" -#~ "libspudec: this plugin.\n" -#~ msgstr "" -#~ "Le plugin file ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "w32codec: plugin doesn't support plugin API version %d.\n" -#~ "w32codec: this means there's a version mismatch between xine and this " -#~ "w32codec: decoder plugin.\n" -#~ "Installing current decoder plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "Modes" -#~ msgstr "codec" - -#, fuzzy -#~ msgid "" -#~ "liblpcm: plugin doesn't support plugin API version %d.\n" -#~ "liblpcm: this means there's a version mismatch between xine and this " -#~ "liblpcm: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "ffmpeg: plugin doesn't support plugin API version %d.\n" -#~ "ffmpeg: this means there's a version mismatch between xine and this " -#~ "ffmpeg: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "dxr3_decode_spu: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_spu: this means there's a version mismatch between xine and " -#~ "this dxr3_decode_spu: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "dxr3_decode_video: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_video: this means there's a version mismatch between xine and " -#~ "this\n" -#~ "dxr3_decode_video: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libmad: plugin doesn't support plugin API version %d.\n" -#~ "libmad: this means there's a version mismatch between xine and this " -#~ "libmad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "liba52: plugin doesn't support plugin API version %d.\n" -#~ "liba52: this means there's a version mismatch between xine and this " -#~ "liba52: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libdts: plugin doesn't support plugin API version %d.\n" -#~ "libdts: this means there's a version mismatch between xine and this " -#~ "libdts: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "divx4: plugin doesn't support plugin API version %d.\n" -#~ "divx4: this means there's a version mismatch between xine and this divx4: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veut dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#~ msgid "priority of the divx4 plugin (>5 => enable)" -#~ msgstr "priorité pour le plugin divx4 (>5 => activé)" - -#, fuzzy -#~ msgid "" -#~ "libvorbis: plugin doesn't support plugin API version %d.\n" -#~ "libvorbis: this means there's a version mismatch between xine and this " -#~ "libvorbis: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libsputext: doesn't support plugin api version %d.\n" -#~ "libsputext: This means there is a version mismatch between xine and\n" -#~ "libsputext: this plugin.\n" -#~ msgstr "" -#~ "Le plugin file ne supporte pas la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les versions entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peut aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libspucc: doesn't support plugin api version %d.\n" -#~ "libspucc: This means there is a version mismatch between xine and\n" -#~ "libspucc: this plugin.\n" -#~ msgstr "" -#~ "Le plugin file ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "xvid: plugin doesn't support plugin API version %d.\n" -#~ "xvid: this means there's a version mismatch between xine and this\n" -#~ "xvid: decoder plugin. Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "priority of the xvid plugin (>5 => enable)" -#~ msgstr "priorité pour le plugin divx4 (>5 => activé)" - -#, fuzzy -#~ msgid "" -#~ "cinepak: plugin doesn't support plugin API version %d.\n" -#~ "cinepak: this means there's a version mismatch between xine and this " -#~ "cinepak: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "RoQ: plugin doesn't support plugin API version %d.\n" -#~ "RoQ: this means there's a version mismatch between xine and this RoQ: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "RoQ Audio: plugin doesn't support plugin API version %d.\n" -#~ "RoQ Audio: this means there's a version mismatch between xine and this\n" -#~ "RoQ Audio: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne support par la version de l'API %d.\n" -#~ " ceci veux dire que les version entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peux aider.\n" - -#, fuzzy -#~ msgid "" -#~ "libfaad: plugin doesn't support plugin API version %d.\n" -#~ "libfaad: this means there's a version mismatch between xine and this " -#~ "libfaad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: le plugin ne supporte pas la version de l'API %d.\n" -#~ " ceci veux dire que les versions entre xine et le\n" -#~ " plugin de demultiplexage ne correspondent pas.\n" -#~ "Installer la version courante des plugins de demultiplexage peut aider.\n" - -#~ msgid "bad status: READ DVD STRUCTURE (copyright)\n" -#~ msgstr "mauvais status: READ DVD STRUCTURE (copyright)\n" - -#~ msgid "input_dvd: Could not read Copyright Structure\n" -#~ msgstr "input_dvd: Ne peux pas lire la structure de Copyright\n" - -#~ msgid "" -#~ "input_dvd: Could not read Copyright Structure.\n" -#~ " Assuming disk is not encrypted.\n" -#~ msgstr "" -#~ "input_dvd: Ne peux pas lire la structure de Copyright.\n" -#~ " Considère que le disque n'est pas encrypté.\n" - -#~ msgid "" -#~ "\n" -#~ "input_dvd: Sorry, this plugin doesn't play encrypted DVDs. The legal " -#~ "status\n" -#~ " of CSS decryption is unclear and we can't provide such code.\n" -#~ " Please check http://dvd.sf.net for more information.\n" -#~ msgstr "" -#~ "\n" -#~ "input_dvd: Désolé, xine ne peux pas jouer des DVDs encryptés. Le status " -#~ "légal du\n" -#~ " decryptage CSS n'est pas clair et nous ne fournirons pas un " -#~ "tel code.\n" -#~ " Please check http://dvd.sf.net for more information.\n" - -#~ msgid "input_dvd: Unable to find >%s< on dvd.\n" -#~ msgstr "input_dvd: impossible de trouver >%s< sur le dvd.\n" - -#~ msgid "input_dvd: error read: %Ld bytes is not a sector!\n" -#~ msgstr "input_dvd: erreur de lecture: %Ld octets n'est pas un secteur!\n" - -#~ msgid "input_dvd: read error in input_dvd plugin (%s)\n" -#~ msgstr "input_dvd: erreur de lecture dans le plugin input_dvd (%s)\n" - -#~ msgid "input_dvd: short read in input_dvd (%d != %d)\n" -#~ msgstr "input_dvd: lecture trop courte dans input_dvd (%d != %d)\n" - -#~ msgid "" -#~ "input_dvd: error in input_dvd plugin read: %Ld bytes is not a sector!\n" -#~ msgstr "" -#~ "input_dvd: erreur de lecture dans le plugin input_dvd: %Ld octets n'est " -#~ "pas un secteur!\n" - -#~ msgid "input_dvd: seek: %d is an unknown origin\n" -#~ msgstr "input_dvd: seek: %d est une origine inconnue\n" - -#~ msgid "input_dvd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_dvd: CDROMCLOSETRAY a échoué: %s\n" - -#~ msgid "input_dvd: CDROMEJECT failed: %s\n" -#~ msgstr "input_dvd: CDROMEJECT a échoué: %s\n" - -#~ msgid "input_dvd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_dvd: CDROM_DRIVE_STATUS a échoué: %s\n" - -#~ msgid "dvd device input plugin as shipped with xine" -#~ msgstr "Plugin d'entrée pour lecteur de DVD fournis avec xine" - -#~ msgid "" -#~ "dvd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "Le plugin dvd ne support par la version de l'API %d.\n" -#~ "PLUGIN DESACTIVE.\n" -#~ "Ceci veux dire que les version entre xine et le plugin \n" -#~ "d'entrée ne correspondent pas.\n" -#~ "Installer la version courante des plugins d'entrée peux aider.\n" - -#~ msgid "metronom: video stream start...\n" -#~ msgstr "metronom: démarrage flux vidéo ...\n" - -#~ msgid "metronom: video stream start ignored\n" -#~ msgstr "metronom: démarrage flux vidéo ignoré\n" - -#~ msgid "metronom: waiting for audio to start...\n" -#~ msgstr "metronom: attente de démarrage de l'audio...\n" - -#~ msgid "metronom: video stream end\n" -#~ msgstr "metronom: fin de flux vidéo\n" - -#~ msgid "metronom: video stream end ignored\n" -#~ msgstr "metronom: fin de flux vidéo ignoré\n" - -#~ msgid "metronom: waiting for audio to end...\n" -#~ msgstr "metronom: attente de fin d'audio...\n" - -#~ msgid "metronom: audio stream start...\n" -#~ msgstr "metronom: démarrage de flux audio...\n" - -#~ msgid "metronom: audio stream start ignored\n" -#~ msgstr "metronom: démarrage de flux audio ignoré\n" - -#~ msgid "metronom: audio stream start...done\n" -#~ msgstr "metronom: démarrage flux audio...terminé\n" - -#~ msgid "metronom: waiting for video to end...\n" -#~ msgstr "metronom: attente de fin de vidéo...\n" - -#~ msgid "metronom: video discontinuity #%d\n" -#~ msgstr "metronom: discontinuitée vidéo #%d\n" - -#~ msgid "metronom: waiting for audio discontinuity #%d\n" -#~ msgstr "metronom: attente de discontinuitée audio #%d\n" - -#~ msgid "metronom: video vpts adjusted to %d\n" -#~ msgstr "metronom: vpts vidéo ajusté à %d\n" - -#~ msgid "metronom: audio/video vpts too old, adjusted to %d\n" -#~ msgstr "metronom: vpts audio/vidéo trop vieux, ajusté a %d\n" - -#, fuzzy -#~ msgid "inputs" -#~ msgstr "entrée" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: it\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2007-12-24 16:09+0100\n" "Last-Translator: Diego 'Flameeyes' Pettenò <flameeyes@gentoo.org>\n" "Language-Team: Italian\n" @@ -54,6 +54,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() di %s non riuscito: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" "audio_alsa_out: >>> controlla se un altro programma sta già usando PCM <<<\n" @@ -173,11 +174,13 @@ msgstr "snd_pcm_open() non riuscito:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>>Controlla se un altro programma sta già usando PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "disposizione degli speaker" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -238,79 +241,79 @@ msgstr "" "formati che si vogliono riprodurre." #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : i modi supportati sono " - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8-bit " +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : i modi supportati sono" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16-bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8-bit" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24-bit" +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16-bit" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32-bit" +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24-bit" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32-bit" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "stereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-canali " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " stereo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4-canali non abilitato nella configurazione di xine) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-canali" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1-canali " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4-canali non abilitato nella configurazione di xine)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-canali non abilitati nella configurazione di xine) " +msgid " 4.1-channel" +msgstr " 4.1-canali" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5-canali " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-canali non abilitati nella configurazione di xine)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5-canali non abilitati nella configurazione di xine) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5-canali" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1-canali " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5-canali non abilitati nella configurazione di xine)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-canali non abilitati nella configurazione di xine) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-canali" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "passaggio diretto a/52 e DTS\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-canali non abilitati nella configurazione di xine)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" +msgid " a/52 and DTS pass-through" +msgstr " passaggio diretto a/52 e DTS" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" msgstr "" -"(passaggio diretto a/53 e DTS non abilitato nella configurazione di xine)\n" +" (passaggio diretto a/52 e DTS non abilitato nella configurazione di xine)" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "dispositivo mixer di alsa" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." @@ -319,7 +322,7 @@ msgstr "" "volume.\n" "Si veda la documentazione ALSA per informazioni sui dispositivi." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" "plugin output audio di xine che usa i dispositivi/driver audio compiacenti " @@ -333,206 +336,188 @@ msgstr "plugin output audio di xine che usa artsd di KDE" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "plugin di uscita audio per xine per Coreaudio/Max OS X" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "Errore" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "successo" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "accesso negato" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "risorsa già in uso" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "oggetto già inizializzato" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "il formato d'onda specificato non è supportato" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "il buffer in memoria è stato perso e deve essere ripristinato" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "il controllo del buffer richiesto non è disponibile" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "errore non determinato nel sistema DirectSound" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "il dispositivo hardware DirectSound non è disponibile" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "la funzione non è valida per l'attuale stato dell'oggetto" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "parametro passato non valido" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "l'oggetto non supporta aggregazione" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "nessun driver sonoro disponibile all'uso" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "l'interfaccia COM richiesta non è disponibile" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "un'altra applicazione ha un livello di priorità maggiore" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "memoria insufficiente" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "basso livello di priorità per questa funzione" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "DirectSound non inizializzato" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "la funzione non è supportata" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "errore sconosciuto" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "Impossibile creare l'oggetto DirectSound." -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "Impossibile impostare il livello cooperativo DirectSound." -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "Impossibile creare il buffer DirectSound secondario." -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "Impossibile creare gli eventi di posizione del buffer." - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "Impossibile leggere l'interfaccia di notifica." - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "Impossibile impostare le posizioni di notifica" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "Impossibile riprodurre il buffer sonoro" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "Impossibile fermare il buffer sonoro" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "Impossibile leggere la posizione del buffer" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "Impossibile impostare la posizione del buffer" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "Impossibile impostare il volume sonoro" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": buffer perso, provando a recuperare\n" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "Impossibile bloccare il buffer DirectSound" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "Impossibile sbloccare il buffer DirectSound" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "Impossibile creare il buffer DirectSound primario." -#: src/audio_out/audio_directx2_out.c:632 -#, c-format -msgid ": play cursor overran, flushing buffers\n" +#: src/audio_out/audio_directx2_out.c:596 +#, fuzzy, c-format +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" ": il cursore di riproduzione è uscito dai limiti, svuotamento dei buffer.\n" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr ": ritardato di %ld msec\n" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": impossibile creare la condizione pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": impossibile creare il mutex pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": impossibile creare il buffer pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": impossibile cancellare il buffer pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ": impossibile cancellare la condizione pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": impossibile cancellare il mutex pthread: %s\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr "; comando di controllo sconosciuto %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "secondo plugin di uscita audio per xine utilizzante directx" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "plugin output audio di xine che usa directx per win32" @@ -542,6 +527,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: si sta connettendo al server ESD %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: si sta connettendo al server ESD...\n" @@ -554,7 +540,7 @@ msgstr "audio_esd_out: impossibile connettersi al %s server ESD: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "latenza di output per l'audio esd (aggiusta a/v sync)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -591,7 +577,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "plugin di uscita audio per xine utilizzante libaudio IRIX" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "nome dispositivo audio OSS" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "plugin di uscita audio per xine per JACK Audio Connection Kit" @@ -617,11 +614,11 @@ msgstr "" msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "audio_oss_out: tasso audio: %d richiesto, %d fornito dal dispositivo\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "nome dispositivo audio OSS" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" @@ -632,11 +629,11 @@ msgstr "" "Selezionate \"auto\" se si vuole l'auto riconoscimento dell'impostazione " "corretta." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "numero del dispositivo audio OSS, -1 per nessun dispositivo" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -652,21 +649,23 @@ msgstr "" "L'intevallo di questo valore è -1 oppure 0-15. Questa impostazione è " "ignorata quando il nome del dispositivo audio OSS è settato a \"auto\"." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "audio_oss_out: audio.device.oss_device_name = auto, si provano i dev\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "" "audio_oss_out: controllo automatico per il dispositivo audio non riuscito\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: si sta utilizzando il dispositivo >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -675,11 +674,11 @@ msgstr "" "audio_oss_out: apertura dispositivo audio %s non riuscito:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "metodo di sincronia audio/video da usare con OSS" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -738,7 +737,8 @@ msgstr "" "sistema non supporta nessuna delle ioctl in tempo reale e si notano problemi " "di sincronia dopo una lunga riproduzione." -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -749,32 +749,41 @@ msgstr "" "sincronizzazione soft\n" "audio_oss_out: ... potrebbe essereci sincronizzazione audio/video\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "latenza nell'uscita audio OSS (calibra sincronia audio/video)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: driver audio real time con sincronizzazione disabilitato...\n" -"audio_oss_out: ...si sta provando la dimensione del buffer di output: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d byte\n" +"audio_oss_out: driver audio real time con sincronizzazione disabilitato...\n" +"audio_oss_out: ...si sta provando la dimensione del buffer di output: %d " +"byte\n" "audio_oss_out: ... potrebbe essereci sincronizzazione audio/video\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: i modi supportati sono" + +#: src/audio_out/audio_oss_out.c:1009 +#, fuzzy +msgid " a/52 pass-through" +msgstr " passaggio diretto a/52" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (passaggio diretto a/52 non abilitato nella configurazione di xine)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "Numero del mixer audio OSS, -1 per nessuno." -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -790,27 +799,27 @@ msgstr "" "L'intervallo di questo valore è -1 o 0-15, questa impostazione è ignorata " "quando il nome del dispositivo audio OSS è settato a \"auto\".s" -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: open() del mixer %s non riuscita: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" "plugin output audio di xine che usa i dispositivi/driver audio compiacenti " "di oss" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "dispositivo utilizzato per PulseAudio" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" "Si usi 'server[:sink]' per impostare il dispositivo sink di PulseAudio." -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" msgstr "plugin di output audio di xine che usa il server sonoro PulseAudio" @@ -847,31 +856,212 @@ msgstr "" "plugin output audio di xine che usa i dispositivi/driver audio compiacenti " "di sun" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: aumentando il buffer a %d per evitare overflow.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_audio_dec: impossibile trovare il decoder ffmpeg per il tipo di " +"buffer 0x%X\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: provando ad aprire un codec nullo.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: impossibile aprire il decoder.\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "dvaudio: aumentando il buffer a %d per evitare overflow.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: formato frame non supportato, DR1 disabilitato.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" +"ffmpeg_video_dec: dimensioni del frame non supportate. DR1 disabilitato.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" +"ffmpeg_video_dec: impossibile trovare il decoder ffmpeg per il tipo di " +"buffer 0x%X\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: impossibile aprire il decoder\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: visualizzazione diretta abilitata\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_video_dec: buffer aumentato a %d per evitare overflow.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "qualità di post-elaborazione MPEG-4" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"Si può tarare la quantità di post elaborazione applicata ai video MPEG-4.\n" +"Valori più alti risultano in qualità migliore ma richiedono più CPU. Valroi " +"più bassi possono risultare in difetti dell'immagine come artefatti. Per unc " +"otnenuto ad alta qualità , una post elaborazione troppo alta può in realtà " +"rendere l'immagine peggiore sfocandola troppo." + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "Numero di thread di decodifica FFmpeg" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +#, fuzzy +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"Puoi impostare il numero di thread di decodifica che FFMpeg può usare.\n" +"Valori più alti dovrebbero renere più veloce la decodifica, ma il supporto " +"alla decodifica parallela dipende dal codec utilizzato. Una buona regola " +"pratica è di avere un thread di decodifica per ogni CPU virtuale " +"(tipicamente da 1 a 4). La modifica avrà effetto alla riproduzione del " +"prossimo flusso." + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "bitrate MPEG di uscita per libavcodec (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" +"La bitrate utilizzata dal codificatore MPEG libavcodec per la modalità di " +"codifica DXR3. Valori più alti aumenteranno la qualità e l'uso di CPU.\n" +"Questa impostazione è considerata solo quando è disabilitata la modalità a " +"qualità costante. " + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "modalità a qualità costante" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" +"Se abilitata libavcodec utilizzerà una modalità a qualità costante " +"comprimendo le immagini a secodna della loro complessità . Quando " +"disabilitata libavcodec utilizzerà una modalità a bitrate costante." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "compressione minima" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" +"La compressione minima da applicare ad un'immagine utilizzando una modalità " +"a qualità costante." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "quantizzatore massimo" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" +"La compressione massima da applicare ad un'immagine utilizzando una modalità " +"a qualità costante." + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: attenzione: L'id dello stream =%d è cifrato.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: attenzione: L'id dello stream =%d è cifrato.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Stream multimediale confuso/cifrato" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Ripristino indice..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "" "demux_avi: parte di avi non valida \"%c%c%c%c\" alla posizione %<PRIdMAX>\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: l'indice avi è interrotto\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -882,20 +1072,26 @@ msgstr "" msgid "invalid FILM chunk size\n" msgstr "dimensione di parte di FILM non valida\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "parte di FILM non roconosciuta\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "Versione FLV non supportata (%d).\n" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "Non ci sono flussi audio o video in questo file.\n" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -911,7 +1107,8 @@ msgstr "iff-ilbm: compressione sconosciuta: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: pezzo sconosciuto: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "demux_mpc: frame troppo grande per il buffer" @@ -925,6 +1122,7 @@ msgstr "" "agli sviluppatori di xine.\n" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -947,7 +1145,7 @@ msgstr "" "demux_mpeg_block: attenzione: l'intestazione PES indica che questo stream " "può essere cifrato (modalità di cifratura %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -956,21 +1154,21 @@ msgstr "" "xine-lib:demux_mpeg_pes: stream_id 0x%02x sconosciuto. Segnala la cosa agli " "sviluppatori di.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" "demux_mpeg_pes: attenzione: lo stream PACK con id=0x%x non è riuscito nella " "decodifica.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" "demux_mpeg_pes: attenzione: l'intestazione PES ha riservato 10 bit non " "trovati\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -979,7 +1177,7 @@ msgstr "" "demux_mpeg_block: attenzione: l'intestazione PES indica che questo stream " "può essere cifrato (modalità di cifratura %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -995,17 +1193,18 @@ msgstr "" "ogg: indicata traccia audio vorbis ma nessuno stream di intestazione vorbis " "trovato.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: paramentri intestazione errati\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: tipo audio non supportato: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "demux_tta: numero di frame totali troppo alto\n" @@ -1031,7 +1230,7 @@ msgstr "" "demux_wc3movie: parte di SHOT di riferimento con palette non valida (%d >= %" "d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "" @@ -1056,6 +1255,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: apertura dispositivo SPU %s non riuscita (%s)\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "pulsante richiesto non disponibile\n" @@ -1147,6 +1347,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: apertura dispositivo video %s non riuscita (%s)\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "" "dxr3_decode_video: scrittura al dispositivo potrebbe bloccherebbe " @@ -1163,6 +1364,7 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: ATTENZIONE: codice tasso frame sconosciuto %d\n" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" @@ -1170,10 +1372,12 @@ msgstr "" "PAL a NTSC\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: inizializzazione librte non riuscita\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1182,10 +1386,12 @@ msgstr "" "di 16\n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: rilevazione contesto rte non riuscito.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: impossibile creare codec.\n" @@ -1213,6 +1419,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: impossibile avviare codifica: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: impossibile avviare la libreria FAME\n" @@ -1321,19 +1528,23 @@ msgstr "" "quindi questi potrebbero non funzionare." #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" "video_out_dxr3: inizializzazione encoder MPEG libavcodec non riuscita.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: inizializzazione encoder MPEG rte non riuscita.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: inizializzazione encoder MPEG fame non riuscita.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1350,6 +1561,7 @@ msgstr "" "configurazione di un codificatore.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1475,6 +1687,7 @@ msgstr "" "l'immagine." #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: autocalibrazione necessaria, overlay disabilitato.\n" @@ -1499,10 +1712,12 @@ msgstr "" "default: mantieni l'impostazione della scheda" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: impostazione della modalità video fallita.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" @@ -1511,36 +1726,37 @@ msgstr "" "MPEG su DXR3.\n" "video_out_dxr3: Si legga README.dxr3 per dettagli.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: ERRORE leggendo il file di inizializzazione dell'overlay. Si " "esegua l'autocalibrazione.\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: impossibile connettersi a %s: %d\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: connesso al server CDDB %s:%d con successo.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: connessione al server CDDB '%s:%d' non riuscita (%s).\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "CD Audio (CDDA)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "dispositivo utilizzato per CD audio" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." @@ -1548,11 +1764,11 @@ msgstr "" "Il percorso al dispositivo, solitamente un lettore CD o DVD, che si intende " "utilizzare per riprodurre CD audio." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "interroga CDDB" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1566,11 +1782,11 @@ msgstr "" "informazioni sono ricercate su un server internet che può raccogliere un " "profilo delle proprie abitudini d'ascolto." -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "nome del server CDDB" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1583,19 +1799,19 @@ msgstr "" "risposte maliziose. Assicuratevi di inserire un server di cui ci si possa " "fidare." -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "porta del server CDDB" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "La porta del server utilizzato per recuperare titoli e tracce." -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "directory cache CDDB" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1607,11 +1823,11 @@ msgstr "" "file con nomi incontrollati. Assicurative di utilizzare una directory " "dedicata non utilizzata per altro oltre al caching CDDB. " -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "rallenta il lettore dischi a questa velocità " -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1626,55 +1842,63 @@ msgstr "" "dovrebbe influenzare le prestazioni di riproduzione.\n" "Un valore pari a zero disabilita il rallentamento." -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_dvb: apertura file canali DVB non riuscita '%s': %s\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_dvb: il file canali '%s' non è un file di testo semplice\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: tuner_set_channel non riuscito\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: impossibile aprire dispositivo DVB\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "" "input_dvb: canale %d fuori scala, sarà utilizzato il valore predefinito 0\n" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: ricerca del canale %s\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" "input_dvb: corrispondenza esatta per %s non trovata: saranno provate le " "corrispondenze parziali.\n" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: trovato canale corrispondente %s\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" "input_dvb: canale %s non trovato in channels.conf, sarà utilizzata un " "predefinito.\n" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" @@ -1682,13 +1906,15 @@ msgstr "" "input_dvb: specifica del canale non valida, sarà utilizzato l'ultimo canale " "visto.\n" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" "input_dvb: specifica del canale non valida, sarà utilizzato il canale " "predefinito 0.\n" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" @@ -1696,7 +1922,8 @@ msgstr "" "input_dvb: è stato specificato un MRL DVB-S, ma il sintonizzatore non pare " "essere QPSK (DVB-S)\n" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" @@ -1704,7 +1931,8 @@ msgstr "" "input_dvb: è stato specificato un MRL DVB-T ma il sintonizzatore non pare " "essere OFDM (DVB-T)\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" @@ -1712,7 +1940,8 @@ msgstr "" "input_dvb: è stato specificato un MRL DVB-C ma il sintonizzatore non pare " "essere QAM (DVB-C)\n" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" @@ -1720,20 +1949,21 @@ msgstr "" "input_dvb: è stato specificato un MRL DVB-A ma il sintonizzatore non pare " "essere ATSC (DVB-C)\n" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: impossibile aprire dispositivo DVR '%s'\n" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_dvb: impossibile creare thread di aggiornamento EPG.\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "usa il 'taglio centrale' DVB (zoom)" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." @@ -1741,15 +1971,15 @@ msgstr "" "Questo permetterà la riproduzione a pieno schermo di contenuto 4:3 trasmesso " "in un frame 16:9." -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "plugin di input per DVB (TV Digitale)" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "Ricorda l'ultimo canale DVB visto." -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " @@ -1757,19 +1987,19 @@ msgstr "" "Durante l'auto riproduzione xine ricorderà e scambierà al canale indicato in " "media.dvb.last_channel ." -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "Ultimo canale DVB visto" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "Se abilitato xine ricorderà e scambierà a questo canale." -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "Numero di secondi prima dell'interruzione della sintonizzazione." -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." @@ -1777,35 +2007,54 @@ msgstr "" "Lasciandolo a 0 proverà all'infinito. Un valore maggiore a 0 significa " "attendi quei secondi per ricevere il controllo. Il minimo è di 5 secondi." -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "Indice di scheda DVB da utilizzare." -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" "Lasciare questo a zero a meno che non si abbia davvero più di una scheda nel " "proprio sistema." -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "input_dvd: values of \\beta will give rise to dom!\n" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Errore nella lettura del prossimo blocco dal DVD (%s)\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Errore di apertura del dispositivo DVD\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "dispositivo utilizzato per la riproduzione DVD" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." @@ -1813,11 +2062,11 @@ msgstr "" "Il percorso al dispositivo, solitamente un lettore DVD, che si intende usare " "per riprodurre DVD." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "dispositivo diretto impostato per l'accesso DVD" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1837,11 +2086,11 @@ msgstr "" "Si veda la documentazione sull'impostazione dei dispositivi diretti (man " "raw) per maggiori informazioni." -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "Metodo di decifratura CSS" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " @@ -1851,11 +2100,11 @@ msgstr "" "DVD protetti da copia. Si provino i vari metodi se si hanno problemi nella " "riproduzione di DVD cifrati." -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "percorso alla cache delle chiavi dei titoli" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1870,11 +2119,11 @@ msgstr "" "dedicata non utilizzata per altri scopi oltre alla memorizzazioni delle " "chiavi DVD." -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "regione a cui il lettore DVD dirà di appartenere (da 1 a 8)" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " @@ -1885,11 +2134,11 @@ msgstr "" "nulla a che vedere con il codice regionale settato nei lettori DVD, è " "interamente software." -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "lingua predefinita per la riproduzione DVD" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" @@ -1900,11 +2149,11 @@ msgstr "" "questa lingua.\n" "Questo valore deve essere un codice di lingua di due caratteri ISO639." -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "read-ahead caching" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " @@ -1914,11 +2163,11 @@ msgstr "" "Questo può portare a cattiva riproduzione su lettori lenti, ma migliora " "l'impatto con il cambio di strato nel DVD sui lettori più veloci." -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "unità per l'azione di salto" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1952,11 +2201,11 @@ msgstr "" "salterà un titolo DVD, un'unità strutturale che rappresenta intere " "funzionalità sul DVD." -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "unità per la ricerca" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1981,11 +2230,11 @@ msgstr "" "la ricerca sarà effettuata su un programma DVD, che è un'unità di " "navigazione che rappresenta un capitolo della corrente funzionalità ." -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "modalità di riproduzione quando si fornisce un titolo/capitolo" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -2006,45 +2255,45 @@ msgstr "" "one chapter\n" "riproduce soltanto lo specifico titolo/capitolo e quindi si ferma." -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: errore di lettura (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: Permesso negato: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: File non trovato: >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: File vuoto: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "plugin di input del file" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "Posizione di partenza del navigatore di file" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" "Il navigatore per selezionare i file da riprodurre partirà da questa " "posizione." -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "elenca i file nascosti" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." @@ -2052,91 +2301,91 @@ msgstr "" "Se abilitato, il navigatore per selezionare i file da riprodurre mostrerà " "anche i file nascosti." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "plugin di input gnome-vfs incluso con xine" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s) fallito: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: errore di lettura %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "Connessione in corso al server HTTP..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: risposta http non valida\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx ridirezione: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: lo stato di http non è 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_httml: lunghezza del contenuto = %<PRIdMAX> byte\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: buffer esaurito dopo %d byte." -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "plugin di ingresso http" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "Server proxy HTTP" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "Nome del proxy HTTP" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "Porta proxy HTTP" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "Il numero di porta del proxy HTTP" -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "Nome utente proxy HTTP" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "Il nome utente per il proxy HTTP" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "Password proxy HTTP" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "La password per il proxy HTTP" -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "Domini per cui si vuole ignorare il proxy HTTP" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -2148,15 +2397,15 @@ msgstr "" "Se un nome di dominio è prefissato da =, allora è trattato come il nome di " "un singolo host (e viene richiesta corrispondenza completa)." -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "plugin di ingresso per stream MMS" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "larghezza di banda" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " @@ -2166,11 +2415,11 @@ msgstr "" "Questa sarà utilizzata quando i server di streaming offrano versioni diverse " "con diversi requisiti di banda dello stesso flusso." -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "Protocollo MMS" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -2198,51 +2447,53 @@ msgstr "input_net: impossibile risolvere '%s'.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: impossibile connettesi a '%s'.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "plugin di input della rete trasportato così con xine" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "plugin di input per lo stream pnm" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: errore creando il file pvr (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: errore aprendo il file pvr (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: errore di lettura (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: errore aprendo il dispotivo %s\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_G_CODEC fallito, forse l'interfaccia è cambiata?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_S_CODEC fallito, forse l'interfaccia è cambiata?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "WinTV-PVR 250/350 input plugin" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "dispositivo utilizzato per WinTV-PVR 250/350 (pvr plugin)" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "Il percorso al dispositivo della propria scheda WinTV." @@ -2296,91 +2547,115 @@ msgstr "impossibile fare il bind a '%s'.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: interruzione di lettura di thread...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: lettura thread terminata\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Apertura in corso > nome del file: %s porta: %d interfaccia: %s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: impossibile creare nuova thread (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "plugin input RTP e UDP tarsportati così con xine" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "plugin di input per lo stream rtsp" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "Plugin di ingresso CIFS/SMB basato su libsmbclient" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: impossibile tornare indietro! (%<PRIdMAX> %<PRIdMAX>)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: apertura non riuscita '%s'\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "plugin di input per lo stream di stdin" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Buffer underrun..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Buffer overrun..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "Calibrando..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Nome del sintonizzatore non trovato.\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "plugin di ingresso TV V4L" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "plugin di ingresso radio V4L" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "dispositivo video v4l" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "Il percorso al proprio dispositivo video Video4Linux." -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "dispositivo radio v4l" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Il percorso al proprio dispositivo video Video4Linux." + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "dispositivo radio v4l" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "Il percorso al proprio dispositivo radio Video4Linux," #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: MRL malformata. Utilizzare vcdo://<track #>\n" @@ -2393,21 +2668,21 @@ msgstr "input_vcd: traccia %d non valida (intervallo valido: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "plugin di input per Video CD" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "impossibile aprire %s: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: impossibile aprire %s: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "dispositivo utilizzato per la riproduzione VCD" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." @@ -2415,12 +2690,12 @@ msgstr "" "Il percorso al dispositivo, solitamente un lettore CD o DVD, che si intende " "utilizzare per riprodurre VideoCD." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: MRL errata: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: connessione a '%s' fallita.\n" @@ -2431,10 +2706,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: connessione al server fallita: %s\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: impossibile stabilire una sessione.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: impossibile stabilire una sessione.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "rtsp_session: il tipo di server rtsp '%s' non è supportato.\n" @@ -2445,44 +2728,45 @@ msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "" "input_dvd: l'apertura del dispositivo %s è fallita durante l'espulsione.\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "Connessione in corso al server MMS (su TCP)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: errore di invio\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: formato di risposta non valido.\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: redirezione 3xx non implementata: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: lo stato di ritorno HTTP non è 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: redirezione Location non implementata\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "Connessione al server MMS (tramite http)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "url non valido\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "protocollo non supportato\n" @@ -2491,7 +2775,7 @@ msgstr "protocollo non supportato\n" msgid "Buffering..." msgstr "Bufferizzando..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2500,12 +2784,13 @@ msgstr "" "input_pnm: ricevuto messaggio dal server durante la lettura dello stream:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: connessione fallita '%s'\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: impostazione dello stream fallita.\n" @@ -2545,49 +2830,49 @@ msgstr "Il precedente sarebbe dovuto esser convertito" msgid "failed to find a device with a VCD" msgstr "impossibile trovare un dispositivo con un VCD" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "è stato passato un parametro classe nullo." -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Tipo di inserimento attuale non valido." -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" "Plugin Video CD con PBC e supporto per: (X)VCD, (X)SVCD, HQVCD, CVD ..." -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "la selezione non ha un elemento RETURN" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "selezionato DEFAULT, ma PBC non è abilitato." -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "la selezione non ha un elemento NEXT" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "la selezione non ha un elemento PREVIOUS" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "Tipo di evento sconosciuto: " -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "Il messaggio precedente ha un livello di log di vcdimager sconosciuto." -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "Tipo predefinito di VCD da usare in riproduzione automatica." -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" @@ -2595,11 +2880,11 @@ msgstr "" "L'unità di riproduzione VCD da utilizzare quando non è specificata in un " "MRL, per esempio vcd:// o vcd://dev/dvd:" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "Lettore CD-ROM utilizzato per i VCD quando non è specificato." -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." @@ -2607,30 +2892,30 @@ msgstr "" "Cosa usare se non è specificato nessun drive. Se l'impostazione è vuota xine " "scandirà per lettori CD. " -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "intervallo della slitta di posizione VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" "intervallo che la slitta di posizione nel flusso riprodotto rappresenta " "quando si riproduce un VCD." -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "VCD read-ahead caching?" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "La classe può portare a riproduzione a singhiozzo su macchine lente." -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "avanza automaticamente di traccia/elemento VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." @@ -2638,11 +2923,11 @@ msgstr "" "Se abilitato si passerà automaticamente al successivo elemento o traccia. " "Utilizzato solo quando il controllo di riproduzione (PBC) è disabilitato." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "mostra LID \"rifiutati\" dei VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " @@ -2652,11 +2937,11 @@ msgstr "" "possono vedere nella lista MRL se questa opzione è abilitata. Gli elementi " "rifiutati sono segnati con un asterisco (*) alla fine del MRL." -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "Stringa di formato VCD per il banner da visualizzare." -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2695,11 +2980,11 @@ msgstr "" " %v : l'ID del volume (un numero tra 1 e il totale di volumi).\n" " %% : un simbolo %\n" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "Stringa di formato utilizzata per il campo di commento del flusso" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2712,11 +2997,11 @@ msgstr "" "T e %%.\n" "Si veda la descrizione di title_format per il loro significato." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "Flag di debug per VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2746,7 +3031,8 @@ msgstr "" "1024: Still-frame\n" "2048: Debugging from VCDINFO\n" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "AIUTO! un driver audio solo mono?\n" @@ -2798,168 +3084,33 @@ msgstr "" "questa opzione in modo che i canali aggiuntivi sono mixati nel segnale " "stereo." -#: src/libfaad/xine_faad_decoder.c:128 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad NeAACDecOpen() fallita.\n" -#: src/libfaad/xine_faad_decoder.c:137 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad NeAACDecInit2 fallita.\n" -#: src/libfaad/xine_faad_decoder.c:148 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad NeAACDecInit fallita.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: aumentando il buffer a %d per evitare overflow.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_audio_dec: impossibile trovare il decoder ffmpeg per il tipo di " -"buffer 0x%X\n" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: provando ad aprire un codec nullo.\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: impossibile aprire il decoder.\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: aumentando il buffer a %d per evitare overflow.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: formato frame non supportato, DR1 disabilitato.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "" -"ffmpeg_video_dec: dimensioni del frame non supportate. DR1 disabilitato.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" -"ffmpeg_video_dec: impossibile trovare il decoder ffmpeg per il tipo di " -"buffer 0x%X\n" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: impossibile aprire il decoder\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: visualizzazione diretta abilitata\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: buffer aumentato a %d per evitare overflow.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "qualità di post-elaborazione MPEG-4" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"Si può tarare la quantità di post elaborazione applicata ai video MPEG-4.\n" -"Valori più alti risultano in qualità migliore ma richiedono più CPU. Valroi " -"più bassi possono risultare in difetti dell'immagine come artefatti. Per unc " -"otnenuto ad alta qualità , una post elaborazione troppo alta può in realtà " -"rendere l'immagine peggiore sfocandola troppo." - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "Numero di thread di decodifica FFmpeg" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" -"Puoi impostare il numero di thread di decodifica che FFMpeg può usare.\n" -"Valori più alti dovrebbero renere più veloce la decodifica, ma il supporto " -"alla decodifica parallela dipende dal codec utilizzato. Una buona regola " -"pratica è di avere un thread di decodifica per ogni CPU virtuale " -"(tipicamente da 1 a 4). La modifica avrà effetto alla riproduzione del " -"prossimo flusso." - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "bitrate MPEG di uscita per libavcodec (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" -"La bitrate utilizzata dal codificatore MPEG libavcodec per la modalità di " -"codifica DXR3. Valori più alti aumenteranno la qualità e l'uso di CPU.\n" -"Questa impostazione è considerata solo quando è disabilitata la modalità a " -"qualità costante. " - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "modalità a qualità costante" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" -"Se abilitata libavcodec utilizzerà una modalità a qualità costante " -"comprimendo le immagini a secodna della loro complessità . Quando " -"disabilitata libavcodec utilizzerà una modalità a bitrate costante." - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "compressione minima" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" -"La compressione minima da applicare ad un'immagine utilizzando una modalità " -"a qualità costante." - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "quantizzatore massimo" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "" -"La compressione massima da applicare ad un'immagine utilizzando una modalità " -"a qualità costante." - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "libmusepack: mpc_streaminfo_read fallita: %d\n" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "libmusepack: dati dopo l'ultimo frame ignorati.\n" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "libmusepack: mpc_decoder_initialise fallita\n" @@ -2987,81 +3138,83 @@ msgstr "" "contenuto RealPlayer. Si consultino le FAQ per maggiori informazioni su come " "installare i codec." -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" "libreal: Errore nella risoluzione dei simboli (incompatibilità di " "versione?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "" "libareal: (audio) impossibile risolvere i simboli - DLL incompatibile: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "" "libareal: inizializzazione del decoder fallita, codice di errore: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "libareal: setup del tipo di decoder fallito, codice di errore: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: ops, real può usare più di 2 canali?\n" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "visualizza sottotitoli CC (closed captions) negli stream MPEG-2" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" "I sottotitoli CC sono sottotitoli perlopiù utilizzati per aiutare i non " "udenti." -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "schema colori primo piano/sfondo per sottotitoli CC" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Si scelga la visualizzazione preferita per i sottotitoli CC." -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "carattere standard per i sottitotoli CC" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Si scelga il carattere per il testo standard dei sottotitoli CC." -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "carattere corsivo per i sottotitoli CC" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "Si scelga il carattere per il testo corsivo dei sottotitoli CC" -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "dimensione del carattere per sottotitoli CC" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "Si celga la dimensione del carattere per i sottotitoli CC." -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "allinea al centro i sottititoli CC" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." @@ -3069,23 +3222,23 @@ msgstr "" "Se abilitato i sottotitoli CC saranno posizionati al centro delle rispettive " "righe." -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "Carattere per sottotitoli esterni" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "Spostamento verticale sottotitolo" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "Codifica dei sottotitoli" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "durata predefinita dei sottotitoli in secondi" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " @@ -3096,11 +3249,11 @@ msgstr "" "qui. Utilizzando zero il sottotitolo sarà visualizzato finché il successivo " "non ne prende il posto." -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "dimensione del sottotitolo" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." @@ -3108,11 +3261,11 @@ msgstr "" "Potete qui impostare la dimensione del sottotitolo, l'impostazione sarà " "valutata relativamente alla dimensione della finestra." -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "Spostamento verticale sottotitolo" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." @@ -3120,31 +3273,31 @@ msgstr "" "Si può calibrare la posizione verticale del sottotitolo, l'impostazione sarà " "valutata relativamente alla dimensione della finestra." -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "Carattere per sottotitoli" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" "Un carattere della directory di caratteri di xine da utilizzare per il testo " "del sottotitolo." -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" "Un font grafico (es. un .ttf) da utilizzare per il testo dei sottotitoli." -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "se utilizzare un font FreeType" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "Codifica dei sottotitoli" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -3156,11 +3309,11 @@ msgstr "" "caratteri non-ASCII non sono visualizzati correttamente, chiedere al " "creatore dei sottotitoli quale codifica è stata usata." -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "utilizza OSD non ridimensionato se possibile" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -3259,22 +3412,22 @@ msgstr "w32codec: errore inizializzando l'audio DMO\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: errore durante la decompressione ByteRun1\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 non supportata al momento\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 non supportata al momento\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ non supportata al momento\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: questo tipo di Anim non è supportato al momento\n" @@ -3320,6 +3473,7 @@ msgstr "" "un certo flusso.\n" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr ": mixando da Mono a Stereo.\n" @@ -3331,6 +3485,7 @@ msgstr[0] ": mixando un singolo canale da un flusso originale a %d canale.\n" msgstr[1] ": mixando un singolo canale da un flusso originale a %d canali.\n" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr ": dispositivo audio incapace di usare AO_CAP_MODE_STEREO.\n" @@ -3351,7 +3506,7 @@ msgstr "" "utilizza diversi campioni per assottigliare le variazioni attraverso la " "media standard pesata sui campioni precedenti.\n" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3365,6 +3520,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3404,7 +3562,8 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "tvtime: Nessun metodo di deinterlacciamento disponibile. uscita.\n" @@ -3448,7 +3607,7 @@ msgstr "" "Si scelga il metodo di conversione dei colori utilizzato da goom.\n" "Le selezioni disponibili dovrebbero spiegarsi da sole." -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3656,7 +3815,7 @@ msgstr "" "\n" "* mplayer's noise (C) Michael Niedermayer\n" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3668,7 +3827,7 @@ msgstr "" "Parametri\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3676,7 +3835,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3732,16 +3891,16 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "plugin di uscita video per xine usante la libreria art ascii" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "" "plugin di uscita video per xine utilizzante la libreria Color AsCii Art" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "modalità di buffer per lo strato video" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." @@ -3749,11 +3908,11 @@ msgstr "" "Seleziona la modalità di buffer per los trato di uscita. Buffer doppio o " "triplo fornisce una riproduzione più scorrevole ma consuma più memoria video." -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "attendi il ritracciamento verticale" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." @@ -3761,11 +3920,11 @@ msgstr "" "Abilita la sicnronizzazione dell'update dell'immagine video al ridisegno " "dello schermo intero (ritracciamento verticale)." -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "abilita la chiave cromatica video" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." @@ -3773,15 +3932,13 @@ msgstr "" "Abilita l'uso di una chiave cromatica per dire alla scheda grafica dove " "sovrapporre l'immagine video." -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "chiave cromatica video" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." @@ -3790,21 +3947,21 @@ msgstr "" "sovrapporre l'immagine video. Si provino diversi valori se si notano le " "finestre diventare trasparenti." -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "filtro sfarfallio" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" "Abilita il filtro sfarfallio per un'uscita liscia su un display " "interlacciato." -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "parità di campo" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." @@ -3812,46 +3969,53 @@ msgstr "" "Per un display interlacciato abilita il controllo della parità di campo " "(\"none\" = disabilitato)." -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" "video_out_directfb: si utilizza l'accelerazione sottotitoli hardware.\n" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_vidix: lo strato supporta l'output video.\n" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_syncfb: lo strato non supporta YV12!\n" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_directfb: lo strato non supporta YUY2!\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" "video_out_directfb: è necessario almeno DirectFB 0.9.25 per riprodurre su " "questo strato!\n" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "video_out_directfb: lo strato non supporta l'impostazione buffer %d!\n" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "video_out_directfb: lo strato non supporta le opzioni 0x%08x!\n" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" "video_out_directfb: utilizzando il ridimensionamento accelerato hardware.\n" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" @@ -3859,34 +4023,35 @@ msgstr "" "video_out_directfb: il ridimensionamento dell'immagine con " "deinterlacciamento è accelerato hardware.\n" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "id dello strato video (auto: -1)" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "Selezionate lo strato di uscita video tramite id." -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_directfb: si utilizza lo strato di visualizzazione #%d.\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "plugin di output video per xine utilizzante DirectFB" -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" "video_out_directfb: nessuno strato di visualizzazione utilizzabile trovato!\n" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "plugin di output video per xine utilizzante DirectFB sotto XDirectFB" -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "plugin di output video per xine per win32 che usa directx" @@ -3899,11 +4064,11 @@ msgstr "" "video_out_fb: è supportato solo truecolor/directcolor impacchettato (%d).\n" " Si controlli 'fbset -i' o si provi 'fbset -depth 16'.\n" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "nome del dispositivo framebuffer" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3917,6 +4082,7 @@ msgstr "" "veramente un dispositivo framebuffer valido." #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out-fb: la modalità video non è stata riconosciuta.\n" @@ -3939,6 +4105,7 @@ msgstr "" " Abbassare la risoluzione del frame buffer può aiutare.\n" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3968,11 +4135,11 @@ msgstr "" msgid "xine video output plugin which displays nothing" msgstr "plugin di uscita video per xine che non visualizza nulla" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "Visualizzatore OpenGL" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -4026,11 +4193,11 @@ msgstr "" "Environment_Mapped_Torus\n" "Mostra le immagini su un torroide che ruota. Beeello =)" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "framerate OpenGL minima" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" @@ -4038,13 +4205,12 @@ msgstr "" "Minima framerate per le routine di visualizzazione animata.\n" "Ignorato per le routine statiche.\n" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "abilita doppio buffering" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" @@ -4054,12 +4220,13 @@ msgstr "" "anche di molto lo sfarfallio.\n" "Non dovrebbe avere alcun impatto sulle prestazioni." -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "" "plugin di output video per xine utilizzante l'interfaccia grafica 3D OpenGL" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx32: errore: impossibile controllare la superficie DGA per la " @@ -4076,6 +4243,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "video_out_pgx32: Errore: '%s' non`e un dispositivo framebuffer pgx32\n" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" "video_out_pgx64: errore: impossibile controllare la superficie DGA per la " @@ -4102,39 +4270,43 @@ msgstr "" "pgx24\n" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" "video_out_pgx64: Errore: l'overlay video su questo schermo è già in uso.\n" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "" "video_out_pgx64: Error: impossibile impostare le priorità della finestra.\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" "video_out_pgx64: Attenzione: poca memoria video, buffer multiplo " "disabilitato.\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Error: memoria video insufficiente.\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: Attenzione: poca memoria video, doppio buffer " "disabilitato.\n" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Errore: ioctl fallita (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "chiave cromatica per l'overlay video" @@ -4172,11 +4344,11 @@ msgstr "" "Il buffer multiplo migliora le prestazioni al costo di usare più memoria " "video." -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "utilizza accelerazione hardware se disponibile" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " @@ -4185,16 +4357,18 @@ msgstr "" "Sarà utilizzata l'accelerazione fornita dall'hardware grafico se il sistema " "lo supporta. Nel caso in cui non funzionasse è possibile disabilitarla." -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" "sdl dovrà emulare una superficie a 16 bit, questo rallenterà le cose.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: la modalità a pieno schermo NON è supportata.\n" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "plugin di uscita video di xine utilizzante SDL" @@ -4203,39 +4377,47 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "plugin di output video di xine che usa Libstk Surface Set-top Toolkit" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "video_out_syncfb: errore. (YUV2 non supportato dalla scheda grafica)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "video_out_syncfb: errore. (YV12 non supportato dalla scheda grafica)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" "video_out_syncfb: informazione. (il modulo SyncFB supporta YUV 4:2:0 (3 " "piani))\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" "video_out_syncfb: informazione. (il modulo SyncFB supporta YUV 4:2:0 (2 " "piani))\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "" "video_out_syncfb: informazione. (il modulo SyncFB supporta YUV 4:2:2)\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: informazione. (il modulo SyncFB supporta YUY2)\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: informazione. (il modulo SyncFB supporta RGB565)\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" @@ -4243,7 +4425,8 @@ msgstr "" "video_out_syncfb: annullamento. (il modulo non supporta YV12, YUY2 o " "RGB565)\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " @@ -4253,11 +4436,11 @@ msgstr "" "disponibile perché il modulo SyncFB sembra obsoleto. Riferirsi a README." "syncfb per informazioni su come aggiornarlo.)\n" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "numero predefinito di ripetizioni dei frame" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." @@ -4265,18 +4448,18 @@ msgstr "" "Specifica quante volte un singolo frame video sarà visualizzato " "consecutivamente." -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "plugin di uscita video per xine utilizzante il modulo SyncFB per schede " "Matrox G200/G400" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "nome del dispositivo SyncFB" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -4289,33 +4472,31 @@ msgstr "" "può essere utilizzato per riempire questo file con contenuto arbitrario. Ci " "si accerti che il valore inserito sia veramente un dispositivo framebuffer." -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "intensità del colore rosso" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "L'intensità dei componenti di colore rosso." -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "intensità del colore verde" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "L'intensità dei componenti di colore verde." -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "intensità del colore blu" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "L'intensità dei componenti di colore blu." -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " @@ -4325,49 +4506,53 @@ msgstr "" "ridisegnod ell'intero schermo (ritracciamento verticale). Questo eliminerà " "gli sfarfallii e gli artifatti, ma utilizzerà più memoria video." -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: il dispositivo supporta il formato yuv2\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: il dispositivo supporta il formato yv12\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: la versione della libreria VIDIX è errata\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: impossibile trovare un driver VIDIX funzionante\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: utilizzando il driver %s di %s\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "componente rossa della chiave cromatica di sovraimpressione" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "componente verde della chiave cromatica di sovraimpressione" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "componente blu della chiave cromatica di sovraimpressione" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "plugin di output video di xine che usa libvidix per x11" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "" "plugin di output video di xine che usa libvidix per il frame buffer Linux" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" @@ -4376,7 +4561,8 @@ msgstr "" "video_out_xcbshm: %s: riservando l'immagine\n" "video_out_xcbshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" @@ -4386,7 +4572,8 @@ msgstr "" "riservando l'immagine \n" "video_out_xcbshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" @@ -4395,7 +4582,7 @@ msgstr "" "condiviso\n" "video_out_xcbshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -4410,21 +4597,24 @@ msgstr "" "è raccomandata una profondità di 16bpp.\n" "\n" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xcbshm: l'estensione MIT Shared Meory non è presente sul display.\n" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xcbshm: modalità video non riconosciuta.\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" "plugin di output video per xine utilizzante l'estensione MIT X Shared Memory" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4432,7 +4622,7 @@ msgstr "" "video_out_xcbxv: XvShmCreateImage ha restituito una dimensione pari a zero.\n" "video_out_xcbxv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" @@ -4441,7 +4631,8 @@ msgstr "" "video_out_xcbxv: errore nella memoria condivisa in shmget: %s\n" "video_out_xcbxv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4450,11 +4641,24 @@ msgstr "" "memoria condivisa.\n" "video_out_xcbxv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xcbxv: estensione Xv non presente.\n" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4465,7 +4669,7 @@ msgstr "" "porta yuv12 utilizzabile.\n" " sembrerebbe che l'hardware grafico non supporti Xv.\n" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " @@ -4474,75 +4678,39 @@ msgstr "" "video_out_xcbxv: utilizzando la porta Xv %d del dispositivo %s per la " "conversione di colori e il ridimensionamento hardware.\n" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "colora automaticamente la chive cromatica" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "Fa sì che Xv colori automaticamente la propria chiave cromatica." - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "modalità di ridimensionamento bilineare" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 +#, fuzzy msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -"Seleziona la modalità di ridimensionamento bilineare per le schede Permedia. " -"I singoli valori sono:\n" -"\n" -"Permedia 2\n" -"0 - disabilita il filtro bilineare\n" -"1 - abilita il filtro bilineare\n" -"\n" -"Permedia 3\n" -"0 - disabilita il filtro bilineare\n" -"1 - abilita il filtro lineare orizzontale\n" -"2 - abilita il filtro bilineare completo" +"Il doppio buffering sincronizzerà l'aggiornamento dell'immagine video con il " +"ridisegnod ell'intero schermo (ritracciamento verticale). Questo eliminerà " +"gli sfarfallii e gli artifatti, ma utilizzerà più memoria video." -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xcbxv: questo dispositivo supporta il formato yv12\n" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xcbxv: questo dispositivo supporta il formato yuv2.\n" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "pitch alignment workaround" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" -"Alcuni driver video difettosi richiedono un workaround per funzionare " -"correttamente." - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "metodo di deinterlacciamento (deprecato)" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4615,12 +4783,13 @@ msgstr "" "Applica un leggero sfocamento verticale per rimuovere gli artefatti di comb. " "Buoni risultati con un uso di CPU medio." -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "plugin di output video di xine che usa l'estensione video MIT X" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4628,7 +4797,7 @@ msgstr "" "video_out_xshm: errore nella memoria condivisa riservando l'immagine:\n" "video_out_xshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -4637,7 +4806,8 @@ msgstr "" "video_out_xshm: %s: riservando l'immagine\n" "video_out_xshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4646,7 +4816,8 @@ msgstr "" "riservando l'immagine \n" "video_out_xshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4655,16 +4826,19 @@ msgstr "" "condiviso\n" "video_out_xshm: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: l'estensione MIT Shared Meory non è presente sul display.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: modalità video non riconosciuta.\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4672,7 +4846,8 @@ msgstr "" "video_out_xv: XvShmCreateImage fallita.\n" "video_out_xv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4680,7 +4855,7 @@ msgstr "" "video_out_xv: XvShmCreateImage ha restituito una dimensione pari a zero.\n" "video_out_xv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -4689,7 +4864,8 @@ msgstr "" "video_out_xv: errore nella memoria condivisa in shmget: %s\n" "video_out_xv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4698,11 +4874,18 @@ msgstr "" "condivisa.\n" "video_out_xv: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: estensione Xv non presente.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4712,7 +4895,7 @@ msgstr "" "porta yuv12 utilizzabile. sembrerebbe che l'hardware grafico " "non supporti Xv.\n" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " @@ -4721,23 +4904,27 @@ msgstr "" "video_out_xv: utilizzando la porta Xv %ld dal dispositivo %s per la " "conversione di colori e il ridimensionamento hardware.\n" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: questo dispositivo supporta il formato yv12\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: questo dispositivo supporta il formato yuv2.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "plugin di output video per xine utilizzante l'estensione X video XvMC" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: estensione XvMC non presente.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4745,7 +4932,7 @@ msgstr "" "video_out_xvmc: estensione XV presente ma non è stato possibile trovare una " "porta yuv12 utilizzabile.\n" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" @@ -4754,24 +4941,28 @@ msgstr "" "video_out_xxmc: utilizzando la porta Xv %ld dal dispositivo %s\n" " per la conversione di colori e il ridimensionamento hardware.\n" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " accelerazione idct e compensazione del movimento \n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " solo accelerazione della compensazione di movimento\n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " nessun supporto XvMC \n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " Con overlay = %d; UnsignedIntra = %d.\n" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4779,7 +4970,8 @@ msgstr "" "video_out_xxmc: XvShmCreateImage fallita.\n" "video_out_xxmc: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4787,7 +4979,7 @@ msgstr "" "video_out_xxmc: XvShmCreateImage ha restituito una dimensione pari a zero.\n" "video_out_xxmc: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4796,7 +4988,8 @@ msgstr "" "video_out_xxmc: errore nella memoria condivisa in shmget: %s\n" "video_out_xxmc: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4805,11 +4998,13 @@ msgstr "" "memoria condivisa.\n" "video_out_xxmc: => l'estensione MIT Shared Memory non sarà utilizzata.\n" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xxmc: estensione Xv non presente.\n" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4819,7 +5014,7 @@ msgstr "" "porta yuv12 utilizzabile. sembrerebbe che l'hardware grafico " "non supporti Xv.\n" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " @@ -4828,19 +5023,21 @@ msgstr "" "video_out_xxmc: utilizzando la porta Xv %ld dal dispositivo %s per la " "conversione di colori e il ridimensionamento hardware.\n" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xxmc: questo dispositivo supporta il formato yv12\n" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xxmc: questo dispositivo supporta il formato yuv2.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "Fa sì che XvMC riservi più frame per un miglior buffer." -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" @@ -4850,11 +5047,11 @@ msgstr "" "Questa opzione, quando abilitata, fa sì che il drive tenti\n" "di riservare 15 frame. Necessario per unichrom e VDR istantanei.\n" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "Risparmio CPU Unichrome" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" @@ -4864,11 +5061,11 @@ msgstr "" "Solo per kernel Linux 2.6 o 2.4 con patch multimediale.\n" "Sperimentale.\n" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "Correggi i colori dei sottotitoli difettosi su NVIDIA XvMC" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" @@ -4876,11 +5073,11 @@ msgstr "" "C'è un errore nella libreria XvMC NVIDIA che rende i colori rossi dell'OSD " "blu e viceversa. Questa opzione fornisce un workaround.\n" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "Utilizza bob come metodo di deinterlacciamento accelerato." -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" @@ -4888,11 +5085,11 @@ msgstr "" "Quando l'interlacciamento è abilitato per i frame accelerati hardware, " "alterna i campi superiore e inferiori al doppio del frame rate.\n" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "Non utilizzare il deinterlacciamento bob per frame progressivi." -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" @@ -4900,13 +5097,13 @@ msgstr "" "I frame progressivi non devono essere deinterlacciati, quindi disabilitarlo\n" "a richiesta dovrebbe fornire una migliore immagine.\n" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" "Non utilizzare il deinterlacciamento bob quando è attivo un OSD " "ridimensionato." -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" @@ -4916,12 +5113,14 @@ msgstr "" "disabilitarlo a richiesta dovrebbe fornire una migliore immagine OSD.\n" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" "x11osd: estensione XShape non disponibile: overlay non ridimensionato " "disabilitato.\n" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" "x11osd: errore creando la finestra, overlay non ridimensionato " @@ -4929,6 +5128,7 @@ msgstr "" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" "x11osd: errore creando la pixmap, overlay non ridimensionato disabilitato.\n" @@ -4938,6 +5138,85 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: overlay non ridimensionato creato (modalità %s).\n" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "colora automaticamente la chive cromatica" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "Fa sì che Xv colori automaticamente la propria chiave cromatica." + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "modalità di ridimensionamento bilineare" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" +"Seleziona la modalità di ridimensionamento bilineare per le schede Permedia. " +"I singoli valori sono:\n" +"\n" +"Permedia 2\n" +"0 - disabilita il filtro bilineare\n" +"1 - abilita il filtro bilineare\n" +"\n" +"Permedia 3\n" +"0 - disabilita il filtro bilineare\n" +"1 - abilita il filtro lineare orizzontale\n" +"2 - abilita il filtro bilineare completo" + +#: src/video_out/xv_common.h:53 +#, fuzzy +msgid "Xv port number" +msgstr "numero di inserimento non valido" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "pitch alignment workaround" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" +"Alcuni driver video difettosi richiedono un workaround per funzionare " +"correttamente." + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +#, fuzzy +msgid "bicubic filtering" +msgstr "filtro sfarfallio" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "disabilita la trasparenza esatta per gli overlay" @@ -4979,36 +5258,41 @@ msgstr "" "interna. Valori alti significano una riproduzione più liscia per ingressi " "inaffidabili, ma aumenta la latenza e il consumo di memoria." -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" "audio_out: calcolo del ritardo impossibile con un dispositivo audio non " "disponibile.\n" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" "scrittura sulla scheda audio fallita. Si suppone il dispositivo sia stato " "scollegato.\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "8 bit non supportati dal driver, conversione a 16 bit.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "mono non supportato dal driver, conversione a stereo.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "stereo non supportato dal driver, conversione a mono.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "metodo di sincronia audio/video" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -5052,11 +5336,11 @@ msgstr "" "dove i dati audio sono passati ad un decodificatore esterno in forma " "digitale." -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "abilita ricampionamento" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -5069,11 +5353,11 @@ msgstr "" "disabilitare o utilizzare automaticamente quando necessario il " "ricampionamento." -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "ricampiona sempre a questa frequenza (0 per disabilitare)" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " @@ -5083,11 +5367,11 @@ msgstr "" "sonoro. Impostando un valore diverso da zero qui si può forzare il " "ricampionamento del flusso audio alla frequenza data." -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "offset per il passaggio diretto digitale" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" @@ -5098,11 +5382,11 @@ msgstr "" "compensare.\n" "L'unità di misura è un \"PTS tick\" ovvero 1/90000 secondi." -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "riproduci audio anche a velocità basse/elevate" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -5114,25 +5398,26 @@ msgstr "" "basso o più alto). Se si vuole sperimentare preservando il tono, è possibile " "provare il plugin di post-elaborazione audio 'stretch'." -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "volume audio di partenza" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "Il volume audio generale da impostare all'avvio di xine.partenza" -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "ripristina il volume all'avvio" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "Se disabilitato, xine non modificherà alcuna impostazione del mixer " "all'avvio." -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "audio_out: spiacente, non sarebbe dovuto succedere. Per favore riavvia " @@ -5143,48 +5428,50 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "xine-lib: buffer.c: C'è stato un errore fatale: TROPPI FREE\n" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" "L'attuale file di configurazione è stato modificato da una nuova versione di " "xine." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" "configfile: ATTENZIONE: copia di backup del file di configurazione in %s " "fallita.\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: ATTENZIONE: la propria configurazione non sarà salvata.\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "" "configfile: ATTENZIONE: scrittura della configurazione in %s fallita.\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" "configfile: ATTENZIONE: rimozione del file di configurazione %s " "possibilmente rovinato.\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: ATTENZIONE: si controlli il file di backup %s.\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: la voce '%s' non deve essere modificata da MRL\n" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "" "info_helper: impossibile individuare il set di caratteri locale corrente.\n" @@ -5218,7 +5505,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: la lettura tramite plugin di ingresso è fallita.\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: errore scrivendo su file %<PRIdMAX> byte: %s.\n" @@ -5243,12 +5530,12 @@ msgstr "input_rip: posizionamento fallito: %s.\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %<PRIdMAX> byte rimossi.\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: plugin di ingresso non definito!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " @@ -5257,7 +5544,7 @@ msgstr "" "input_rip: la directory di destinazione non è stata specificata, si imposti " "l'opzione 'media.capture.save_dir'\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -5265,12 +5552,12 @@ msgstr "" "La funzione di salvataggio dello stream sarà disabilitata finché non si " "imposta media.capture.save_dir nella configurazione. " -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: l'estrazione/cache di questa sorgente non è permessa.\n" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" @@ -5278,12 +5565,12 @@ msgstr "" "A xine non è possibile salvare da questa sorgente. (possibile materiale " "protetto da copyright?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: nome del file non fornito!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: errore aprendo il file %s: %s\n" @@ -5322,7 +5609,7 @@ msgstr "io_helper: Connessionr rifiutata\n" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "map_decoder_list: niente spazio per il decoder, ignorato.\n" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" @@ -5330,12 +5617,12 @@ msgstr "" "load_plugins: plugin %s ignorato, versione di interfaccia %d errata " "(dovrebbe essere %d)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "priorità per il decoder %s" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" @@ -5345,7 +5632,7 @@ msgstr "" "contenuto possa essere gestito da più di un decoder.\n" "Una priorità pari a 0 abilita la priorità predefinita del decoder." -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " @@ -5354,7 +5641,7 @@ msgstr "" "load_plugins: il plugin demuxer %s non fornisce una priorità , xine-lib " "utilizzerà la priorità predefinita.\n" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " @@ -5363,46 +5650,46 @@ msgstr "" "load_plugins: il plugin di ingresso %s non fornisce una priorità , xine-lib " "utilizzerà la priorità predefinita.\n" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: trovato plugin %s\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: trovato plugin statico\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "" "load_plugins: raggiunto il limite di plugin, non è stato possibile caricare %" "s.\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" "load_plugins: raggiunto il limite di plugin, non è stato possibile caricare " "il plugin statico.\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: tipo del plugin sconosciuto %d in %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: tipo del plugin statico sconosciuto %d\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: impossibile individuare %s\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -5411,7 +5698,7 @@ msgstr "" "load_plugins: impossibile aprire la libreria plugin %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -5420,12 +5707,12 @@ msgstr "" "load_plugins: non ottengo informazioni del plugin da %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: directory %s illeggibile ignorata.\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -5434,27 +5721,28 @@ msgstr "" "load_plugins: impossibile aprire la libreria plugin %s (stadio 2):\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: Argh! %s non contiene informazioni plugin.\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: strategia di riconoscimento contenuto sconosciuta %d\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: utilizzo del demuxer '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: caricamento del plugin output audio fallito <%s>\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -5462,7 +5750,7 @@ msgstr "" "load_plugins: il riconoscimento automatico dell'output audio non ha trovato " "alcun driver audio utilizzabile.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -5471,52 +5759,54 @@ msgstr "" "load_plugins: impossibile rimuovere la libreria plugin %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "il carattere '%s-%d' è già caricato, strano.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "caricamento del carattere '%s' fallito (%d < %d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "versione del font '%s' errata. Richiesto %d trovato %d.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: impossibile inizializzare la libreria ft2\n" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "osd: errore nel trovare il caratter carattere %s con FontConfig" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: errore nel caricamento del carattere %s con FontConfig" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "osd: errore nella ricerca del carattere %s con FontConfig" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: errore nel caricamento del carattere %s con ft2\n" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" "osd: errore impostando la dimensione del carattere (nessun carattere " "scalabile?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -5525,43 +5815,48 @@ msgstr "" "osd: sequenza sconosciuta cominciante con byte 0x%02X nella codifica \"%s\", " "ignorata.\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: impossibile individuare il set di caratteri locale corrente.\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "" "osd: conversione %s -> %s non supportata, nessuna conversione eseguita\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: carattere non definito.\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: errore nel caricamento del glifo.\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: errore nella visualizzazione del glifo.\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: errore nel caricamento del glifo %i.\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: errore nella visualizzazione.\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "" "palette (primo piano-bordo-sfondo) da utilizzare per i sottotitoli e OSD" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " @@ -5571,21 +5866,21 @@ msgstr "" "sottotitolo ceh non specificano nessuna colorazione. Le palette sono " "elencate nella forma: primo piano - bordo - sfondo." -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: nessun plugin disponibile per gestire '%s'\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: errore, tipo di buffer sconosciuto: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "numero di buffer video" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " @@ -5595,12 +5890,12 @@ msgstr "" "interna. Valori alti significano una riproduzione più liscia per ingressi " "inaffidabili, ma aumenta la latenza e il consumo di memoria." -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d frame consegnati, %d frame saltati, %d frame scartati\n" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -5609,11 +5904,11 @@ msgstr "" "video_out: immagine con %<PRId64> pts scartata perché troppo vecchia (diff : " "%<PRId64>).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "numero predefinito di frame video" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." @@ -5621,11 +5916,11 @@ msgstr "" "Il numero predefinito di frame video da richiedere dal driver di uscita " "video. Alcuni driver rimpiazzeranno questa impostazione con il loro valore." -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "percentuale di frame saltati da tollerare." -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." @@ -5633,11 +5928,11 @@ msgstr "" "Quando non è mostrata una percentuale di frame superiore a questa, perché " "non decodificati in tempo, xine invia una notifica." -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "percentuale di frame scartati da tollerare." -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." @@ -5645,7 +5940,8 @@ msgstr "" "Quando non è mostrata una percentuale di frame superiore a questa, perché " "non disposti alla visualizzazione in tempo, xine invia una notifica." -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out: spiacente, non sarebbe dovuto succedere. Per favore riavvia " @@ -5707,136 +6003,149 @@ msgstr "" "driver di uscita video come XShm, dove il ridimensionamento non è accelerato " "in hardware, questo può ridurre drasticamente l'uso di CPU." -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: errore durante l'interpretazione del MRL\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: plugin di ingresso trovato : %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: il plugin di ingresso non può aprire il MRL [%s]\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: impossibile trovare il plugin di ingresso per il MRL [%s]\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: l'avvio del demuxer %s specificato è fallito.\n" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: avvio del plugin di estrazione.\n" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: errore nell'avvio del plugin di estrazione.\n" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: l'avvio dell'ultimo demuxer provato %s è fallito.\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "video ignorato\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "audio ignorato\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "sottotitoli ignorati\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "plugin cache d'ingresso disattivato.\n" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "aperto il MRL sottotitoli '%s'\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: errore nell'apertura del MRL dei sottotitoli.\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: errore nell'interpretazione del MRL.\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "xine: modificare l'opzione '%s' da MRL non è consentito.\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: impossibile trovare il demuxer per >%s<\n" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: impossibile trovare il demuxer per >%s<\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: trovato plugin demuxer: %s\n" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "xine: avvio del demuxer completo. veloce!\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: avvio del demuxer fallito.\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: nessun demux disponibile\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine: avvio del demuxer fallito.\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" "xine: La directory di salvataggio specificata \"%s\" potrebbe essere un " "rischio per la sicurezza.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" "La directory di salvataggio specificata potrebbe essere un rischio per la " "sicurezza." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: locale non supportarto dalla liberaria C\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "Strategia di riconoscimento del formato di contenuto" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5870,11 +6179,11 @@ msgstr "" "extension\n" "Riconosce solo tramite estensione del file.\n" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "Cartella di salvataggio degli stream" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5890,12 +6199,12 @@ msgstr "" "arbitrario. Per questo si deve essere attenti che la directory che si " "specifica sia robusta per qualsiasi contenuto di ogni file." -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "" "permetti modifiche implicite alla configurazione (per esmepio tramite MRL)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5912,11 +6221,11 @@ msgstr "" "arbitrariamente la propria configurazione si può finire con uno xine " "completamente caotico." -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "Timeout per la lettura dei flussi via rete (in secondi)" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " @@ -5927,67 +6236,67 @@ msgstr "" "lenta o la banda è occupata, valori troppo alti congeleranno il player se la " "connessione viene persa." -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "messaggi" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "plugin" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "traccia" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "Attenzione:" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "Host sconosciuto:" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "Dispositivo sconosciuto:" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "Rete irraggiungibile" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "Connessione rifiutata:" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "File non trovato:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "Errore leggendo da:" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "Errore nel caricamento della libreria:" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "Individuato flusso multimediale cifrato" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "Messaggio di sicurezza:" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "Dispositivo audio non disponibile" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "Errore di permessi" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "Il file è vuoto:" @@ -6006,11 +6315,6 @@ msgstr "" "tale copia. Solitamente il metodo migliore è riconosciuto automaticamente." #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Test di velocità dei metodi memcpy (più piccolo è migliore):\n" - -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: versione ASX errata: %s\n" - -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "dvbsub: impossibile creare thread timer\n" diff --git a/po/libxine1.pot b/po/libxine1.pot index 94d07aee3..9e90aedf2 100644 --- a/po/libxine1.pot +++ b/po/libxine1.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -52,6 +52,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" @@ -147,11 +148,13 @@ msgstr "" msgid ">>> Check if another program already uses PCM <<<\n" msgstr "" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -184,84 +187,84 @@ msgid "" msgstr "" #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "" - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " +msgid "audio_alsa_out : supported modes are" msgstr "" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" msgstr "" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" msgstr "" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" msgstr "" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " +msgid " 4.1-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" msgstr "" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" +msgid " a/52 and DTS pass-through" +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" @@ -273,205 +276,187 @@ msgstr "" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "" -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "" -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "" - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "" -#: src/audio_out/audio_directx2_out.c:632 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": play cursor overran, flushing buffers\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "" @@ -481,6 +466,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "" @@ -493,7 +479,7 @@ msgstr "" msgid "esd audio output latency (adjust a/v sync)" msgstr "" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -524,7 +510,17 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +msgid "JACK audio device name" +msgstr "" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "" @@ -548,22 +544,22 @@ msgstr "" msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -573,31 +569,33 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" "%s\n" msgstr "" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -627,35 +625,43 @@ msgid "" "ioctls and you experience sync errors after long playback" msgstr "" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1012 +msgid " (a/52 pass-through not enabled in xine config)" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -665,24 +671,24 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" msgstr "" @@ -712,30 +718,183 @@ msgstr "" msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/demuxers/demux_asf.c:450 +#, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "" -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -745,20 +904,26 @@ msgstr "" msgid "invalid FILM chunk size\n" msgstr "" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -774,7 +939,8 @@ msgstr "" msgid "iff: unknown Chunk: %s\n" msgstr "" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "" @@ -786,6 +952,7 @@ msgid "" msgstr "" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -802,31 +969,31 @@ msgid "" "encrypted (encryption mode %d)\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " "to xine developers.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " "encrypted (encryption mode %d)\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -838,17 +1005,18 @@ msgstr "" msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" msgstr "" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" @@ -868,7 +1036,7 @@ msgstr "" msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "" @@ -889,6 +1057,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "" @@ -955,6 +1124,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "" @@ -969,25 +1139,30 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "" @@ -1012,6 +1187,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "" @@ -1095,18 +1271,22 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1117,6 +1297,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1196,6 +1377,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "" @@ -1214,53 +1396,56 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" msgstr "" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1269,11 +1454,11 @@ msgid "" "listening habits." msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1281,19 +1466,19 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1301,11 +1486,11 @@ msgid "" "used for anything but CDDB caching." msgstr "" -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1314,171 +1499,204 @@ msgid "" "A value of zero here will disable the slowdown." msgstr "" -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" msgstr "" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" msgstr "" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." msgstr "" -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "" -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." msgstr "" -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1489,22 +1707,22 @@ msgid "" "See the documentation on raw device setup (man raw) for further information." msgstr "" -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " "scrambled DVDs." msgstr "" -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1513,44 +1731,44 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." msgstr "" -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1569,11 +1787,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1587,11 +1805,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1603,133 +1821,133 @@ msgid "" "play just the specified title/chapter and then stop" msgstr "" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "" -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "" -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "" -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -1737,26 +1955,26 @@ msgid "" "(full match required)." msgstr "" -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." msgstr "" -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -1782,51 +2000,53 @@ msgstr "" msgid "input_net: unable to connect to '%s'.\n" msgstr "" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "" @@ -1879,91 +2099,113 @@ msgstr "" msgid "recv(): %s.\n" msgstr "" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "" -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "" -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "" -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "" -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +msgid "v4l ALSA audio input device" +msgstr "" + +#: src/input/input_v4l.c:1913 +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "" + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "" #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "" @@ -1976,32 +2218,32 @@ msgstr "" msgid "Video CD input plugin" msgstr "" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." msgstr "" -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "" @@ -2012,10 +2254,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2025,44 +2275,45 @@ msgstr "" msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "" -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "" -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "" @@ -2071,19 +2322,20 @@ msgstr "" msgid "Buffering..." msgstr "" -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" "%s\n" msgstr "" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "" @@ -2123,106 +2375,106 @@ msgstr "" msgid "failed to find a device with a VCD" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2243,11 +2495,11 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2255,11 +2507,11 @@ msgid "" "See the help for the title_format for the meanings of these." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2276,7 +2528,8 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "" @@ -2315,129 +2568,19 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:128 -msgid "libfaad: libfaad NeAACDecOpen() failed.\n" -msgstr "" - -#: src/libfaad/xine_faad_decoder.c:137 -msgid "libfaad: libfaad NeAACDecInit2 failed.\n" -msgstr "" - -#: src/libfaad/xine_faad_decoder.c:148 -msgid "libfaad: libfaad NeAACDecInit failed.\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:161 +#: src/libfaad/xine_faad_decoder.c:132 #, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "" -#: src/libffmpeg/ff_video_decoder.c:338 +#: src/libfaad/xine_faad_decoder.c:141 #, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "" -#: src/libffmpeg/ff_video_decoder.c:836 +#: src/libfaad/xine_faad_decoder.c:152 #, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." +msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:239 @@ -2446,10 +2589,12 @@ msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "" @@ -2472,145 +2617,147 @@ msgid "" "information on how to install the codecs." msgstr "" -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "" -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " "in the subtitle being shown until the next one takes over." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2618,11 +2765,11 @@ msgid "" "used." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -2706,22 +2853,22 @@ msgstr "" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "" @@ -2752,6 +2899,7 @@ msgid "" msgstr "" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr "" @@ -2763,6 +2911,7 @@ msgstr[0] "" msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr "" @@ -2776,7 +2925,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -2790,6 +2939,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -2829,7 +2981,8 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "" @@ -2869,7 +3022,7 @@ msgid "" "The available selections should be self-explaining." msgstr "" -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -2988,7 +3141,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -2996,13 +3149,13 @@ msgid "" "\n" msgstr "" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3034,140 +3187,146 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." msgstr "" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "" -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "" -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "" @@ -3178,11 +3337,11 @@ msgid "" " Check 'fbset -i' or try 'fbset -depth 16'.\n" msgstr "" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3191,6 +3350,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "" @@ -3209,6 +3369,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3230,11 +3391,11 @@ msgstr "" msgid "xine video output plugin which displays nothing" msgstr "" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3263,34 +3424,34 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" msgstr "" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3305,6 +3466,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3326,33 +3488,37 @@ msgid "" msgstr "" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "" @@ -3383,26 +3549,28 @@ msgid "" "memory." msgstr "" -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "" @@ -3411,66 +3579,75 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " "README.syncfb for informations on how to update it.)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "" -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3478,101 +3655,105 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3582,42 +3763,59 @@ msgid "" "\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -3625,69 +3823,42 @@ msgid "" "Xv?!\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" msgstr "" -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -3725,256 +3896,288 @@ msgid "" "with medium CPU usage." msgstr "" -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" " for hardware colour space conversion and scaling\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "" -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "" -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" @@ -3983,6 +4186,70 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "" + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +msgid "Xv port number" +msgstr "" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +msgid "bicubic filtering" +msgstr "" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "" @@ -4017,32 +4284,37 @@ msgid "" "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4065,11 +4337,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4077,33 +4349,33 @@ msgid "" "automatically when necessary." msgstr "" -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4111,23 +4383,24 @@ msgid "" "audio post plugin instead." msgstr "" -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "" -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" @@ -4136,41 +4409,43 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "" @@ -4201,7 +4476,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "" @@ -4226,41 +4501,41 @@ msgstr "" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " "'media.capture.save_dir'\n" msgstr "" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." msgstr "" -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" msgstr "" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "" @@ -4299,287 +4574,296 @@ msgstr "" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" msgstr "" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " "the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" "%s\n" msgstr "" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" "%s\n" msgstr "" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" "%s\n" msgstr "" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" msgstr "" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" "%s\n" msgstr "" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " "skipping\n" msgstr "" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " "(diff : %<PRId64>).\n" msgstr "" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" @@ -4622,132 +4906,145 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -4765,11 +5062,11 @@ msgid "" "Detect by file name extension only.\n" msgstr "" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -4779,11 +5076,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -4793,78 +5090,78 @@ msgid "" "configuration, you might end with a totally messed up xine." msgstr "" -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "" @@ -4880,5 +5177,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pl_PL\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2003-05-24 12:36+0200\n" "Last-Translator: BartÅ‚omiej Muryn <_4ever_@irc.pl>\n" "Language-Team: Polish <pl@li.org>\n" @@ -53,6 +53,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" @@ -154,11 +155,13 @@ msgstr "osd: zawiodÅ‚o iconv_open()\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr "" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -191,86 +194,86 @@ msgid "" msgstr "" #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "" - -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " +msgid "audio_alsa_out : supported modes are" msgstr "" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" msgstr "" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" msgstr "" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" msgstr "" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " +msgid " 4.1-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" msgstr "" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" +msgid " a/52 and DTS pass-through" +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" msgstr "" # src/audio_out/audio_alsa_out.c:862 src/audio_out/audio_alsa_out.c:1072 -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "urzÄ…dzenie miksera alsa" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." msgstr "" # src/audio_out/audio_alsa_out.c:1105 -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" "wtyczka wyjÅ›cia dźwiÄ™ku xine używajÄ…ca sprzÄ™tu/sterowników kompatybilnych z " @@ -287,213 +290,195 @@ msgstr "wtyczka wyjÅ›cia dźwiÄ™ku używajÄ…ca kde artsd" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "wtyczka wyjÅ›cia dźwiÄ™ku używajÄ…ca kde artsd" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "" -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "" -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "" - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "" -#: src/audio_out/audio_directx2_out.c:632 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": play cursor overran, flushing buffers\n" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" # src/xine-engine/video_out.c:890 -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, fuzzy, c-format msgid ": can't create pthread condition: %s\n" msgstr "video_out: nie mogÄ™ utworzyć wÄ…tku (%s)\n" # src/xine-engine/video_out.c:890 -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, fuzzy, c-format msgid ": can't create pthread mutex: %s\n" msgstr "video_out: nie mogÄ™ utworzyć wÄ…tku (%s)\n" # src/input/input_rtp.c:339 -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, fuzzy, c-format msgid ": can't create buffer pthread: %s\n" msgstr "input_rtp: nie mogÄ™ utworzyć nowego wÄ…tku (%s)\n" # src/xine-engine/video_out.c:890 -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, fuzzy, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr "video_out: nie mogÄ™ utworzyć wÄ…tku (%s)\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr "" # src/xine-engine/video_out.c:890 -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, fuzzy, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr "video_out: nie mogÄ™ utworzyć wÄ…tku (%s)\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr "" # src/audio_out/audio_esd_out.c:441 -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 #, fuzzy msgid "second xine audio output plugin using directx" msgstr "wtyczka wyjÅ›cia dźwiÄ™ku używajÄ…ca kde artsd" # src/audio_out/audio_esd_out.c:441 -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 #, fuzzy msgid "xine audio output plugin for win32 using directx" msgstr "wtyczka wyjÅ›cia dźwiÄ™ku używajÄ…ca kde artsd" @@ -504,6 +489,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "" @@ -517,7 +503,7 @@ msgstr "" msgid "esd audio output latency (adjust a/v sync)" msgstr "opóźnienie wyjÅ›cia dźwieku esd (regulacja synchronizacji a/v)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -554,8 +540,20 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "wtyczka wyjÅ›cia dźwiÄ™ku xine używajÄ…ca IRIX libaudio" +# src/input/input_vcd.c:1184 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + # src/audio_out/audio_esd_out.c:441 -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:921 #, fuzzy msgid "xine output plugin for JACK Audio Connection Kit" msgstr "wtyczka wyjÅ›cia dźwiÄ™ku używajÄ…ca kde artsd" @@ -582,22 +580,22 @@ msgstr "" msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -607,20 +605,22 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -628,13 +628,13 @@ msgid "" msgstr "" # src/audio_out/audio_oss_out.c:708 -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 #, fuzzy msgid "a/v sync method to use by OSS" msgstr "" "metoda synchronizacji A/V używana przez OSS, zależy od sterownika/sprzÄ™tu" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -664,7 +664,8 @@ msgid "" "ioctls and you experience sync errors after long playback" msgstr "" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -672,29 +673,36 @@ msgid "" msgstr "" # src/audio_out/audio_esd_out.c:414 -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 #, fuzzy msgid "OSS audio output latency (adjust a/v sync)" msgstr "opóźnienie wyjÅ›cia dźwieku esd (regulacja synchronizacji a/v)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1012 +msgid " (a/52 pass-through not enabled in xine config)" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -704,31 +712,31 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "" # src/audio_out/audio_oss_out.c:923 -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" "wtyczka wyjÅ›cia dźwiÄ™ku xine, używajÄ…ca urzÄ…dzeÅ„/sterowników kompatybilnych " "z oss" # src/audio_out/audio_alsa_out.c:201 src/audio_out/audio_alsa_out.c:927 -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 #, fuzzy msgid "device used for pulseaudio" msgstr "urzÄ…dzenie użyte do wyjÅ›cia 4-kanaÅ‚owego" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" # src/audio_out/audio_alsa_out.c:201 src/audio_out/audio_alsa_out.c:927 # src/audio_out/audio_esd_out.c:441 -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 #, fuzzy msgid "xine audio output plugin using pulseaudio sound server" msgstr "wtyczka wyjÅ›cia dźwiÄ™ku używajÄ…ca esound" @@ -761,31 +769,187 @@ msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "" "wtyczka wyjÅ›cia dźwiÄ™ku xine kompatybilna z urzÄ…dzeniami/sterownikami sun" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +#, fuzzy +msgid "MPEG-4 postprocessing quality" +msgstr "jakość post-przetwarzania ffmpeg mpeg-4" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +# src/dxr3/dxr3_mpeg_encoders.c:182 +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +#, fuzzy +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "dxr3enc: czÄ™stotliwość wyjśćia rte mpeg (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/demuxers/demux_asf.c:450 +#, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Odtwarzanie indeksu..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "" # src/demuxers/demux_avi.c:659 -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: index pliku avi uszkodzony\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "" @@ -797,20 +961,26 @@ msgid "invalid FILM chunk size\n" msgstr "nieprawidÅ‚owy rozmiar fragmentu filmu\n" # src/demuxers/demux_film.c:254 -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "nie rozpoznany fragment filmu\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -826,7 +996,8 @@ msgstr "" msgid "iff: unknown Chunk: %s\n" msgstr "" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "" @@ -838,7 +1009,7 @@ msgid "" msgstr "" #: src/demuxers/demux_mpeg_block.c:305 -#, fuzzy +#, fuzzy, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -860,25 +1031,25 @@ msgstr "" "demux_mpeg_block: uwaga: nagłówek pes wskazuje na to ze strumieÅ„ może być " "zaszyfrowany (tryb szyfrowania %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " "to xine developers.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" # src/demuxers/demux_mpeg_block.c:456 -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, fuzzy, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -887,7 +1058,7 @@ msgstr "" "demux_mpeg_block: uwaga: nagłówek pes wskazuje na to ze strumieÅ„ może być " "zaszyfrowany (tryb szyfrowania %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, fuzzy, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -903,18 +1074,19 @@ msgstr "" "ogg: Å›cieżka oznaczona jako vorbis ale nie znaleziono nagłówka strumienia " "vorbis.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: błędne parametry nagłówka\n" # src/demuxers/demux_avi.c:1257 -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: niewspierany typ dźwiÄ™ku %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" @@ -939,7 +1111,7 @@ msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" "demux_wc3movie: fragment zrzutu odnosi siÄ™ do błędnej palety (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "demux_wc3movie: WystÄ…piÅ‚ problem przy Å‚adowaniu fragmentów palety\n" @@ -962,6 +1134,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "" @@ -1035,6 +1208,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "" @@ -1049,25 +1223,30 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "" @@ -1097,6 +1276,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "" @@ -1193,18 +1373,22 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1215,6 +1399,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1303,6 +1488,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "" @@ -1323,57 +1509,60 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" msgstr "" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" # src/input/input_http.c:134 -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, fuzzy, c-format msgid "%s: can't connect to %s:%d\n" msgstr "http: nie mogÄ™ siÄ™ podłączyć do >%s<\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "" # src/input/input_net.c:138 -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, fuzzy, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_net: nie mogÄ™ podłączyć siÄ™ do '%s'.\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "" # src/audio_out/audio_alsa_out.c:201 src/audio_out/audio_alsa_out.c:927 -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 #, fuzzy msgid "device used for CD audio" msgstr "urzÄ…dzenie użyte do wyjÅ›cia 4-kanaÅ‚owego" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1382,11 +1571,11 @@ msgid "" "listening habits." msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1394,19 +1583,19 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1414,11 +1603,11 @@ msgid "" "used for anything but CDDB caching." msgstr "" -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1428,180 +1617,212 @@ msgid "" msgstr "" # src/input/input_http.c:98 -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, fuzzy, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_http: otwarcie gniazda zawiodÅ‚o\n" # src/input/input_http.c:98 -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, fuzzy, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_http: otwarcie gniazda zawiodÅ‚o\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "" # src/input/input_http.c:98 -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, fuzzy, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_http: otwarcie gniazda zawiodÅ‚o\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" # src/input/input_http.c:98 -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, fuzzy, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_http: otwarcie gniazda zawiodÅ‚o\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" msgstr "" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" msgstr "" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "" # src/input/input_rtp.c:339 -#: src/input/input_dvb.c:2999 -#, fuzzy +#: src/input/input_dvb.c:3016 +#, fuzzy, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_rtp: nie mogÄ™ utworzyć nowego wÄ…tku (%s)\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." msgstr "" -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 #, fuzzy msgid "DVB (Digital TV) input plugin" msgstr "wtyczka wejÅ›cia pliku" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "" -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "" # src/audio_out/audio_alsa_out.c:181 src/audio_out/audio_alsa_out.c:728 # src/audio_out/audio_alsa_out.c:913 src/audio_out/audio_alsa_out.c:957 -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 #, fuzzy msgid "device used for DVD playback" msgstr "urzÄ…dzenie użyte w trybie mono" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." msgstr "" -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1612,11 +1833,11 @@ msgid "" "See the documentation on raw device setup (man raw) for further information." msgstr "" -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " @@ -1624,12 +1845,12 @@ msgid "" msgstr "" # src/input/input_vcd.c:1184 -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 #, fuzzy msgid "path to the title key cache" msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1638,44 +1859,44 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." msgstr "" -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1694,11 +1915,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1712,11 +1933,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1729,145 +1950,145 @@ msgid "" msgstr "" # src/input/input_file.c:353 -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: błąd odczytu (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "" # src/input/input_file.c:353 -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, fuzzy, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: błąd odczytu (%s)\n" # src/input/input_file.c:353 -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, fuzzy, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: błąd odczytu (%s)\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "wtyczka wejÅ›cia pliku" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "miejsce startu nawigatora plików" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "listowanie ukrytych plików" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "" # src/input/input_net.c:302 -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 #, fuzzy msgid "gnome-vfs input plugin as shipped with xine" msgstr "wtyczka wejÅ›cia net dostarczana z xine" # src/input/input_rtp.c:339 -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, fuzzy, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_rtp: nie mogÄ™ utworzyć nowego wÄ…tku (%s)\n" # src/input/input_http.c:416 src/input/input_http.c:537 -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: błąd odczytu %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "" # src/input/input_http.c:445 -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: błędna odpowiedź http\n" # src/input/input_http.c:450 -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: przekierowanie 3xx: >%d %s<\n" # src/input/input_http.c:455 -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: status http nie jest 2xx: >%d %s<\n" # src/input/input_http.c:464 -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, fuzzy, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: dÅ‚ugość zawartoÅ›ci = %Ld bytes\n" # src/input/input_http.c:416 src/input/input_http.c:537 -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, fuzzy, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: błąd odczytu %d\n" # src/input/input_http.c:640 -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "wtyczka wejÅ›cia http" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -1876,27 +2097,27 @@ msgid "" msgstr "" # src/input/input_http.c:640 -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 #, fuzzy msgid "mms streaming input plugin" msgstr "wtyczka strumienia standardowego wejÅ›cia" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." msgstr "" -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -1927,55 +2148,57 @@ msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: nie mogÄ™ podłączyć siÄ™ do '%s'.\n" # src/input/input_net.c:302 -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "wtyczka wejÅ›cia net dostarczana z xine" # src/input/input_http.c:640 -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 #, fuzzy msgid "pnm streaming input plugin" msgstr "wtyczka strumienia standardowego wejÅ›cia" # src/input/input_rtp.c:339 -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, fuzzy, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_rtp: nie mogÄ™ utworzyć nowego wÄ…tku (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "" # src/input/input_file.c:353 -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, fuzzy, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_file: błąd odczytu (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "" @@ -2036,111 +2259,137 @@ msgstr "nie da siÄ™ dowiÄ…zać do '%s'.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: zatrzymuje odczyt wÄ…tku...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: odczyt wÄ…tku zakoÅ„czony\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "" # src/input/input_rtp.c:339 -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: nie mogÄ™ utworzyć nowego wÄ…tku (%s)\n" # src/input/input_net.c:302 -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "wtyczka wejÅ›cia RTP i UDP dostarczana z xine" # src/input/input_http.c:640 -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 #, fuzzy msgid "rtsp streaming input plugin" msgstr "wtyczka strumienia standardowego wejÅ›cia" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "" # src/input/input_http.c:98 -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, fuzzy, c-format msgid "stdin: failed to open '%s'\n" msgstr "input_http: otwarcie gniazda zawiodÅ‚o\n" # src/input/input_http.c:640 -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "wtyczka strumienia standardowego wejÅ›cia" # src/input/net_buf_ctrl.c:67 -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 #, fuzzy msgid "Buffer underrun..." msgstr "Buforowanie..." # src/input/net_buf_ctrl.c:67 -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 #, fuzzy msgid "Buffer overrun..." msgstr "Buforowanie..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "" -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 #, fuzzy msgid "v4l tv input plugin" msgstr "wtyczka wejÅ›cia pliku" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 #, fuzzy msgid "v4l radio input plugin" msgstr "wtyczka wejÅ›cia pliku" # src/input/input_vcd.c:1184 -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 #, fuzzy msgid "v4l video device" msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" # src/input/input_vcd.c:1184 -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 #, fuzzy msgid "The path to your Video4Linux video device." msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" # src/input/input_vcd.c:1184 -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" + +# src/input/input_vcd.c:1184 +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +# src/input/input_vcd.c:1184 +#: src/input/input_v4l.c:1944 #, fuzzy msgid "v4l radio device" msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" # src/input/input_vcd.c:1184 -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 #, fuzzy msgid "The path to your Video4Linux radio device." msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "" @@ -2155,37 +2404,37 @@ msgid "Video CD input plugin" msgstr "wtyczka wejÅ›cia VCD" # src/input/input_rtp.c:205 -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, fuzzy, c-format msgid "unable to open %s: %s.\n" msgstr "nie mogÄ™ znaleźć IP dla '%s'.\n" # src/input/input_net.c:126 -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, fuzzy, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_net: nie mogÄ™ znaleźć IP dla '%s'.\n" # src/audio_out/audio_alsa_out.c:181 src/audio_out/audio_alsa_out.c:728 # src/audio_out/audio_alsa_out.c:913 src/audio_out/audio_alsa_out.c:957 -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 #, fuzzy msgid "device used for VCD playback" msgstr "urzÄ…dzenie użyte w trybie mono" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." msgstr "" -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "" # src/input/input_http.c:134 -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, fuzzy, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "http: nie mogÄ™ siÄ™ podłączyć do >%s<\n" @@ -2197,10 +2446,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "http: nie mogÄ™ siÄ™ podłączyć do >%s<\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2210,48 +2467,48 @@ msgstr "" msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "" # src/input/input_http.c:416 src/input/input_http.c:537 -#: src/input/mmsh.c:199 -#, fuzzy +#: src/input/mmsh.c:197 +#, fuzzy, c-format msgid "libmmsh: send error\n" msgstr "input_http: błąd odczytu\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "" # src/input/input_http.c:450 -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, fuzzy, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "input_http: przekierowanie 3xx: >%d %s<\n" # src/input/input_http.c:455 -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, fuzzy, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "input_http: status http nie jest 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "" -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "" @@ -2261,7 +2518,7 @@ msgstr "" msgid "Buffering..." msgstr "Buforowanie..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2269,14 +2526,14 @@ msgid "" msgstr "" # src/input/input_net.c:138 -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, fuzzy, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_net: nie mogÄ™ podłączyć siÄ™ do '%s'.\n" # src/input/input_http.c:98 -#: src/input/pnm.c:764 -#, fuzzy +#: src/input/pnm.c:763 +#, fuzzy, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_http: otwarcie gniazda zawiodÅ‚o\n" @@ -2316,106 +2573,106 @@ msgstr "" msgid "failed to find a device with a VCD" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2436,11 +2693,11 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2448,11 +2705,11 @@ msgid "" "See the help for the title_format for the meanings of these." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2469,7 +2726,8 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "" @@ -2514,132 +2772,19 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:128 -msgid "libfaad: libfaad NeAACDecOpen() failed.\n" -msgstr "" - -#: src/libfaad/xine_faad_decoder.c:137 -msgid "libfaad: libfaad NeAACDecInit2 failed.\n" -msgstr "" - -#: src/libfaad/xine_faad_decoder.c:148 -msgid "libfaad: libfaad NeAACDecInit failed.\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 +#: src/libfaad/xine_faad_decoder.c:132 #, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "" -#: src/libffmpeg/ff_video_decoder.c:338 +#: src/libfaad/xine_faad_decoder.c:141 #, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "" -#: src/libffmpeg/ff_video_decoder.c:836 +#: src/libfaad/xine_faad_decoder.c:152 #, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1562 -#, fuzzy -msgid "MPEG-4 postprocessing quality" -msgstr "jakość post-przetwarzania ffmpeg mpeg-4" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -# src/dxr3/dxr3_mpeg_encoders.c:182 -#: src/libffmpeg/ffmpeg_encoder.c:165 -#, fuzzy -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "dxr3enc: czÄ™stotliwość wyjśćia rte mpeg (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." +msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:239 @@ -2648,10 +2793,12 @@ msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "" @@ -2676,169 +2823,171 @@ msgid "" "information on how to install the codecs." msgstr "" -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "" # src/libspucc/xine_decoder.c:220 -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 #, fuzzy msgid "display closed captions in MPEG-2 streams" msgstr "włącz closed-caption w strumieniach mpeg-2" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" # src/libspucc/xine_decoder.c:227 -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 #, fuzzy msgid "closed-captioning foreground/background scheme" msgstr "schemat (tÅ‚o/napisy) dla closed-caption" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "" # src/libspucc/xine_decoder.c:233 -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 #, fuzzy msgid "standard closed captioning font" msgstr "standardowa czcionka dla closed-caption" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "" # src/libspucc/xine_decoder.c:239 -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 #, fuzzy msgid "italic closed captioning font" msgstr "czcionka italic dla closed-caption" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "" # src/libspucc/xine_decoder.c:245 -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 #, fuzzy msgid "closed captioning font size" msgstr "rozmiar czcionki closed-caption" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "" # src/libspucc/xine_decoder.c:250 -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 #, fuzzy msgid "center-adjust closed captions" msgstr "centrowanie closed-caption" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "" # src/libsputext/xine_decoder.c:1078 -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 #, fuzzy msgid "font for external subtitles" msgstr "fonty dla zewnÄ™trznych napisów" # src/libsputext/xine_decoder.c:1084 -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 #, fuzzy msgid "subtitle vertical offset (relative window size)" msgstr "pionowe wyrównanie napisów (wzglÄ™dny rozmiar okna)" # src/libsputext/xine_decoder.c:1078 -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 #, fuzzy msgid "encoding of subtitles" msgstr "kodowanie napisów" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " "in the subtitle being shown until the next one takes over." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" # src/libsputext/xine_decoder.c:1084 -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 #, fuzzy msgid "subtitle vertical offset" msgstr "pionowe wyrównanie napisów (wzglÄ™dny rozmiar okna)" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." msgstr "" # src/libsputext/xine_decoder.c:1078 -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 #, fuzzy msgid "font for subtitles" msgstr "fonty dla zewnÄ™trznych napisów" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "" # src/libsputext/xine_decoder.c:1078 -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 #, fuzzy msgid "encoding of the subtitles" msgstr "kodowanie napisów" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2846,11 +2995,11 @@ msgid "" "used." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -2936,22 +3085,22 @@ msgstr "" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "" @@ -2982,6 +3131,7 @@ msgid "" msgstr "" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr "" @@ -2993,6 +3143,7 @@ msgstr[0] "" msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr "" @@ -3006,7 +3157,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3020,6 +3171,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3059,7 +3213,8 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "" @@ -3099,7 +3254,7 @@ msgid "" "The available selections should be self-explaining." msgstr "" -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3218,7 +3373,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3226,13 +3381,13 @@ msgid "" "\n" msgstr "" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3266,150 +3421,156 @@ msgid "xine video output plugin using the ascii-art library" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca biblioteki ascii-art" # src/video_out/video_out_aa.c:307 -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 #, fuzzy msgid "xine video output plugin using the Color AsCii Art library" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca biblioteki ascii-art" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" # src/dxr3/video_out_dxr3.c:287 -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 #, fuzzy msgid "enable video colour key" msgstr "dxr3: wartość koloru kluczowego dla overlay" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" # src/dxr3/video_out_dxr3.c:287 -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 #, fuzzy msgid "video colour key" msgstr "dxr3: wartość koloru kluczowego dla overlay" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." msgstr "" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "" # src/video_out/video_out_directfb.c:569 -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 #, fuzzy msgid "xine video output plugin using DirectFB." msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca biblioteki DirectFB" -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" # src/video_out/video_out_directfb.c:569 -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 #, fuzzy msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca biblioteki DirectFB" # src/video_out/video_out_vidix.c:869 -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 #, fuzzy msgid "xine video output plugin for win32 using directx" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca libvidix dla X11" @@ -3422,12 +3583,12 @@ msgid "" msgstr "" # src/video_out/video_out_fb.c:721 -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 #, fuzzy msgid "framebuffer device name" msgstr "urzÄ…dzenie buforu ramki" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3436,6 +3597,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "" @@ -3454,6 +3616,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3479,11 +3642,11 @@ msgstr "" msgid "xine video output plugin which displays nothing" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca libvidix dla X11" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3512,23 +3675,22 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" msgstr "" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" @@ -3536,12 +3698,13 @@ msgid "" msgstr "" # src/video_out/video_out_opengl.c:1124 -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 #, fuzzy msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca OpenGL - TNG" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3556,6 +3719,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3577,34 +3741,38 @@ msgid "" msgstr "" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "" # src/dxr3/video_out_dxr3.c:287 -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 #, fuzzy msgid "video overlay colour key" msgstr "dxr3: wartość koloru kluczowego dla overlay" @@ -3636,27 +3804,29 @@ msgid "" "memory." msgstr "" -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "" # src/video_out/video_out_sdl.c:696 -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca Simple Direct Media Layer" @@ -3667,68 +3837,77 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca biblioteki ascii-art" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " "README.syncfb for informations on how to update it.)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "" # src/video_out/video_out_syncfb.c:1170 -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "wtyczka wyjÅ›cia obrazu xine używajÄ…ca moduÅ‚u SyncFB dla kart Matrox G200/G400" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3736,111 +3915,115 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "" # src/dxr3/video_out_dxr3.c:290 -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 #, fuzzy msgid "video overlay colour key red component" msgstr "dxr3: zakres koloru kluczowego" # src/dxr3/video_out_dxr3.c:290 -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 #, fuzzy msgid "video overlay colour key green component" msgstr "dxr3: zakres koloru kluczowego" # src/dxr3/video_out_dxr3.c:287 -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 #, fuzzy msgid "video overlay colour key blue component" msgstr "dxr3: wartość koloru kluczowego dla overlay" # src/video_out/video_out_vidix.c:869 -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca libvidix dla X11" # src/video_out/video_out_fb.c:885 -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "" "wtyczka wyjÅ›cia obrazu xine używajÄ…ca libvidix dla linuxowego urzÄ…dzenia " "buforu ramki" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3850,44 +4033,61 @@ msgid "" "\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "" # src/video_out/video_out_xshm.c:1445 -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" "wtyczka wyjÅ›cia obrazu xine używajaca rozszerzenie dzielonej pamiÄ™ci MIT X" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -3895,73 +4095,42 @@ msgid "" "Xv?!\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -#, fuzzy -msgid "autopaint colour key" -msgstr "Auto-tworzenie koloru-klucza przez Xv" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -#, fuzzy -msgid "Make Xv autopaint its colour key." -msgstr "Auto-tworzenie koloru-klucza przez Xv" - -# src/video_out/video_out_xv.c:1408 -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -#, fuzzy -msgid "bilinear scaling mode" -msgstr "tryb skalowania bilinearnego (permedia 2/3)" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4000,258 +4169,290 @@ msgid "" msgstr "" # src/video_out/video_out_xv.c:1479 -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca rozszerzenia obrazu MIT X" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "" # src/video_out/video_out_xv.c:1479 -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 #, fuzzy msgid "xine video output plugin using the XvMC X video extension" msgstr "wtyczka wyjÅ›cia obrazu xine używajÄ…ca rozszerzenia obrazu MIT X" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" " for hardware colour space conversion and scaling\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "" -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "" -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" @@ -4260,6 +4461,74 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "" +#: src/video_out/xv_common.h:30 +#, fuzzy +msgid "autopaint colour key" +msgstr "Auto-tworzenie koloru-klucza przez Xv" + +#: src/video_out/xv_common.h:31 +#, fuzzy +msgid "Make Xv autopaint its colour key." +msgstr "Auto-tworzenie koloru-klucza przez Xv" + +# src/video_out/video_out_xv.c:1408 +#: src/video_out/xv_common.h:34 +#, fuzzy +msgid "bilinear scaling mode" +msgstr "tryb skalowania bilinearnego (permedia 2/3)" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +msgid "Xv port number" +msgstr "" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +msgid "bicubic filtering" +msgstr "" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "" @@ -4294,33 +4563,38 @@ msgid "" "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 #, fuzzy msgid "method to sync audio and video" msgstr "wybierz metodÄ™ synchronizacji dźwiÄ™ku z obrazem" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4343,11 +4617,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4356,34 +4630,34 @@ msgid "" msgstr "" # src/xine-engine/audio_out.c:828 -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 #, fuzzy msgid "always resample to this rate (0 to disable)" msgstr "jeÅ›li !=0 zawsze ponowne próbkowanie do podanej czÄ™stotliwoÅ›ci" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4392,24 +4666,24 @@ msgid "" msgstr "" # src/xine-engine/audio_out.c:868 -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 #, fuzzy msgid "startup audio volume" msgstr "gÅ‚oÅ›ność dźwiÄ™ku" # src/xine-engine/audio_out.c:872 -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 #, fuzzy msgid "The overall audio volume set at xine startup." msgstr "przywracanie gÅ‚oÅ›noÅ›ci przy starcie" # src/xine-engine/audio_out.c:872 -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "przywracanie gÅ‚oÅ›noÅ›ci przy starcie" # src/xine-engine/audio_out.c:873 -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 #, fuzzy msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" @@ -4417,8 +4691,8 @@ msgstr "" "starcie" # src/xine-engine/video_out.c:893 -#: src/xine-engine/audio_out.c:2259 -#, fuzzy +#: src/xine-engine/audio_out.c:2264 +#, fuzzy, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out: przykro mi, to nie powinno sie zdarzyć.\n" @@ -4429,42 +4703,43 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "" #: src/xine-engine/info_helper.c:228 -#, fuzzy +#, fuzzy, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "osd: nie można znaleźć zestawu znaków dla aktualnej lokalizacji\n" @@ -4497,7 +4772,7 @@ msgstr "wtyczka strumienia standardowego wejÅ›cia" # src/input/input_rtp.c:339 #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, fuzzy, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rtp: nie mogÄ™ utworzyć nowego wÄ…tku (%s)\n" @@ -4522,41 +4797,41 @@ msgstr "" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " "'media.capture.save_dir'\n" msgstr "" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." msgstr "" -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" msgstr "" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "" @@ -4595,32 +4870,32 @@ msgstr "" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" msgstr "" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " @@ -4628,49 +4903,49 @@ msgid "" msgstr "" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: wtyczka %s znaleziona\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, fuzzy, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: wtyczka %s znaleziona\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: wtyczka %s znaleziona\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "load_plugins: wtyczka %s znaleziona\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: nieznany typ wtyczki %d w %s\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, fuzzy, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: nieznany typ wtyczki %d w %s\n" # src/xine-engine/load_plugins.c:520 -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: nie udaÅ‚ siÄ™ start %s\n" # src/xine-engine/load_plugins.c:138 -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, fuzzy, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4680,7 +4955,7 @@ msgstr "" "%s\n" # src/xine-engine/load_plugins.c:300 -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -4690,13 +4965,13 @@ msgstr "" "%s\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: pomijanie katalogu wtyczek nie do odczytu %s.\n" # src/xine-engine/load_plugins.c:138 -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -4706,7 +4981,7 @@ msgstr "" "%s\n" # src/xine-engine/load_plugins.c:300 -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, fuzzy, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "" @@ -4714,31 +4989,32 @@ msgstr "" "%s\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, fuzzy, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: nieznany typ wtyczki %d w %s\n" # src/xine-engine/load_plugins.c:153 -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, fuzzy, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: wtyczka %s znaleziona\n" # src/xine-engine/load_plugins.c:520 -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, fuzzy, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: nie udaÅ‚ siÄ™ start %s\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" msgstr "" # src/xine-engine/load_plugins.c:138 -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, fuzzy, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4747,50 +5023,52 @@ msgstr "" "load_plugins: nie mogÄ™ (etap 2) otworzyć biblioteki wtyczki %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -4799,65 +5077,69 @@ msgstr "" "osd: nieznana sekwencja zaczynajÄ…ca siÄ™ od bajtu 0x%02X w kodowaniu \"%s\", " "pomijanie\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: nie można znaleźć zestawu znaków dla aktualnej lokalizacji\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, fuzzy, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: niewspierana konwersja %s -> UCS-2\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: nie zostaÅ‚ zdefiniowany font\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "" -#: src/xine-engine/osd.c:1344 -#, fuzzy +#: src/xine-engine/osd.c:1350 +#, fuzzy, c-format msgid "osd: error in rendering\n" msgstr "osd: nie zostaÅ‚ zdefiniowany font\n" # src/xine-engine/osd.c:863 -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 #, fuzzy msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "paleta użyta przy napisach (tÅ‚o-napisy-kontur)" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " @@ -4865,51 +5147,52 @@ msgid "" msgstr "" # src/xine-engine/video_out.c:308 -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d ramek dostarczonych, %d ramek pominiÄ™tych, %d ramek porzuconych\n" # src/xine-engine/video_out.c:351 -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, fuzzy, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " "(diff : %<PRId64>).\n" msgstr "video_out: odrzucam obraz o pts %lld bo jest za stary (diff : %lld).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" # src/xine-engine/video_out.c:893 -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out: przykro mi, to nie powinno sie zdarzyć.\n" @@ -4956,146 +5239,159 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "" # src/xine-engine/xine.c:415 -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, fuzzy, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: nie mogÄ™ znaleźć wtyczki wejÅ›cia dla tego MRL\n" # src/xine-engine/xine.c:415 -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, fuzzy, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: nie mogÄ™ znaleźć wtyczki wejÅ›cia dla tego MRL\n" # src/xine-engine/xine.c:415 -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, fuzzy, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: nie mogÄ™ znaleźć wtyczki wejÅ›cia dla tego MRL\n" # src/xine-engine/xine.c:471 -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: zawiódÅ‚ start wybranego demultiplexera %s\n" # src/input/input_http.c:640 -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, fuzzy, c-format msgid "xine: join rip input plugin\n" msgstr "wtyczka wejÅ›cia VCD" # src/input/input_http.c:640 -#: src/xine-engine/xine.c:928 -#, fuzzy +#: src/xine-engine/xine.c:959 +#, fuzzy, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "wtyczka wejÅ›cia VCD" # src/xine-engine/xine.c:471 -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: zawiódÅ‚ start ostatnio próbowanego demultiplexera %s\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "" # src/xine-engine/xine.c:436 -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: nie mogÄ™ znaleźć demultiplexera dla >%s<\n" + +# src/xine-engine/xine.c:436 +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: nie mogÄ™ znaleźć demultiplexera dla >%s<\n" # src/xine-engine/xine.c:436 -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, fuzzy, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: nie mogÄ™ znaleźć demultiplexera dla >%s<\n" # src/xine-engine/xine.c:471 -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, fuzzy, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "xine: zawiódÅ‚ start demultiplexera\n" # src/xine-engine/xine.c:471 -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: zawiódÅ‚ start demultiplexera\n" # src/xine-engine/xine.c:471 -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: brak dostÄ™pnego demultiplexera\n" # src/xine-engine/xine.c:471 -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: zawiódÅ‚ start demultiplexera\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5113,11 +5409,11 @@ msgid "" "Detect by file name extension only.\n" msgstr "" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5127,11 +5423,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5141,11 +5437,11 @@ msgid "" "configuration, you might end with a totally messed up xine." msgstr "" -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " @@ -5153,70 +5449,70 @@ msgid "" msgstr "" # src/xine-engine/xine.c:1025 -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "wiadomoÅ›ci" # src/xine-engine/xine.c:1026 -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "wtyczka" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "" # src/input/input_file.c:353 -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 #, fuzzy msgid "File not found:" msgstr "input_file: błąd odczytu (%s)\n" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "" @@ -5232,304 +5528,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "" - -# src/xine-engine/video_out.c:890 -#, fuzzy -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "video_out: nie mogÄ™ utworzyć wÄ…tku (%s)\n" - -# src/audio_out/audio_alsa_out.c:211 src/audio_out/audio_alsa_out.c:934 -#, fuzzy -#~ msgid "device used for 5+ channel output" -#~ msgstr "urzÄ…dzenie użyte do wyjÅ›cia 5-kanaÅ‚owego" - -# src/audio_out/audio_alsa_out.c:1009 src/audio_out/audio_alsa_out.c:1022 -# src/audio_out/audio_alsa_out.c:1035 src/audio_out/audio_alsa_out.c:1053 -#~ msgid "used to inform xine about what the sound card can do" -#~ msgstr "używane do informowania xine o możliwoÅ›ciach karty dźwiÄ™kowej" - -# src/audio_out/audio_oss_out.c:775 -#~ msgid "Adjust a/v sync for OSS softsync" -#~ msgstr "regulacja synchronizacji a/v dla softsync OSS" - -# src/audio_out/audio_oss_out.c:776 -#~ msgid "Use this to manually adjust a/v sync if you're using softsync" -#~ msgstr "manualna regulacja sychronizacji a/v z wykożystaniem softsync" - -# src/audio_out/audio_oss_out.c:802 -#~ msgid "Enable 4.0 channel analog surround output" -#~ msgstr "włącz 4-kanaÅ‚owe, analogowe wyjÅ›cie dźwiÄ™ku surround" - -# src/audio_out/audio_oss_out.c:813 -#~ msgid "Enable 5.0 channel analog surround output" -#~ msgstr "włącz 5-kanaÅ‚owe, analogowe wyjÅ›cie dźwiÄ™ku surround" - -# src/audio_out/audio_oss_out.c:824 -#~ msgid "Enable 5.1 channel analog surround output" -#~ msgstr "włącz 5.1-kanaÅ‚owe, analogowe wyjÅ›cie dźwiÄ™ku surround" - -# src/audio_out/audio_oss_out.c:851 -#, fuzzy -#~ msgid "OSS mixer device" -#~ msgstr "urzÄ…dzenie miksera oss" - -# src/audio_out/audio_sun_out.c:664 -#~ msgid "device used for audio output with the 'Sun' audio plugin" -#~ msgstr "urzÄ…dzenie używane do wyjÅ›cia dźwiÄ™ku z wtyczkÄ… dźwiÄ™ku 'Sun'" - -# src/dxr3/dxr3.h:34 -#~ msgid "The device file of the dxr3 mpeg decoder card control device." -#~ msgstr "plik urzÄ…dzenia karty dekodujÄ…cej dxr3" - -# src/dxr3/dxr3_decode_video.c:177 -#~ msgid "This is relevant for progressive video only (most PAL films)." -#~ msgstr "" -#~ "to jest zwiÄ…zane tylko z progresywnym obrazem (wiÄ™kszość filmów PAL)" - -# src/dxr3/dxr3_decode_video.c:185 -#~ msgid "Enable this for streams with wrong frame durations." -#~ msgstr "włącz to dla strumieni z błędnymi dÅ‚ugoÅ›ciami ramek" - -# src/dxr3/dxr3_mpeg_encoders.c:390 -#~ msgid "The encoding quality of the libfame mpeg encoder library." -#~ msgstr "jakość kodowania przez bibliotekÄ™ kodera libfame" - -# src/dxr3/dxr3_scr.c:82 -#~ msgid "Scr priorities greater 5 make the dxr3 xine's master clock." -#~ msgstr "priorytet SCR wiÄ™kszy od 5 robi dxr3 głównym zegarem xine" - -# src/dxr3/video_out_dxr3.c:157 -#~ msgid "If disabled, will assume source has 4:3 aspect ratio." -#~ msgstr "jeÅ›li wyłączone, przyjmie że źródÅ‚o ma proporcje 4:3" - -# src/dxr3/video_out_dxr3.c:222 -#~ msgid "" -#~ "Content other than mpeg has to pass an additional reencoding stage, " -#~ "because the dxr3 handles mpeg only." -#~ msgstr "" -#~ "zawartość inna niż mpeg musi przejść etap ponownego kodowania, ponieważ " -#~ "karty dxr3 wspierajÄ… tylko format mpeg" - -# src/dxr3/video_out_dxr3.c:291 -#~ msgid "A greater value widens the tolerance for the overlay keycolor" -#~ msgstr "wiÄ™ksza wartość zwiÄ™ksza tolerancjÄ™ dla koloru kluczowego overlay" - -# src/input/input_http.c:107 -#, fuzzy -#~ msgid "input_cdda: cannot connect to host.\n" -#~ msgstr "input_http: nie mogÄ™ podłączyć siÄ™ do hosta\n" - -# src/input/input_net.c:126 -#, fuzzy -#~ msgid "input_cdda: unable to resolve '%s'.\n" -#~ msgstr "input_net: nie mogÄ™ znaleźć IP dla '%s'.\n" - -# src/input/input_net.c:138 -#, fuzzy -#~ msgid "input_cdda: unable to connect to '%s'.\n" -#~ msgstr "input_net: nie mogÄ™ podłączyć siÄ™ do '%s'.\n" - -# src/input/input_vcd.c:1184 -#~ msgid "path to your local vcd device file" -#~ msgstr "Å›cieżka dostÄ™pu do pliku lokalnego urzÄ…dzenia vcd" - -# src/liba52/xine_decoder.c:574 -#~ msgid "a/52 volume control" -#~ msgstr "kontrola gÅ‚oÅ›noÅ›ci a/52" - -# src/libdivx4/xine_decoder.c:569 -#~ msgid "Relative path to libdivxdecore.so to open" -#~ msgstr "wzgÄ™dna Å›cieżka do otwarcia libdivxdecore.so" - -# src/libdivx4/xine_decoder.c:599 -#~ msgid "the postprocessing level, 0 = none and fast, 6 = all and slow" -#~ msgstr "poziom post-przetwarzania, 0 = brak i szybki, 6 = peÅ‚ny ale powolny" - -# src/libdivx4/xine_decoder.c:602 -#~ msgid "use divx4 plugin for msmpeg4v3 streams" -#~ msgstr "użyj wtyczki divx4 dla strumieni msmpeg4v3" - -# src/libdivx4/xine_decoder.c:607 -#~ msgid "Divx version to check for (set to 0 (default) if unsure)" -#~ msgstr "" -#~ "wersja divx której ma szukać xine (ustwić na 0 (domyÅ›lnie) jeÅ›li brak " -#~ "pewnoÅ›ci)" - -# src/dxr3/dxr3_mpeg_encoders.c:183 -#, fuzzy -#~ msgid "" -#~ "The bitrate the libavcodec mpeg encoder should use for dxr3's encoding " -#~ "mode" -#~ msgstr "" -#~ "czÄ™stotliwość jakÄ… biblioteka librte powinna użyć dla trybu kodowania dxr3" - -# src/libsputext/xine_decoder.c:1084 -#, fuzzy -#~ msgid "Subtitle size (relative window size)" -#~ msgstr "rozmiar napisów (wzglÄ™dny rozmiar okna)" - -# src/libxvid/xine_decoder.c:236 -#~ msgid "" -#~ "xvid: there is mismatch between API used by currently installed XviD\n" -#~ "xvid: library (%d.%d) and library used to compile this plugin (%d.%d).\n" -#~ "xvid: Compiling this plugin against current XviD library should help.\n" -#~ msgstr "" -#~ "xvid: wystÄ…piÅ‚a niezgodność miÄ™dzy obecnie używanÄ… bibliotekÄ… XviD\n" -#~ "xvid:(%d.%d) a bibliotekÄ… użytÄ… do kompilacji tej wtyczki (%d.%d).\n" -#~ "xvid: rekompilacja tej wtyczki z obecnÄ… bibliotekÄ… XviD powinna pomóc.\n" - -# src/video_out/video_out_opengl.c:1106 -#~ msgid "gamma correction for OpenGL driver" -#~ msgstr "korekta gamma dla sterownika OpenGL" - -# src/video_out/video_out_syncfb.c:995 -#~ msgid "syncfb (teletux) device node" -#~ msgstr "wÄ™zeÅ‚ urzÄ…dzenia syncfb (teletux)" - -# src/video_out/video_out_xshm.c:1426 -#~ msgid "gamma correction for XShm driver" -#~ msgstr "korekta gamma dla sterownika XShm" - -#~ msgid "Colorkey used for Xv video overlay" -#~ msgstr "Kolor-klucz użyty dla wyjÅ›cia obrazu Xv overlay." - -# src/video_out/video_out_xv.c:1414 -#~ msgid "double buffer to sync video to the retrace" -#~ msgstr "podwójny pufor do synchronizacji obrazu do powrotu plamki" - -#~ msgid "workaround for some (buggy) XVideo drivers" -#~ msgstr "obejÅ›cie problemu niektórych (popsutych) sterowników XVideo" - -# src/video_out/video_out_xv.c:1463 -#~ msgid "Software deinterlace method (Key I toggles deinterlacer on/off)" -#~ msgstr "" -#~ "metoda korekty przeplotu (klawisz I włącza/wyÅ‚acza korekte przeplotu)" - -#~ msgid "" -#~ "'resample' might be better if you use a DXR3/H+ card and (analog) audio " -#~ "is processed by your sound card" -#~ msgstr "" -#~ "'resample' mogÅ‚o by być lepsze jeÅ›li użyjesz karty DXR3/H+ i " -#~ "(analogowego) dźwiÄ™ku przetwarzanego przez TwojÄ… kartÄ™ dźwiÄ™kowÄ…" - -# src/xine-engine/audio_out.c:825 -#~ msgid "adjust whether resampling is done or not" -#~ msgstr "włączeni/wyłączenie ponownego próbkowania" - -#~ msgid "adjust if audio is offsync" -#~ msgstr "Dopasuj jeÅ›li dźwiÄ™k nie jest zsynchronizowany" - -# src/xine-utils/memcpy.c:439 -#~ msgid "Memcopy method to use in xine for large data chunks." -#~ msgstr "metoda kopiowania pamiÄ™ci używana dla dużych porcji danych" - -# src/audio_out/audio_oss_out.c:640 -#~ msgid "/dev/dsp# device to use for oss output, -1 => auto_detect" -#~ msgstr "/dev/dsp# urzÄ…dzenie używane dla wyjÅ›cia oss, - 1 => auto_detect" - -# src/demuxers/demux_mpeg_block.c:345 -#~ msgid "" -#~ "demux_mpeg_block: too many errors, stopping playback. Maybe this stream " -#~ "is scrambled?\n" -#~ msgstr "" -#~ "demux_mpeg_block: zbyt wiele błędów, zatrzymanie odtwarzania Może " -#~ "strumieÅ„ jest zaszyfrowany?\n" - -#, fuzzy -#~ msgid "input not seekable, can not handle!\n" -#~ msgstr "demux_roq.c: wejÅ›cie nie przeszukiwalne, nie wspierane!\n" - -# src/demuxers/demux_pes.c:532 src/demuxers/demux_pes.c:620 -#~ msgid "valid mrls for pes demuxer" -#~ msgstr "prawidÅ‚owe mrls dla demultipleksera pes" - -# src/demuxers/demux_pes.c:562 src/demuxers/demux_pes.c:624 -#~ msgid "valid mrls ending for pes demuxer" -#~ msgstr "prawidÅ‚owe rozszerzenia plików dla demultipleksera pes" - -#~ msgid "RTP: waiting for preview data\n" -#~ msgstr "RTP: oczekiwanie na zapowiedź danych\n" - -#~ msgid "RTP: waiting for preview data: timeout\n" -#~ msgstr "RTP: oczekiwanie na zapowiedź danych: timeout\n" - -# src/input/input_rtp.c:311 -#~ msgid "Opening >%s<\n" -#~ msgstr "Otwieram >%s<\n" - -# src/libsputext/xine_decoder.c:1084 -#~ msgid "subtitle size (relative window size)" -#~ msgstr "rozmiar napisów (wzglÄ™dny rozmiar okna)" - -#~ msgid "" -#~ "FLI: in chunk FLI_COPY : source data (%d bytes) bigger than image, " -#~ "skipping chunk\n" -#~ msgstr "" -#~ "FLI: in chunk FLI_COPY : źródÅ‚o danych (%d bajtów) wiÄ™ksze niż obraz, " -#~ "opuszczam fragment\n" - -# src/demuxers/demux_film.c:254 -#~ msgid "FLI: Unrecognized chunk type: %d\n" -#~ msgstr "FLI nie rozpoznany typ fragmentu %d\n" - -#~ msgid "" -#~ " warning: processed FLI chunk where chunk size = %d\n" -#~ " and final chunk ptr = %d\n" -#~ msgstr "" -#~ " uwaga: obrobiony fragment FLI gdzie rozmiar fragmentu = %d\n" -#~ " a koÅ„cowy fragment ptr = %d\n" - -#~ msgid "MS RLE: stream ptr just went out of bounds (1)\n" -#~ msgstr "MS RLE: strumieÅ„ ptr wÅ‚aÅ›nie wyszedÅ‚ poza granice (1)\n" - -#~ msgid "MS RLE: frame ptr just went out of bounds (1)\n" -#~ msgstr "MS RLE: ramka ptr wÅ‚aÅ›nie wykroczyÅ‚a poza granice (1)\n" - -#~ msgid "MS RLE: stream ptr just went out of bounds (2)\n" -#~ msgstr "MS RLE: ramka ptr wÅ‚aÅ›nie wykroczyÅ‚a poza granice (2)\n" - -#~ msgid "MS RLE: frame ptr just went out of bounds (2)\n" -#~ msgstr "MS RLE: ramka ptr wÅ‚aÅ›nie wykroczyÅ‚a poza granice (2)\n" - -#~ msgid "MS RLE: ended frame decode with bytes left over (%d < %d)\n" -#~ msgstr "" -#~ "MS RLE: zakoÅ„czono dekodowanie ramki z pozostaÅ‚ymi bajtami (%d < %d)\n" - -# src/audio_out/audio_oss_out.c:835 -#~ msgid "Enable A52 / AC5 digital audio output via spdif" -#~ msgstr "włącz cyfrowe wyjÅ›cie dźwiÄ™ku a52/ac5 przez spdif" - -#~ msgid "demux_fli.c: input not seekable, can not handle!\n" -#~ msgstr "demux_fli.c: wejÅ›cie nie przeszukiwalne, nie wspierane!\n" - -#~ msgid "demux_smjpeg.c: input not seekable, can not handle!\n" -#~ msgstr "demux_smjpeg.c: wejÅ›cie nie przeszukiwalne, nie wspierane!\n" - -# src/demuxers/demux_film.c:606 -#~ msgid "demux_wc3movie: encountered unknown chunk: %c%c%c%c\n" -#~ msgstr "demux_wc3movie: napotkano nieznany fragment %c%c%c%c\n" - -# src/input/input_http.c:122 -#~ msgid "input_http: unable to resolve >%s<\n" -#~ msgstr "input_http: nie mogÄ™ rozwiÄ…zać adresu >%s<\n" - -# src/input/input_http.c:416 src/input/input_http.c:537 -#~ msgid "input_http: timeout\n" -#~ msgstr "input_http: timeout\n" - -# src/input/input_http.c:334 -#~ msgid "input_http: opening >/%s< on host >%s<" -#~ msgstr "input_http: otwieram >/%s< na hoÅ›cie >%s<" - -# src/input/input_http.c:337 -#~ msgid "%s via proxy >%s<" -#~ msgstr "%s via proxy >%s<" - -# src/input/input_http.c:413 src/input/input_http.c:534 -#~ msgid "input_http: EAGAIN\n" -#~ msgstr "input_http: EAGAIN\n" - -#~ msgid "NVidia TV-Out support." -#~ msgstr "Wsparcie dla wyjÅ›cia TV kart NVidia." diff --git a/po/pt_BR.po b/po/pt_BR.po index a2ab88b20..01df92730 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xine-lib 0.9.13\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2002-01-22 18:31GMT-3\n" "Last-Translator: Marcelo Roberto Jimenez <mroberto@cetuc.puc-rio.br>\n" "Language-Team: Portuguese (Brazilian) <pt_BR@li.org>\n" @@ -51,6 +51,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "" @@ -146,11 +147,13 @@ msgstr "input_cda: open(%s) failed: %s.\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr "" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -183,85 +186,85 @@ msgid "" msgstr "" #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " +msgid "audio_alsa_out : supported modes are" msgstr "" -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" msgstr "" -#: src/audio_out/audio_alsa_out.c:1527 +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 #, fuzzy -msgid "mono " +msgid " mono" msgstr "metronom" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "" - -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" msgstr "" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" msgstr "" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " +msgid " 4.1-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" msgstr "" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" msgstr "" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" +msgid " a/52 and DTS pass-through" +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" msgstr "" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" @@ -273,206 +276,188 @@ msgstr "" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "" -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "" -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "" - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, fuzzy, c-format msgid "Unable to create primary direct sound buffer." msgstr "incapaz de alocar buffer de entrada.\n" -#: src/audio_out/audio_directx2_out.c:632 -#, c-format -msgid ": play cursor overran, flushing buffers\n" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:650 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": delayed by %ld msec\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, fuzzy, c-format msgid ": can't create pthread condition: %s\n" msgstr "video_out : não consigo criar thread (%s)\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, fuzzy, c-format msgid ": can't create pthread mutex: %s\n" msgstr "video_out : não consigo criar thread (%s)\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, fuzzy, c-format msgid ": can't create buffer pthread: %s\n" msgstr "demux_qt: não consigo criar um novo thread (%s)\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, fuzzy, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr "demux_qt: não consigo criar um novo thread (%s)\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, fuzzy, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr "video_out : não consigo criar thread (%s)\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 #, fuzzy msgid "second xine audio output plugin using directx" msgstr "http network stream input plugin" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "" @@ -482,6 +467,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "" @@ -494,7 +480,7 @@ msgstr "" msgid "esd audio output latency (adjust a/v sync)" msgstr "" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -526,7 +512,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "fifo não disponÃvel (%d)\n" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "" @@ -550,22 +547,22 @@ msgstr "" msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -575,31 +572,33 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, fuzzy, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" "%s\n" msgstr "input_cda: opening server '%s:%d' failed: %s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -629,35 +628,44 @@ msgid "" "ioctls and you experience sync errors after long playback" msgstr "" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +#, fuzzy +msgid "audio_oss_out: supported modes are" +msgstr "input_cda: open(%s) failed: %s.\n" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1012 +msgid " (a/52 pass-through not enabled in xine config)" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -667,24 +675,24 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, fuzzy, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "input_cda: open(%s) failed: %s.\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 #, fuzzy msgid "xine audio output plugin using pulseaudio sound server" msgstr "http network stream input plugin" @@ -715,30 +723,183 @@ msgstr "input_cda: opening server '%s:%d' failed: %s\n" msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/demuxers/demux_asf.c:450 +#, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "" -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: o Ãndice do avi está quebrado\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, fuzzy, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "demux_avi: ir para o inÃcio do vÃdeo falhou\n" @@ -748,21 +909,26 @@ msgstr "demux_avi: ir para o inÃcio do vÃdeo falhou\n" msgid "invalid FILM chunk size\n" msgstr "" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:185 -#, fuzzy +#: src/demuxers/demux_flv.c:191 +#, fuzzy, c-format msgid "neither video nor audio stream in this file.\n" msgstr "metronom: audio stream end ignorado\n" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -778,7 +944,8 @@ msgstr "" msgid "iff: unknown Chunk: %s\n" msgstr "" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "" @@ -790,6 +957,7 @@ msgid "" msgstr "" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" @@ -808,24 +976,24 @@ msgstr "" "demux_mpeg_block: aviso: o cabeçalho de pes inidca que este stream pode " "estar encriptado (encryption mode %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " "to xine developers.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, fuzzy, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -834,7 +1002,7 @@ msgstr "" "demux_mpeg_block: aviso: o cabeçalho de pes inidca que este stream pode " "estar encriptado (encryption mode %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -846,17 +1014,18 @@ msgstr "" msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" msgstr "" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, fuzzy, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_asf: tipo de audio desconhecido 0x%x\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" @@ -876,7 +1045,7 @@ msgstr "" msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "" @@ -897,6 +1066,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "" @@ -963,6 +1133,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "input_dvd: incapaz de abrir o acionador de dvd (%s): %s\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "" @@ -977,25 +1148,30 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "" @@ -1020,6 +1196,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "" @@ -1103,18 +1280,22 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1125,6 +1306,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1204,6 +1386,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "" @@ -1222,54 +1405,56 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:482 -#, fuzzy +#, fuzzy, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out: sigprocmask failed.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" msgstr "" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, fuzzy, c-format msgid "%s: can't connect to %s:%d\n" msgstr "http: unable to connect to >%s<\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, fuzzy, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cda: server '%s:%d' successfully connected.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, fuzzy, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_net: incapaz de conectar em '%s'.\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1278,11 +1463,11 @@ msgid "" "listening habits." msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1290,19 +1475,19 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1310,11 +1495,11 @@ msgid "" "used for anything but CDDB caching." msgstr "" -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1323,176 +1508,205 @@ msgid "" "A value of zero here will disable the slowdown." msgstr "" -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, fuzzy, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_file: tentando abrir o arquivo de subtÃtulos '%s'\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, fuzzy, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_file: tentando abrir o arquivo de subtÃtulos '%s'\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 -#, fuzzy +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, fuzzy, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_vcd: read data failed\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 -#, fuzzy +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, fuzzy, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvd: não consigo abrir o acionador de dvd >%s<\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, fuzzy, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_file: tentando abrir o arquivo de subtÃtulos '%s'\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, fuzzy, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_file: tentando abrir o arquivo de subtÃtulos '%s'\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" msgstr "" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" msgstr "" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, fuzzy, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvd: não consigo abrir o acionador de dvd >%s<\n" -#: src/input/input_dvb.c:2999 -#, fuzzy +#: src/input/input_dvb.c:3016 +#, fuzzy, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_rtp: não consigo criar um novo thread (%s)\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." msgstr "" -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 #, fuzzy msgid "DVB (Digital TV) input plugin" msgstr "http network stream input plugin" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "" -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "" -#: src/input/input_dvd.c:1497 -#, fuzzy +#: src/input/input_dvd.c:1494 +#, fuzzy, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." msgstr "" -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1503,22 +1717,22 @@ msgid "" "See the documentation on raw device setup (man raw) for further information." msgstr "" -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " "scrambled DVDs." msgstr "" -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1527,44 +1741,44 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." msgstr "" -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1583,11 +1797,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1601,11 +1815,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1617,135 +1831,135 @@ msgid "" "play just the specified title/chapter and then stop" msgstr "" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: erro de leitura (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, fuzzy, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_cda: fopen(%s) failed: %s\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, fuzzy, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: erro de leitura (%s)\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, fuzzy, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: erro de leitura (%s)\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "" -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 #, fuzzy msgid "gnome-vfs input plugin as shipped with xine" msgstr "net input plugin tal como enviado com xine" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, fuzzy, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_cda: fopen(%s) failed: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, fuzzy, c-format msgid "input_http: read error %d\n" msgstr "input_http: read error\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "" -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: invalid http answer\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, fuzzy, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx redirection not implemented: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: http status not 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, fuzzy, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: content length = %Ld bytes\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, fuzzy, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: read error\n" -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 #, fuzzy msgid "http input plugin" msgstr "http network stream input plugin" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -1753,27 +1967,27 @@ msgid "" "(full match required)." msgstr "" -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 #, fuzzy msgid "mms streaming input plugin" msgstr "http network stream input plugin" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." msgstr "" -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." @@ -1799,52 +2013,54 @@ msgstr "input_net: incapaz de resolver '%s'.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: incapaz de conectar em '%s'.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "net input plugin tal como enviado com xine" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 #, fuzzy msgid "pnm streaming input plugin" msgstr "http network stream input plugin" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, fuzzy, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, fuzzy, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, fuzzy, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_http: read error (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, fuzzy, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "" @@ -1897,97 +2113,119 @@ msgstr "incapaz de conectar com '%s'.\n" msgid "recv(): %s.\n" msgstr "socket(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: não consigo criar um novo thread (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 #, fuzzy msgid "RTP and UDP input plugin as shipped with xine" msgstr "net input plugin tal como enviado com xine" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 #, fuzzy msgid "rtsp streaming input plugin" msgstr "http network stream input plugin" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, fuzzy, c-format msgid "stdin: failed to open '%s'\n" msgstr "input_http: failed to open socket\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 #, fuzzy msgid "stdin streaming input plugin" msgstr "http network stream input plugin" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "" -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "" -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "" -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 #, fuzzy msgid "v4l tv input plugin" msgstr "http network stream input plugin" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 #, fuzzy msgid "v4l radio input plugin" msgstr "http network stream input plugin" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "" -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "http network stream input plugin" + +#: src/input/input_v4l.c:1913 +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "" + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "" #: src/input/input_vcd.c:847 -#, fuzzy +#, fuzzy, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: MRL mal formada. Use vcd://<track #>\n" @@ -2001,32 +2239,32 @@ msgstr "input_vcd: trilha invalida %d (faixa valida: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "http network stream input plugin" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "incapaz de abrir %s: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, fuzzy, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_dvd: incapaz de abrir o acionador de dvd (%s): %s\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." msgstr "" -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, fuzzy, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "http: unable to connect to >%s<\n" @@ -2037,10 +2275,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "http: unable to connect to >%s<\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2050,45 +2296,45 @@ msgstr "" msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "" -#: src/input/mmsh.c:199 -#, fuzzy +#: src/input/mmsh.c:197 +#, fuzzy, c-format msgid "libmmsh: send error\n" msgstr "input_http: read error\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, fuzzy, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "input_http: 3xx redirection not implemented: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, fuzzy, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "input_http: http status not 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, fuzzy, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "input_http: Location redirection not implemented\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "" -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "" @@ -2097,20 +2343,20 @@ msgstr "" msgid "Buffering..." msgstr "" -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" "%s\n" msgstr "" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, fuzzy, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_net: incapaz de conectar em '%s'.\n" -#: src/input/pnm.c:764 -#, fuzzy +#: src/input/pnm.c:763 +#, fuzzy, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_http: failed to open socket\n" @@ -2151,106 +2397,106 @@ msgstr "" msgid "failed to find a device with a VCD" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2271,11 +2517,11 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " @@ -2283,11 +2529,11 @@ msgid "" "See the help for the title_format for the meanings of these." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2304,7 +2550,8 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "" @@ -2343,129 +2590,19 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:128 -msgid "libfaad: libfaad NeAACDecOpen() failed.\n" -msgstr "" - -#: src/libfaad/xine_faad_decoder.c:137 -msgid "libfaad: libfaad NeAACDecInit2 failed.\n" -msgstr "" - -#: src/libfaad/xine_faad_decoder.c:148 -msgid "libfaad: libfaad NeAACDecInit failed.\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 +#: src/libfaad/xine_faad_decoder.c:132 #, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "" -#: src/libffmpeg/ff_video_decoder.c:338 +#: src/libfaad/xine_faad_decoder.c:141 #, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "" -#: src/libffmpeg/ff_video_decoder.c:836 +#: src/libfaad/xine_faad_decoder.c:152 #, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." +msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:239 @@ -2474,10 +2611,12 @@ msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "" @@ -2500,145 +2639,147 @@ msgid "" "information on how to install the codecs." msgstr "" -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "" -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " "in the subtitle being shown until the next one takes over." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2646,11 +2787,11 @@ msgid "" "used." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -2734,22 +2875,22 @@ msgstr "" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "" @@ -2780,6 +2921,7 @@ msgid "" msgstr "" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr "" @@ -2791,6 +2933,7 @@ msgstr[0] "" msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr "" @@ -2804,7 +2947,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -2818,6 +2961,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -2857,7 +3003,8 @@ msgid "" "\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "" @@ -2897,7 +3044,7 @@ msgid "" "The available selections should be self-explaining." msgstr "" -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3016,7 +3163,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3024,13 +3171,13 @@ msgid "" "\n" msgstr "" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3062,142 +3209,148 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 msgid "enable video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 msgid "video colour key" msgstr "" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." msgstr "" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 #, fuzzy msgid "xine video output plugin using DirectFB." msgstr "http network stream input plugin" -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 #, fuzzy msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "http network stream input plugin" -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "" @@ -3208,11 +3361,11 @@ msgid "" " Check 'fbset -i' or try 'fbset -depth 16'.\n" msgstr "" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3221,6 +3374,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "" @@ -3239,6 +3393,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3260,11 +3415,11 @@ msgstr "" msgid "xine video output plugin which displays nothing" msgstr "" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3293,34 +3448,34 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" msgstr "" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3335,6 +3490,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3356,33 +3512,37 @@ msgid "" msgstr "" #: src/video_out/video_out_pgx64.c:337 +#, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "" @@ -3413,26 +3573,28 @@ msgid "" "memory." msgstr "" -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "" @@ -3441,66 +3603,75 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " "README.syncfb for informations on how to update it.)\n" msgstr "" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "" -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3508,101 +3679,105 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3612,42 +3787,59 @@ msgid "" "\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -3655,69 +3847,42 @@ msgid "" "Xv?!\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colour key." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -3755,256 +3920,288 @@ msgid "" "with medium CPU usage." msgstr "" -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" " for hardware colour space conversion and scaling\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr "" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr "" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "" -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "" -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" @@ -4013,6 +4210,70 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "" + +#: src/video_out/xv_common.h:31 +msgid "Make Xv autopaint its colour key." +msgstr "" + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +msgid "Xv port number" +msgstr "" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +msgid "bicubic filtering" +msgstr "" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "" @@ -4047,32 +4308,37 @@ msgid "" "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4095,11 +4361,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4107,33 +4373,33 @@ msgid "" "automatically when necessary." msgstr "" -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4141,24 +4407,24 @@ msgid "" "audio post plugin instead." msgstr "" -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "" -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" -#: src/xine-engine/audio_out.c:2259 -#, fuzzy +#: src/xine-engine/audio_out.c:2264 +#, fuzzy, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out : desculpe, isto não deveria acontecer, reinicie o xine por " @@ -4169,41 +4435,43 @@ msgstr "" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "" -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "" @@ -4234,7 +4502,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_dvd: erro de leitura no input_dvd plugin\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, fuzzy, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" @@ -4259,41 +4527,41 @@ msgstr "input_cda: fopen(%s) failed: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " "'media.capture.save_dir'\n" msgstr "" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." msgstr "" -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" msgstr "" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, fuzzy, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" @@ -4332,76 +4600,76 @@ msgstr "" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" msgstr "" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " "the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, fuzzy, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, fuzzy, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, fuzzy, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, fuzzy, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, fuzzy, c-format msgid "load_plugins: unable to stat %s\n" msgstr "" "load_plugins: carga do plugin %s falhou:\n" "%s\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, fuzzy, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4410,7 +4678,7 @@ msgstr "" "load_plugins: não consigo abrir o plugin de demux %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, fuzzy, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -4419,12 +4687,12 @@ msgstr "" "load_plugins: não consigo abrir o plugin de entrada %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, fuzzy, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, fuzzy, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -4433,37 +4701,38 @@ msgstr "" "load_plugins: não consigo abrir o plugin de demux %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, fuzzy, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "" "load_plugins: não consigo abrir o plugin de entrada %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, fuzzy, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, fuzzy, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: achado o plugin de entrada: %s\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, fuzzy, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "" "load_plugins: carga do plugin %s falhou:\n" "%s\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" msgstr "" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, fuzzy, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4472,124 +4741,131 @@ msgstr "" "load_plugins: não consigo abrir o plugin de demux %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " "skipping\n" msgstr "" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, fuzzy, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video decoder plugin achado : %s\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d quadros enviados, %d quadros pulados, %d quadros descartados\n" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, fuzzy, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -4598,38 +4874,38 @@ msgstr "" "video_out : descartando imagem com pts %d porque é muito velha (diff : %d > %" "d).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1874 -#, fuzzy +#: src/xine-engine/video_out.c:1916 +#, fuzzy, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "" "video_out : desculpe, isto não deveria acontecer, reinicie o xine por " @@ -4674,134 +4950,145 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, fuzzy, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: não consigo achar um plugin para este MRL\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, fuzzy, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: usando plugin de entrada >%s< para este MRL (%s).\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, fuzzy, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: não consigo achar um plugin para este MRL\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, fuzzy, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine_play: demuxer falhou em começar\n" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, fuzzy, c-format msgid "xine: join rip input plugin\n" msgstr "http network stream input plugin" -#: src/xine-engine/xine.c:928 -#, fuzzy +#: src/xine-engine/xine.c:959 +#, fuzzy, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "http network stream input plugin" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, fuzzy, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine_play: demuxer falhou em começar\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "" -#: src/xine-engine/xine.c:1102 -#, fuzzy +#: src/xine-engine/xine.c:1135 +#, fuzzy, c-format msgid "xine: error opening subtitle mrl\n" msgstr "input_dvd: não consigo abrir o arquivo >%s<\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: não conseguà achar o demuxer para >%s<\n" + +#: src/xine-engine/xine.c:1215 #, fuzzy, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: não conseguà achar o demuxer para >%s<\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, fuzzy, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: usando o plugin de demuxer >%s< para este MRL.\n" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, fuzzy, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "xine_play: demuxer falhou em começar\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, fuzzy, c-format msgid "xine: demuxer failed to start\n" msgstr "xine_play: demuxer falhou em começar\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, fuzzy, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: demuxer falhou em começar\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, fuzzy, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: demuxer falhou em começar\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "" -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -4819,11 +5106,11 @@ msgid "" "Detect by file name extension only.\n" msgstr "" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -4833,11 +5120,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -4847,81 +5134,81 @@ msgid "" "configuration, you might end with a totally messed up xine." msgstr "" -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "menssagens" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "plugin" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 #, fuzzy msgid "File not found:" msgstr "input_file: erro de leitura (%s)\n" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 #, fuzzy msgid "Encrypted media stream detected" msgstr "metronom: audio stream end\n" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 #, fuzzy msgid "Audio device unavailable" msgstr "fifo não disponÃvel (%d)\n" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "" @@ -4937,1395 +5224,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "" - -#, fuzzy -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: copyright : %s\n" - -#, fuzzy -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "demux_qt: não consigo criar um novo thread (%s)\n" - -#, fuzzy -#~ msgid "audio_oss_out: open() %s failed: %s\n" -#~ msgstr "input_cda: open(%s) failed: %s.\n" - -#, fuzzy -#~ msgid "input_cdda: cannot connect to host.\n" -#~ msgstr "input_http: cannot connect to host\n" - -#, fuzzy -#~ msgid "input_cdda: unable to resolve '%s'.\n" -#~ msgstr "input_net: incapaz de resolver '%s'.\n" - -#, fuzzy -#~ msgid "input_cdda: unable to connect to '%s'.\n" -#~ msgstr "input_net: incapaz de conectar em '%s'.\n" - -#~ msgid "" -#~ "demux_mpeg_block: too many errors, stopping playback. Maybe this stream " -#~ "is scrambled?\n" -#~ msgstr "" -#~ "demux_mpeg_block: excesso de erros, parando o playback. Talvez este " -#~ "stream esteja embaralhado?\n" - -#, fuzzy -#~ msgid "RTP: waiting for preview data\n" -#~ msgstr "metronom: esperando o video começar...\n" - -#~ msgid "Opening >%s<\n" -#~ msgstr "Abrindo >%s<\n" - -#, fuzzy -#~ msgid "demux_wc3movie: encountered unknown chunk: %c%c%c%c\n" -#~ msgstr "demux_film: video codec desconhecido >%s<\n" - -#~ msgid "input_http: unable to resolve >%s<\n" -#~ msgstr "input_http: unable to resolve >%s<\n" - -#, fuzzy -#~ msgid "input_http: timeout\n" -#~ msgstr "input_http: read error\n" - -#~ msgid "input_http: opening >/%s< on host >%s<" -#~ msgstr "input_http: opening >/%s< on host >%s<" - -#~ msgid "%s via proxy >%s<" -#~ msgstr "%s via proxy >%s<" - -#~ msgid "input_http: EAGAIN\n" -#~ msgstr "input_http: EAGAIN\n" - -#~ msgid "OUCH - ran out of buffers\n" -#~ msgstr "Ai! fiquei sem buffers\n" - -#~ msgid "OUCH - dropped input packet %d %d\n" -#~ msgstr "Ai, descartei o pacote de entrada %d %d\n" - -#~ msgid "rtp input plugin as shipped with xine" -#~ msgstr "plugin de entrada rtp como mandado com o xine" - -#, fuzzy -#~ msgid "demux_mpgaudio: no audio driver!\n" -#~ msgstr "demux_mpgaudio_block: stop...ignorado\n" - -#~ msgid "input_cda: ioctl(CDROM_MEDIA_CHANGED) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROM_MEDIA_CHANGED) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMSUBCHNL) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMSUBCHNL) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDIOCSTART) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOCSTART) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMSTART) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMSTART) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDIOCPLAYMSF) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOCPLAYMSF) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMPLAYMSF) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMPLAYMSF) failed: %s.\n" - -#~ msgid "input_cda: No rights to open %s.\n" -#~ msgstr "input_cda: No rights to open %s.\n" - -#~ msgid "input_cda: ioctl(CDROMCLOSETRAY) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROMCLOSETRAY) failed: %s\n" - -#~ msgid "input_cda: ioctl(CDROMEJECT) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROMEJECT) failed: %s\n" - -#~ msgid "input_cda: ioctl(CDROM_DRIVE_STATUS) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROM_DRIVE_STATUS) failed: %s\n" - -#~ msgid "input_cda: ioctl(CDROMALLOW) failed: %s\n" -#~ msgstr "input_cda: ioctl(CDROMALLOW) failed: %s\n" - -#~ msgid "input_cda: ioctl(CDIOREADTOCHEADER) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOREADTOCHEADER) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMREADTOCHDR) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMREADTOCHDR) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDIOREADTOCENTRYS) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDIOREADTOCENTRYS) failed: %s.\n" - -#~ msgid "input_cda: ioctl(CDROMREADTOCENTRY) failed: %s.\n" -#~ msgstr "input_cda: ioctl(CDROMREADTOCENTRY) failed: %s.\n" - -#, fuzzy -#~ msgid "input_cda: malformed MRL. Use cda:/<track #>\n" -#~ msgstr "input_cda: MRL mal formada. Use cda://<track #>\n" - -#~ msgid "input_cda: invalid track %d (valid range: 1 .. %d)\n" -#~ msgstr "input_cda: trilha invalida %d (faixa valida: 1 .. %d)\n" - -#~ msgid "input_cda: error seek to origin %d not implemented!\n" -#~ msgstr "input_cda: error seek to origin %d not implemented!\n" - -#~ msgid "cd audio plugin as shipped with xine" -#~ msgstr "cd audio plugin as shipped with xine" - -#, fuzzy -#~ msgid "demux_qt: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_qt: video codec >%s<\n" - -#, fuzzy -#~ msgid "demux_qt: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_qt: audio codec >%c%c%c%c< @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_film: %c%c%c%c video @ %dx%d, %d Hz playback clock\n" -#~ msgstr "demux_film: video codec >%c%c%c%c<\n" - -#, fuzzy -#~ msgid "demux_fli: %d frames, %dx%d\n" -#~ msgstr "demux_fli: %ld frames, %dx%d\n" - -#, fuzzy -#~ msgid "demux_smjpeg: '%c%c%c%c' video @ %dx%d\n" -#~ msgstr "demux_smjpeg: video codec >%c%c%c%c< @ %dx%d\n" - -#, fuzzy -#~ msgid "demux_smjpeg: '%c%c%c%c' audio @ %d Hz, %d bits, %d %s\n" -#~ msgstr "demux_smjpeg: auioo codec >%c%c%c%c< @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_wav: format 0x%X audio, %d Hz, %d bits/sample, %d %s\n" -#~ msgstr "demux_wav: audio codec 0x%X, %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_wav: running time = %lld min, %lld sec\n" -#~ msgstr "demux_avi: %ld frames\n" - -#, fuzzy -#~ msgid "demux_aiff: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_qt: audio codec >%c%c%c%c< @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_aiff: running time: %d min, %d sec\n" -#~ msgstr "demux_avi: %ld frames\n" - -#, fuzzy -#~ msgid "demux_snd: %d Hz, %d channels, %d bits, %d frames\n" -#~ msgstr "demux_qt: audio codec >%c%c%c%c< @ %d Hz, %d bits, %d %s\n" - -#, fuzzy -#~ msgid "demux_snd: running time: %d min, %d sec\n" -#~ msgstr "demux_avi: %ld frames\n" - -#, fuzzy -#~ msgid "" -#~ "demux_voc: VOC format 0x%X audio, %d Hz, running time: %d min, %d sec\n" -#~ msgstr "demux_wav: audio codec 0x%X, %d Hz, %d bits, %d %s\n" - -#~ msgid "demux_ts: FIXME: (unsupported )PAT spans multiple TS packets\n" -#~ msgstr "demux_ts: FIXME: (não suportado)PAT spans multiple TS packets\n" - -#~ msgid "" -#~ "demux_ts: FIXME: (unsupported) PAT consists of multiple (%d) sections\n" -#~ msgstr "" -#~ "demux_ts: FIXME: (não suportado) PAT consiste de multiplas (%d) seções\n" - -#~ msgid "" -#~ "demux_ts: demux error! PAT with invalid CRC32: packet_crc32: %.8x " -#~ "calc_crc32: %.8x\n" -#~ msgstr "" -#~ "demux_ts: erro no demux! PAT com CRC32 inválido: packet_crc32: %.8x " -#~ "calc_crc32: %.8x\n" - -#~ msgid "demux_ts: error %02x %02x %02x (should be 0x000001)\n" -#~ msgstr "demux_ts: erro %02x %02x %02x (deveria ser 0x000001)\n" - -#, fuzzy -#~ msgid "demux_ts: unexpected cc %d (expected %d)\n" -#~ msgstr "demux_ts: descartou pacote de entrada cc: %d esperado: %d\n" - -#, fuzzy -#~ msgid "demux_ts: corrupted pes encountered\n" -#~ msgstr "demux_ts: encontrado pes quebrado\n" - -#~ msgid "demux error! PMT with invalid pointer\n" -#~ msgstr "erro no demux! PMT com ponteiro inválido\n" - -#~ msgid "" -#~ "demux_ts: demux error! PMT with invalid CRC32: packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" -#~ msgstr "" -#~ "demux_ts: erro no demux! PMT com CRC32 inválido: packet_crc32: %#.8x " -#~ "calc_crc32: %#.8x\n" - -#~ msgid "demux error! PMT with inconsistent progInfo length\n" -#~ msgstr "erro no demux! PMT com comprimento de progInfo inconsistente\n" - -#~ msgid "demux error! PMT with inconsistent streamInfo length\n" -#~ msgstr "erro no demux! PMT com comprimento de streamInfo inconsistente\n" - -#~ msgid "demux error! invalid ts sync byte %.2x\n" -#~ msgstr "erro no demux! ts sync byte inválido %.2x\n" - -#~ msgid "demux error! transport error\n" -#~ msgstr "erro no demux! erro de transporte\n" - -#~ msgid "demux_ts: demux error! invalid payload size %d\n" -#~ msgstr "demux_ts: erro no demux! tamanho de payload inválido %d\n" - -#~ msgid "demux %u ts_open!\n" -#~ msgstr "demux %u ts_open!\n" - -#~ msgid "demux_ts: can't create new thread (%s)\n" -#~ msgstr "demux_ts: não consigo criar novo thread (%s)\n" - -#, fuzzy -#~ msgid "demux_mpeg: please specify mpeg(mpeg1/mpeg2) stream type.\n" -#~ msgstr "Voce deve especificar mpeg(mpeg1/mpeg2) como tipo de stream.\n" - -#~ msgid "stdin/fifo input plugin as shipped with xine" -#~ msgstr "plugin de entrada stdin/fifo como enviado com o xine" - -#~ msgid "input_vcd : error in ioctl CDROMREADTOCHDR\n" -#~ msgstr "input_vcd : error in ioctl CDROMREADTOCHDR\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY for track %d\n" -#~ msgstr "input_vcd: error in ioctl CDROMREADTOCENTRY for track %d\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY for lead-out\n" -#~ msgstr "input_vcd: error in ioctl CDROMREADTOCENTRY for lead-out\n" - -#~ msgid "input_vcd: error in ioctl CDROMREADTOCENTRY\n" -#~ msgstr "input_vcd: error in ioctl CDROMREADTOCENTRY\n" - -#~ msgid "scsi command failed with status %d\n" -#~ msgstr "scsi command failed with status %d\n" - -#~ msgid "input_vcd: error in CDRIOCSETBLOCKSIZE %d\n" -#~ msgstr "input_vcd: erro em CDRIOCSETBLOCKSIZE %d\n" - -#~ msgid "input_vcd: error in CDROMREADRAW\n" -#~ msgstr "input_vcd: erro em CDROMREADRAW\n" - -#~ msgid "input_vcd: seek error %d\n" -#~ msgstr "input_vcd: erro de posicionamento %d\n" - -#~ msgid "input_vcd: read error %d\n" -#~ msgstr "input_vcd: erro de leitura %d\n" - -#~ msgid "input_vcd: error seek to origin %d not implemented!\n" -#~ msgstr "input_vcd: error seek to origin %d not implemented!\n" - -#~ msgid "input_vcd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_vcd: CDROMCLOSETRAY failed: %s\n" - -#~ msgid "input_vcd: CDROMEJECT failed: %s\n" -#~ msgstr "input_vcd: CDROMEJECT failed: %s\n" - -#~ msgid "input_vcd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_vcd: CDROM_DRIVE_STATUS failed: %s\n" - -#~ msgid "vcd device input plugin as shipped with xine" -#~ msgstr "vcd device input plugin as shipped with xine" - -#~ msgid "vcd_read_toc failed\n" -#~ msgstr "vcd_read_toc falhou\n" - -#, fuzzy -#~ msgid "demux_film: unknown video codec %c%c%c%c\n" -#~ msgstr "demux_film: video codec desconhecido >%s<\n" - -#, fuzzy -#~ msgid "demux_vqa: running time: %d min, %d sec\n" -#~ msgstr "demux_avi: %ld frames\n" - -#~ msgid "lstat failed for %s{%s}\n" -#~ msgstr "lstat failed for %s{%s}\n" - -#~ msgid "%s(%d): readlink() failed: %s\n" -#~ msgstr "%s(%d): readlink() falhou: %s\n" - -#~ msgid "plain file input plugin as shipped with xine" -#~ msgstr "plain file input plugin as shipped with xine" - -#~ msgid "input_file: get optional data, type %08x, sub %p\n" -#~ msgstr "input_file: get optional data, type %08x, sub %p\n" - -#~ msgid "xine_notify_stream_finished: can't create new thread (%s)\n" -#~ msgstr "" -#~ "xine_notify_stream_finished: não consigo criar um novo thread (%s)\n" - -#, fuzzy -#~ msgid "demux_avi: video format = %s\n" -#~ msgstr "demux_asf: formato de video: %s\n" - -#, fuzzy -#~ msgid "demux_avi: video frame size %ld x %ld\n" -#~ msgstr "demux_avi: %ld frames\n" - -#, fuzzy -#~ msgid "demux_avi: audio format[%d] = 0x%lx\n" -#~ msgstr "demux_avi: formato de video = %s, formato de audio = 0x%lx\n" - -#~ msgid "demux_avi: unknown audio type 0x%lx\n" -#~ msgstr "demux_avi: tipo de audio desconhecido 0x%lx\n" - -#~ msgid "demux_avi: audio type %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_avi: tipo de audio %s (wFormatTag 0x%x)\n" - -#, fuzzy -#~ msgid "demux_avi: unknown video codec '%.4s'\n" -#~ msgstr "demux_qt: video codec desconhecido >%s<\n" - -#, fuzzy -#~ msgid "demux_avi: video codec is '%s'\n" -#~ msgstr "demux_avi: video codec >%s<\n" - -#, fuzzy -#~ msgid "ogg: vorbis avg. bitrate %d, samplerate %d\n" -#~ msgstr "metronom: audio stream end\n" - -#, fuzzy -#~ msgid "ogg: video format %.4s, frame size %d x %d, %d fps\n" -#~ msgstr "demux_avi: %ld frames\n" - -#, fuzzy -#~ msgid "" -#~ "ogg: unknown stream type (signature >%.8s<). hex dump of bos packet " -#~ "follows:\n" -#~ msgstr "demux_ogg: tipo de stream desconhecido, assinatura: >%.8s<\n" - -#~ msgid "demux_asf: audio format : %s (wFormatTag 0x%x)\n" -#~ msgstr "demux_asf: formato de audio: %s (wFormatTag 0x%x)\n" - -#~ msgid "demux_asf: video format : %s\n" -#~ msgstr "demux_asf: formato de video: %s\n" - -#~ msgid "demux_asf: stream length is %d sec, rate is %d bytes/sec\n" -#~ msgstr "" -#~ "demux_asf: o comprimento do stream é %d sec, a taxa é %d bytes/sec\n" - -#~ msgid "demux_asf: title : %s\n" -#~ msgstr "demux_asf: tÃtulo : %s\n" - -#~ msgid "demux_asf: author : %s\n" -#~ msgstr "demux_asf: autor : %s\n" - -#~ msgid "demux_asf: comment : %s\n" -#~ msgstr "demux_asf: comentario : %s\n" - -#, fuzzy -#~ msgid "" -#~ "demux_ts: plugin doesn't support plugin API version %d.\n" -#~ " This means there's a version mismatch between xine and this " -#~ "demuxer plugin.\n" -#~ " Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ts: plugin não suporta versão de plugin API %d.\n" -#~ " isto significa que existe um descasamento de versão entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os demux plugins atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_avi: this plugin doesn't support plugin API version %d.\n" -#~ "demux_avi: this means there's a version mismatch between xine and this " -#~ "demux_avi: demuxer plugin.\n" -#~ "Installing current demuxer plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_elem: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_elem: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_mpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_pes: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_qt: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_ogg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_asf: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_cda: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_cda: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_film: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_film: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "demux_mpeg_block: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_mpeg_block: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_roq: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_roq: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_idcin: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_idcin: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_smjpeg: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin. Installing current demux plugins " -#~ "should help.\n" -#~ msgstr "" -#~ "demux_smjpeg: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre " -#~ "o xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_wav: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_wav: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_aiff: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_snd: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_voc: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_ogg: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_vqa: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_asf: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "demux_wc3movie: plugin doesn't support plugin API version %d.\n" -#~ " this means there's a version mismatch between xine and " -#~ "this demuxer plugin.\n" -#~ "Installing current demux plugins should help.\n" -#~ msgstr "" -#~ "demux_idcin: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#~ msgid "" -#~ "net input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada net não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "" -#~ "rtp input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada rtp não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "" -#~ "stdin/fifo input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada stdin/fifo não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "" -#~ "file input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada file não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "" -#~ "vcd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada vcd não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "" -#~ "http input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada http não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "" -#~ "cda input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada cda não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libmpeg2: plugin doesn't support plugin API version %d.\n" -#~ "libmpeg2: this means there's a version mismatch between xine and this " -#~ "libmpeg2: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libmpg123: plugin doesn't support plugin API version %d.\n" -#~ "libmpg123: this means there's a version mismatch between xine and this " -#~ "libmpg123: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libspudec: Doesn't support plugin API version %d.\n" -#~ "libspudec: This means there is a version mismatch between XINE and\n" -#~ "libspudec: this plugin.\n" -#~ msgstr "" -#~ "plugin de entrada file não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "w32codec: plugin doesn't support plugin API version %d.\n" -#~ "w32codec: this means there's a version mismatch between xine and this " -#~ "w32codec: decoder plugin.\n" -#~ "Installing current decoder plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "Modes" -#~ msgstr "codecs" - -#~ msgid "%s(%d) wrong first stage = %d !!\n" -#~ msgstr "%s(%d) wrong first stage = %d !!\n" - -#~ msgid "%s(%s@%d): parameter should be non null, exiting\n" -#~ msgstr "%s(%s@%d): parametro deve ser não nulo, saindo\n" - -#~ msgid "load_plugins: demux plugin found : %s\n" -#~ msgstr "load_plugins: achado o plugin de demux: %s\n" - -#~ msgid "load_plugins: too many demux plugins installed, exiting.\n" -#~ msgstr "load_plugins: excesso de plugins de demux instalados, saindo.\n" - -#~ msgid "" -#~ "load_plugins: %s is no valid input plugin (lacks init_input_plugin() " -#~ "function)\n" -#~ msgstr "" -#~ "load_plugins: %s não é um plugin de entrada válido (não possui a função " -#~ "init_input_plugin())\n" - -#~ msgid "%s(%d): too many input plugins installed, exiting.\n" -#~ msgstr "%s(%d): excesso de plugins de entrada instalados, saindo.\n" - -#~ msgid "" -#~ "load_plugins: no input plugins found in %s! - Did you install xine " -#~ "correctly??\n" -#~ msgstr "" -#~ "load_plugins: nenhum plugin de entrada encontrado em %s! - Você instalou " -#~ "o xine corretamente?\n" - -#~ msgid "spu decoder plugin found : %s\n" -#~ msgstr "spu decoder plugin achado: %s\n" - -#, fuzzy -#~ msgid "" -#~ "liblpcm: plugin doesn't support plugin API version %d.\n" -#~ "liblpcm: this means there's a version mismatch between xine and this " -#~ "liblpcm: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "ffmpeg: plugin doesn't support plugin API version %d.\n" -#~ "ffmpeg: this means there's a version mismatch between xine and this " -#~ "ffmpeg: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_pes: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "dxr3_decode_spu: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_spu: this means there's a version mismatch between xine and " -#~ "this dxr3_decode_spu: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "dxr3_decode_video: plugin doesn't support plugin API version %d.\n" -#~ "dxr3_decode_video: this means there's a version mismatch between xine and " -#~ "this\n" -#~ "dxr3_decode_video: decoder plugin. Installing current plugins should " -#~ "help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libmad: plugin doesn't support plugin API version %d.\n" -#~ "libmad: this means there's a version mismatch between xine and this " -#~ "libmad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "liba52: plugin doesn't support plugin API version %d.\n" -#~ "liba52: this means there's a version mismatch between xine and this " -#~ "liba52: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libdts: plugin doesn't support plugin API version %d.\n" -#~ "libdts: this means there's a version mismatch between xine and this " -#~ "libdts: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "divx4: plugin doesn't support plugin API version %d.\n" -#~ "divx4: this means there's a version mismatch between xine and this divx4: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libvorbis: plugin doesn't support plugin API version %d.\n" -#~ "libvorbis: this means there's a version mismatch between xine and this " -#~ "libvorbis: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libsputext: doesn't support plugin api version %d.\n" -#~ "libsputext: This means there is a version mismatch between xine and\n" -#~ "libsputext: this plugin.\n" -#~ msgstr "" -#~ "plugin de entrada file não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libspucc: doesn't support plugin api version %d.\n" -#~ "libspucc: This means there is a version mismatch between xine and\n" -#~ "libspucc: this plugin.\n" -#~ msgstr "" -#~ "plugin de entrada file não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "xvid: plugin doesn't support plugin API version %d.\n" -#~ "xvid: this means there's a version mismatch between xine and this\n" -#~ "xvid: decoder plugin. Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "cinepak: plugin doesn't support plugin API version %d.\n" -#~ "cinepak: this means there's a version mismatch between xine and this " -#~ "cinepak: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "RoQ: plugin doesn't support plugin API version %d.\n" -#~ "RoQ: this means there's a version mismatch between xine and this RoQ: " -#~ "decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_qt: plugin não suporta a versão %d da API de plugins.\n" -#~ " isto significa que existe um descasamento de versões entre o " -#~ "xine e este plugin de demuxer.\n" -#~ "Instalar os plugins de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "RoQ Audio: plugin doesn't support plugin API version %d.\n" -#~ "RoQ Audio: this means there's a version mismatch between xine and this\n" -#~ "RoQ Audio: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#, fuzzy -#~ msgid "" -#~ "libfaad: plugin doesn't support plugin API version %d.\n" -#~ "libfaad: this means there's a version mismatch between xine and this " -#~ "libfaad: decoder plugin.\n" -#~ "Installing current plugins should help.\n" -#~ msgstr "" -#~ "demux_avi: este plugin não suporta a versão %d da API de plugin.\n" -#~ "demux_avi: isto significa que existe um descasamento de versão entre o " -#~ "xine e este demux_avi: plugin de demuxer.\n" -#~ "Instalar os plugind de demuxer atuais deve ajudar.\n" - -#~ msgid "USCSICMD dvd_read_copyright: %s" -#~ msgstr "USCSICMD dvd_read_copyright: %s" - -#~ msgid "bad status: READ DVD STRUCTURE (copyright)\n" -#~ msgstr "bad status: READ DVD STRUCTURE (copyright)\n" - -#~ msgid "input_dvd: Could not read Copyright Structure\n" -#~ msgstr "input_dvd: Não conseguà ler a Copyright Structure\n" - -#~ msgid "" -#~ "input_dvd: Could not read Copyright Structure.\n" -#~ " Assuming disk is not encrypted.\n" -#~ msgstr "" -#~ "input_dvd: Não conseguà ler a Copyright Structure.\n" -#~ " Assumindo que o disco é não encriptado.\n" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "input_dvd: Sorry, this plugin doesn't play encrypted DVDs. The legal " -#~ "status\n" -#~ " of CSS decryption is unclear and we can't provide such code.\n" -#~ " Please check http://dvd.sf.net for more information.\n" -#~ msgstr "" -#~ "\n" -#~ "input_dvd: Desculpe, xine não toca DVDs encriptados. O estado legal de " -#~ "desencriptação CSS\n" -#~ " não é claro e nós não vamos prover tal código.\n" -#~ "\n" - -#~ msgid "input_dvd: Unable to find >%s< on dvd.\n" -#~ msgstr "input_dvd: Incapaz de achar >%s< no dvd.\n" - -#~ msgid "input_dvd: error read: %Ld bytes is not a sector!\n" -#~ msgstr "input_dvd: error read: %Ld bytes não é um setor!\n" - -#~ msgid "input_dvd: read error in input_dvd plugin (%s)\n" -#~ msgstr "input_dvd: read erro no input_dvd plugin (%s)\n" - -#~ msgid "input_dvd: short read in input_dvd (%d != %d)\n" -#~ msgstr "input_dvd: short read in input_dvd (%d != %d)\n" - -#~ msgid "" -#~ "input_dvd: error in input_dvd plugin read: %Ld bytes is not a sector!\n" -#~ msgstr "" -#~ "input_dvd: erro no input_dvd plugin read: %Ld bytes não é um setor!\n" - -#~ msgid "input_dvd: seek: %d is an unknown origin\n" -#~ msgstr "input_dvd: seek: %d é uma origem desconhecida\n" - -#~ msgid "input_dvd: CDROMCLOSETRAY failed: %s\n" -#~ msgstr "input_dvd: CDROMCLOSETRAY falhou: %s\n" - -#~ msgid "input_dvd: CDROMEJECT failed: %s\n" -#~ msgstr "input_dvd: CDROMEJECT falhou: %s\n" - -#~ msgid "input_dvd: CDROM_DRIVE_STATUS failed: %s\n" -#~ msgstr "input_dvd: CDROM_DRIVE_STATUS falhou: %s\n" - -#~ msgid "ioctl(cdromallow): %s" -#~ msgstr "ioctl(cdromallow): %s" - -#~ msgid "ioctl(cdromeject): %s" -#~ msgstr "ioctl(cdromeject): %s" - -#~ msgid "dvd device input plugin as shipped with xine" -#~ msgstr "dvd device input plugin as shipped with xine" - -#~ msgid "" -#~ "dvd input plugin doesn't support plugin API version %d.\n" -#~ "PLUGIN DISABLED.\n" -#~ "This means there's a version mismatch between xine and this inputplugin.\n" -#~ "Installing current input plugins should help.\n" -#~ msgstr "" -#~ "plugin de entrada dvd não suporta a versão %d da API de plugins.\n" -#~ "PLUGIN DESABILITADO.\n" -#~ "Isto significa que existe um descasamento de versões entre o xine e este " -#~ "plugin de entrada.\n" -#~ "Instalar os plugins de entrada atuais deve ajudar.\n" - -#~ msgid "unable to open %s: %s." -#~ msgstr "incapaz de abrir %s: %s." - -#, fuzzy -#~ msgid "none" -#~ msgstr "feito\n" - -#~ msgid "" -#~ "demux_qt: video codec %s (%f fps), audio codec %s (%ld Hz, %d bits)\n" -#~ msgstr "" -#~ "demux_qt: video codec %s (%f fps), audio codec %s (%ld Hz, %d bits)\n" - -#~ msgid "demux_ts: PUSI set but no PES header (corrupt stream?)\n" -#~ msgstr "" -#~ "demux_ts: PUSI setado mas não tem cabeçalho PES (stream corrompida?)\n" - -#~ msgid "RE-Sync failed\n" -#~ msgstr "RE-Sync falhou\n" - -#~ msgid "mpgaudio: bitrate = %.2fkbps\n" -#~ msgstr "mpgaudio: bitrate = %.2fkbps\n" - -#~ msgid "demux_ts: stop...\n" -#~ msgstr "demux_ts: stop...\n" - -#~ msgid "demux_avi: reconstructing index" -#~ msgstr "demux_avi: reconstruindo o index" - -#~ msgid "demux_avi: audio seek to start failed\n" -#~ msgstr "demux_avi: ir para o inÃcio do audio falhou\n" - -#~ msgid "demux_avi: unknown avi format %.4s\n" -#~ msgstr "demux_avi: formato avi desconhecido %.4s\n" - -#~ msgid "demux_avi: text subtitle file available\n" -#~ msgstr "demux_avi: arquivo texto de subtÃtulos disponÃvel\n" - -#~ msgid "demux_avi: can't create new thread (%s)\n" -#~ msgstr "demux_avi: não consigo criar um novo thread (%s)\n" - -#~ msgid "input_http: answer: >%s<\n" -#~ msgstr "input_http: answer: >%s<\n" - -#~ msgid "input_http: end of headers\n" -#~ msgstr "input_http: end of headers\n" - -#, fuzzy -#~ msgid "video_out: thread created\n" -#~ msgstr "video_out : thread criad\n" - -#~ msgid "xine_stop\n" -#~ msgstr "xine_stop\n" - -#~ msgid "xine_stop ignored\n" -#~ msgstr "xine_stop ignorado\n" - -#~ msgid "xine_stop: stopping demuxer\n" -#~ msgstr "xine_stop: parando o demuxer\n" - -#~ msgid "xine_stop: done\n" -#~ msgstr "xine_stop: feito\n" - -#~ msgid "xine_exit: shutdown audio\n" -#~ msgstr "xine_exit: desligando o audio\n" - -#~ msgid "xine_exit: shutdown video\n" -#~ msgstr "xine_exit: desligando o video\n" - -#~ msgid "xine_exit: bye!\n" -#~ msgstr "xine_exit: tchau!\n" - -#~ msgid "xine: xine_get_current_position: no input source\n" -#~ msgstr "xine: xine_get_current_position: sem fonte de entrada\n" - -#~ msgid "xine: set_speed %d\n" -#~ msgstr "xine: set_speed %d\n" - -#~ msgid "demux_ts: demux error! PAT without payload unit start indicator\n" -#~ msgstr "" -#~ "demux_ts: erro no demux! PAT sem indicador de começo de unidade \"payload" -#~ "\"\n" - -#~ msgid "demux_ts: demux error! PAT with invalid pointer\n" -#~ msgstr "demux_ts: erro no demux! PAT com ponteiro invalido\n" - -#~ msgid "demux_avi: demux loop finished.\n" -#~ msgstr "demux_avi: loop de demux terminado.\n" - -#~ msgid "demux_avi: stop...ignored\n" -#~ msgstr "demux_avi: stop...ignorado\n" - -#~ msgid "demux_avi: AVI_init failed (AVI_errno: %d)\n" -#~ msgstr "demux_avi: AVI_init falhou (AVI_errno: %d)\n" - -#~ msgid "demux_elem: can't create new thread (%s)\n" -#~ msgstr "demux_elem: não consigo criar um novo thread (%s)\n" - -#~ msgid "How how - something wrong in wonderland demux:read_bytes (%d)\n" -#~ msgstr "" -#~ "Ha Ha - alguma coisa errada no paÃs das maravilhas demux:read_bytes (%d)\n" - -#~ msgid "demux loop finished (status: %d, buf:%x)\n" -#~ msgstr "demux loop terminado (status: %d, buf:%x)\n" - -#~ msgid "demux_mpeg: stop...\n" -#~ msgstr "demux_mpeg: stop...\n" - -#~ msgid "demux_mpeg: can't create new thread (%s)\n" -#~ msgstr "demux_mpeg: não consigo criar um novo thread (%s)\n" - -#~ msgid "demux_mpeg_block: read_block failed\n" -#~ msgstr "demux_mpeg_block: read_block falhou\n" - -#~ msgid "demux_mpeg_block: checking if we can branch to %s\n" -#~ msgstr "demux_mpeg_block: checando se podemos ramificar para %s\n" - -#~ msgid "demux_mpeg_block: branching\n" -#~ msgstr "demux_mpeg_block: ramificando\n" - -#~ msgid "demux_mpeg_block: error! %02x %02x %02x (should be 0x000001) \n" -#~ msgstr "demux_mpeg_block: erro! %02x %02x %02x (deveria ser 0x000001) \n" - -#~ msgid "illegal lpcm sample format (%d), assume 16-bit samples\n" -#~ msgstr "" -#~ "formato de amostras lpcm ilegal (%d), assumindo amostras de 16-bits\n" - -#~ msgid "demux_mpeg_block: error %02x %02x %02x (should be 0x000001) \n" -#~ msgstr "demux_mpeg_block: erro %02x %02x %02x (deveria ser 0x000001) \n" - -#~ msgid "demux_mpeg_block: stop...ignored\n" -#~ msgstr "demux_mpeg_block: stop...ignorado\n" - -#~ msgid "demux_mpeg_block: can't create new thread (%s)\n" -#~ msgstr "demux_mpeg_block: não consigo criar um novo thread (%s)\n" - -#~ msgid "demux_mpeg_block: mrl %s is new, will estimated bitrate\n" -#~ msgstr "demux_mpeg_block: mrl %s é nova, vou estimar a taxa de bits\n" - -#~ msgid "demux_mpeg_block: mrl %s is known, estimated bitrate: %d\n" -#~ msgstr "demux_mpeg_block: mrl %s é conhecida, taxa de bits estimada: %d\n" - -#~ msgid "demux_mpgaudio: can't create new thread (%s)\n" -#~ msgstr "demux_mpgaudio: não consigo criar um novo thread (%s)\n" - -#~ msgid "demux_pes: stop...\n" -#~ msgstr "demux_pes: stop...\n" - -#~ msgid "demux_pes: can't create new thread (%s)\n" -#~ msgstr "demux_pes: não consigo criar um novo thread (%s)\n" - -#~ msgid "Header not compressed with zlib\n" -#~ msgstr "Cabeçalho não comprimido com zlib\n" - -#~ msgid "QT cmov: malloc err 0" -#~ msgstr "QT cmov: malloc err 0" - -#~ msgid "QT cmov: read err tlen %llu\n" -#~ msgstr "QT cmov: read err tlen %llu\n" - -#~ msgid "QT cmov: malloc err moov_sz %u\n" -#~ msgstr "QT cmov: malloc err moov_sz %u\n" - -#~ msgid "QT cmov: inflateInit err %d\n" -#~ msgstr "QT cmov: inflateInit err %d\n" - -#~ msgid "QT cmov inflate: ERR %d\n" -#~ msgstr "QT cmov inflate: ERR %d\n" - -#~ msgid "demux_qt: quicktime_open: error in header\n" -#~ msgstr "demux_qt: quicktime_open: erro no cabeçalho\n" - -#~ msgid "demux_qt: stop...ignored\n" -#~ msgstr "demux_qt: stop...ignorado\n" - -#~ msgid "demux_qt: unknown audio codec >%s<\n" -#~ msgstr "demux_qt: audio codec desconhecido >%s<\n" - -#~ msgid "" -#~ "demux_ogg: beginning of stream\n" -#~ "demux_ogg: serial number %d\n" -#~ msgstr "" -#~ "demux_ogg: inÃcio de stream\n" -#~ "demux_ogg: número de série %d\n" - -#~ msgid "demux_ogg: found a new stream, serialnumber %d\n" -#~ msgstr "demux_ogg: achei um novo stream, número de série %d\n" - -#~ msgid "demux_ogg: stop...ignored\n" -#~ msgstr "demux_ogg: stop...ignorado\n" - -#~ msgid "demux_ogg: can't create new thread (%s)\n" -#~ msgstr "demux_ogg: não consigo criar um novo thread (%s)\n" - -#~ msgid "demux_asf: end of data\n" -#~ msgstr "demux_asf: final dos dados\n" - -#~ msgid "demux_asf: wavex header is %d bytes long\n" -#~ msgstr "demux_asf: cabeçalho wavex tem %d bytes\n" - -#~ msgid "demux_asf: unknown video format %.4s\n" -#~ msgstr "demux_asf: formato de vÃdeo desconhecido %.4s\n" - -#~ msgid "demux_asf: file doesn't start with an asf header\n" -#~ msgstr "demux_asf: o arquivo não começa com um cabeçalho asf\n" - -#~ msgid "demux_asf: audio conceal interleave detected (%d x %d x %d)\n" -#~ msgstr "demux_asf: detectado um audio conceal interleave (%d x %d x %d)\n" - -#~ msgid "demux_asf: absolute size ignored\n" -#~ msgstr "demux_asf: tamanho absoluto ignorado\n" - -#~ msgid "demux_asf: buffer overflow on defrag!\n" -#~ msgstr "demux_asf: buffer overflow on defrag!\n" - -#~ msgid "demux_asf: get_packet failed\n" -#~ msgstr "demux_asf: get_packet falhou\n" - -#~ msgid "demux_asf: unknow segtype %x\n" -#~ msgstr "demux_asf: segtype desconhecido%x\n" - -#~ msgid "demux_asf: stop...ignored\n" -#~ msgstr "demux_asf: stop...ignorado\n" - -#~ msgid "demux_asf: can't create new thread (%s)\n" -#~ msgstr "demux_asf: não consigo criar um novo thread (%s)\n" - -#~ msgid "demux_cda: stop...ignored\n" -#~ msgstr "demux_cda: stop...ignorado\n" - -#~ msgid "demux_cda: can't create new thread (%s)\n" -#~ msgstr "demux_cda: não consigo criar um novo thread (%s)\n" - -#~ msgid "metronom: video stream start...\n" -#~ msgstr "metronom: video stream start...\n" - -#~ msgid "metronom: video stream start ignored\n" -#~ msgstr "metronom: video stream start ignorado\n" - -#~ msgid "metronom: waiting for audio to start...\n" -#~ msgstr "metronom: esperando o audio começar...\n" - -#~ msgid "metronom: video stream end\n" -#~ msgstr "metronom: video stream end\n" - -#~ msgid "metronom: video stream end ignored\n" -#~ msgstr "metronom: video stream end ignorado\n" - -#~ msgid "metronom: waiting for audio to end...\n" -#~ msgstr "metronom: esperando o audio terminar...\n" - -#~ msgid "metronom: audio stream start...\n" -#~ msgstr "metronom: audio stream start...\n" - -#~ msgid "metronom: audio stream start ignored\n" -#~ msgstr "metronom: audio stream start ignorado\n" - -#~ msgid "metronom: audio stream start...done\n" -#~ msgstr "metronom: audio stream start...feito\n" - -#~ msgid "metronom: waiting for video to end...\n" -#~ msgstr "metronom: esperando o video terminar...\n" - -#~ msgid "metronom: video discontinuity #%d\n" -#~ msgstr "metronom: descontinuidade de video #%d\n" - -#~ msgid "metronom: waiting for audio discontinuity #%d\n" -#~ msgstr "metronom: esperando a descontinuidade de audio #%d\n" - -#~ msgid "metronom: video vpts adjusted to %d\n" -#~ msgstr "metronom: video vpts adjustado para %d\n" - -#~ msgid "metronom: audio/video vpts too old, adjusted to %d\n" -#~ msgstr "metronom: audio/video vpts velho demais, adjustado para %d\n" - -#~ msgid "" -#~ "metronom: video pts discontinuity/start, pts is %d, wrap_offset is %d, " -#~ "vpts is %d\n" -#~ msgstr "" -#~ "metronom: video pts discontinuity/start, pts is %d, wrap_offset is %d, " -#~ "vpts is %d\n" - -#~ msgid "metronom: forcing video_wrap (%d) and audio wrap (%d)" -#~ msgstr "metronom: forcing video_wrap (%d) and audio wrap (%d)" - -#~ msgid " to %d\n" -#~ msgstr " to %d\n" - -#~ msgid "metronom: delta too big, setting vpts to %d\n" -#~ msgstr "metronom: delta too big, setting vpts to %d\n" - -#~ msgid "metronom: audio discontinuity #%d\n" -#~ msgstr "metronom: discontinuidade de audio #%d\n" - -#~ msgid "metronom: waiting for video_discontinuity #%d\n" -#~ msgstr "metronom: esperando por discontinuidade de vÃdeo #%d\n" - -#~ msgid "metronom: audio vpts adjusted to %d\n" -#~ msgstr "metronom: audio vpts adjustado para %d\n" - -#~ msgid "" -#~ "metronom: audio pts discontinuity/start, pts is %d, wrap_offset is %d, " -#~ "vpts is %d\n" -#~ msgstr "" -#~ "metronom: audio pts discontinuity/start, pts is %d, wrap_offset is %d, " -#~ "vpts is %d\n" - -#~ msgid "to %d\n" -#~ msgstr "to %d\n" - -#~ msgid "metronom: av_offset=%d pts\n" -#~ msgstr "metronom: av_offset=%d pts\n" - -#~ msgid "metronom: panic - no scr provider found!\n" -#~ msgstr "metronom: panic - no scr provider found!\n" - -#~ msgid "metronom: cannot create sync thread (%s)\n" -#~ msgstr "metronom: não consigo criar um sync thread (%s)\n" - -#~ msgid "video_out : ALERT! frame is already locked for displaying\n" -#~ msgstr "video_out : ALERTA! frame já está trancado para mostar\n" - -#~ msgid "video_out: rejected, %d frames to skip\n" -#~ msgstr "video_out: rejeitado, %d frames para pular\n" - -#~ msgid "xine_play: xine open %s, start pos = %d, start time = %d (sec)\n" -#~ msgstr "xine_play: xine open %s, start pos = %d, start time = %d (sec)\n" - -#~ msgid "inputs" -#~ msgstr "entradas" - -#~ msgid "demuxers" -#~ msgstr "demuxers" - -#~ msgid "video" -#~ msgstr "video" - -#~ msgid "video_out : vo_open : warning! video thread already running\n" -#~ msgstr "video_out : vo_open : aviso! video thread já está rodando\n" - -#~ msgid "xine_init entered\n" -#~ msgstr "xine_init entrou\n" - -#~ msgid "xine_init returning\n" -#~ msgstr "xine_init retornou\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xine-lib 1.0\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 18:34+0000\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2004-09-15 13:53+0100\n" "Last-Translator: \n" "Language-Team: Slovak <ski18n@lists.isternet.sk>\n" @@ -56,6 +56,7 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() z %s zlyhal: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" msgstr "audio_alsa_out: >>> skontrolujte Äi už iný program použÃva PCM <<<\n" @@ -153,11 +154,13 @@ msgstr "snd_pcm_open() zlyhal:%d:%s\n" msgid ">>> Check if another program already uses PCM <<<\n" msgstr ">>> Skontrolujte Äi už iný program použÃva PCM <<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -190,87 +193,87 @@ msgid "" msgstr "" #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " -msgstr "audio_alsa_out : podporované módy sú " +msgid "audio_alsa_out : supported modes are" +msgstr "audio_alsa_out : podporované módy sú" -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1508 +#: src/audio_out/audio_alsa_out.c:1509 #, fuzzy -msgid "16bit " -msgstr "8bit " +msgid " 16bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1512 +#: src/audio_out/audio_alsa_out.c:1513 #, fuzzy -msgid "24bit " -msgstr "8bit " +msgid " 24bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1516 +#: src/audio_out/audio_alsa_out.c:1517 #, fuzzy -msgid "32bit " -msgstr "8bit " - -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono " +msgid " 32bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "stereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-kanály " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " stereo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4-kanály nepovolené v xine konfigu) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-kanály" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1-kanálov " +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4-kanály nepovolené v xine konfigu)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-kanálov nepovolené v xine konfigu) " +msgid " 4.1-channel" +msgstr " 4.1-kanálov" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5-kanálov " +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-kanálov nepovolené v xine konfigu)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5-kanálov nepovolené v xine konfigu) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5-kanálov" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1-kanálov " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5-kanálov nepovolené v xine konfigu)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-kanálov nepovolené v xine konfigu) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-kanálov" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "a/52 a DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-kanálov nepovolené v xine konfigu)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(a/52 a DTS pass-through not enabled in xine config)\n" +msgid " a/52 and DTS pass-through" +msgstr " a/52 a DTS pass-through" + +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (a/52 a DTS pass-through not enabled in xine config)" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "alsa mixovacie zaridenie" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." msgstr "" -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "" "výstupný xine audio plugin použÃva alsa-compliant audio zariadenia/ovládaÄe" @@ -284,209 +287,191 @@ msgstr "výstupný xine audio plugin použÃva kde artsd" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "výstupný xine audio plugin pre win32 použÃva directx" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 #, fuzzy msgid "requested buffer control is not available" msgstr "požadované tlaÄidlo nedostupné\n" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 #, fuzzy msgid "requested COM interface not available" msgstr "požadované tlaÄidlo nedostupné\n" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 #, fuzzy msgid "unknown error" msgstr "UdalosÅ¥ neznámeho typu: " -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "" -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "" -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "" - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "" -#: src/audio_out/audio_directx2_out.c:632 +#: src/audio_out/audio_directx2_out.c:596 #, c-format -msgid ": play cursor overran, flushing buffers\n" +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr "" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, fuzzy, c-format msgid ": can't create pthread condition: %s\n" msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, fuzzy, c-format msgid ": can't create pthread mutex: %s\n" msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, fuzzy, c-format msgid ": can't create buffer pthread: %s\n" msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, fuzzy, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr "" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, fuzzy, c-format msgid ": unknown control command %d\n" msgstr "iff-ilbm: neznáma kompresia: %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 #, fuzzy msgid "second xine audio output plugin using directx" msgstr "výstupný xine audio plugin pre win32 použÃva directx" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "výstupný xine audio plugin pre win32 použÃva directx" @@ -496,6 +481,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: pripájanie na ESD server %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: pripájanie na esd server ...\n" @@ -508,7 +494,7 @@ msgstr "audio_esd_out: nemôžem sa pripojiÅ¥ na %s ESD server: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "výstupné oneskorenie esd audia (nastavte odstup a/v)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" @@ -540,7 +526,18 @@ msgstr "" msgid "xine audio output plugin using IRIX libaudio" msgstr "výstupný xine audio plugin použÃva IRIX libaudio" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "názov OSS audio zariadenia" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 #, fuzzy msgid "xine output plugin for JACK Audio Connection Kit" msgstr "výstupný xine audio plugin pre win32 použÃva directx" @@ -568,11 +565,11 @@ msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "" "audio_oss_out: audio frekv. : %d požadovaná, %d poskytnutá zariadenÃm\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "názov OSS audio zariadenia" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 #, fuzzy msgid "" "Specifies the base part of the audio device name, to which the OSS device " @@ -583,12 +580,12 @@ msgstr "" "oss_device_number na nastavenie ÄÃsla zariadenia. Vyberte auto ak autom. " "hľadaÅ¥ zariadenie." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 #, fuzzy msgid "OSS audio device number, -1 for none" msgstr "názov OSS audio zariadenia" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 #, fuzzy msgid "" "The full audio device name is created by concatenating the OSS device name " @@ -602,20 +599,22 @@ msgstr "" "(napr. /dev/sound/dsp2). Ak nepotrebujete ÄÃslo, nastavte na -1 (eg /dev/" "sound/dsp). Rozsah ÄÃsla je -1 alebo 0-15." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "audio_oss_out: audio.device.oss_device_name = auto, skúšam devs\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: Automatické hľadanie audio zar. zlyhalo\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: použÃvam zariadenie >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -624,12 +623,12 @@ msgstr "" "audio_oss_out: zlyhalo otvorenie audio zariadenia %s:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 #, fuzzy msgid "a/v sync method to use by OSS" msgstr "synchronizaÄná A/V metóda použitá OSS, závisà od ovládaÄa/hardvéru" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -659,7 +658,8 @@ msgid "" "ioctls and you experience sync errors after long playback" msgstr "" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -669,33 +669,39 @@ msgstr "" "audio_oss_out: ...budú použité systémové hodiny skut.Äasu pre softvérovú\n" "audio_oss_out: ...preto môžu byÅ¥ problémy s audio/video synchronizáciou\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 #, fuzzy msgid "OSS audio output latency (adjust a/v sync)" msgstr "výstupné oneskorenie esd audia (nastavte odstup a/v)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: RT synchronizácia audio ovládaÄa zakázaná ...\n" -"audio_oss_out: ...zisÅ¥ujem veľkosÅ¥ výst. vyrovn. pamäte: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d bytov\n" +"audio_oss_out: RT synchronizácia audio ovládaÄa zakázaná ...\n" +"audio_oss_out: ...zisÅ¥ujem veľkosÅ¥ výst. vyrovn. pamäte: %d bytov\n" "audio_oss_out: ...môžu byÅ¥ problémy s audio/video synchronizáciou\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: podporované módy sú" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr " a/52 pass-through" + +#: src/audio_out/audio_oss_out.c:1012 +msgid " (a/52 pass-through not enabled in xine config)" +msgstr "" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -705,26 +711,26 @@ msgid "" "audio device name is set to \"auto\"." msgstr "" -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: open() mixer %s zlyhal: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "" "výstupný xine audio plugin použÃva oss-compliant audio zariadenia/ovládaÄe" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 #, fuzzy msgid "device used for pulseaudio" msgstr "zariadenie pre cdda mechaniku" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 #, fuzzy msgid "xine audio output plugin using pulseaudio sound server" msgstr "výstupný xine audio plugin použÃva esound" @@ -757,30 +763,187 @@ msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "" "výstupný xine audio plugin použÃva sun-compliant audio zariadenia/ovládaÄe" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: zväÄÅ¡ujem buffer na %d aby sa prediÅ¡lo preteÄeniu.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "ffmpeg_audio_dec: nenaÅ¡iel ffmpeg dekóder pre buf typu 0x%X\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, fuzzy, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: nemôžem otvoriÅ¥ dekóder\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: nemôžem otvoriÅ¥ dekóder\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, fuzzy, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_audio_dec: zväÄÅ¡ujem buffer na %d aby sa prediÅ¡lo preteÄeniu.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: nepodporovaný formát snÃmku, DR1 nepovolený.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, fuzzy, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: nepodporovaný formát snÃmku, DR1 nepovolený.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "ffmpeg_video_dec: nenájdený ffmpeg dekóder pre buf typu 0x%X\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: nedá sa otvoriÅ¥ dekóder\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: priame vykreslovanie zapnuté\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "ffmpeg_video_dec: zväÄÅ¡ujem buffer na %d aby sa prediÅ¡lo preteÄeniu.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +#, fuzzy +msgid "MPEG-4 postprocessing quality" +msgstr "kvalita ffmpeg mpeg-4 postspracovania" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +#, fuzzy +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "Dxr3enc: výstupná rýchlosÅ¥ libavcodec mpeg (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +#, fuzzy +msgid "minimum compression" +msgstr "iff-ilbm: neznáma kompresia: %d\n" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +#, fuzzy +msgid "maximum quantizer" +msgstr "Dxr3enc: Maximálny kvantizér" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "" + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: varovanie: Prúd id=%d je kryptovaný.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: varovanie: Prúd id=%d je kryptovaný.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Media stream scrambled/encrypted" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "Obnovujem index..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, fuzzy, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "demux_avi: neplatný avi blok \"%c%c%c%c\" na poz. %lld\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: index avi súboru je poÅ¡kodený\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, fuzzy, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "demux_avi: zlyhalo preskoÄenie videa na nasl. blok (poz. %lld)\n" @@ -790,20 +953,26 @@ msgstr "demux_avi: zlyhalo preskoÄenie videa na nasl. blok (poz. %lld)\n" msgid "invalid FILM chunk size\n" msgstr "neplatná veľkosÅ¥ FILM bloku\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "nerozoznaný FILM blok\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -819,7 +988,8 @@ msgstr "iff-ilbm: neznáma kompresia: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: neznámy blok: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "" @@ -833,6 +1003,7 @@ msgstr "" "tvorcom xine.\n" #: src/demuxers/demux_mpeg_block.c:305 +#, c-format msgid "" "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "demux_mpeg_block: chyba! uvoľňujem. ProsÃm nahláste to tvorcom xine.\n" @@ -852,7 +1023,7 @@ msgstr "" "demux_mpeg_block: varovanie: hlaviÄka PES indikuje, že tento prúd môže byÅ¥ " "zaÅ¡ifrovaný (režim Å¡ifrovania %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " @@ -861,18 +1032,18 @@ msgstr "" "xine-lib:demux_mpeg_pes: Nerozoznaný stream_id 0x%02x. ProsÃm nahláste to " "tvorcom xine.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" msgstr "demux_mpeg_pes: varovanie: dekódovanie PACK prúdu id=0x%x zlyhalo.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "" "demux_mpeg_pes: varovanie: rezervovaných 10 bit hlaviÄky PES nenajdené\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " @@ -881,7 +1052,7 @@ msgstr "" "demux_mpeg_pes: varovanie: hlaviÄka PES indikuje, že tento prúd môže byÅ¥ " "zaÅ¡ifrovaný (režim Å¡ifrovania %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " @@ -896,17 +1067,18 @@ msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" msgstr "" "stopa ogg: vorbis audio indikovaná, ale hlaviÄka vorbis prúdu nenájdená.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: zlé parametre hlaviÄky\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: nepodporovaný typ zvuku: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "" @@ -926,7 +1098,7 @@ msgstr "neznáma VOC kompresia typu (0x%02X); prosÃm nahlásiÅ¥ tvorcom xine\n" msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "demux_wc3movie: SHOT blok refercoval neznámu paletu (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "demux_wc3movie: Bol problém pri nahrávanà blokov palety\n" @@ -948,6 +1120,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: Zlyhalo otvorenie zariadenia titulkov %s (%s)\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "požadované tlaÄidlo nedostupné\n" @@ -1017,6 +1190,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Zlyhalo otvorenie video zariadenia %s (%s)\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: zápis na zariadenie by blokoval. vyprázdňujem\n" @@ -1031,16 +1205,19 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: WARNING: neznámy kód rýchlosti snÃmkov %d\n" #: src/dxr3/dxr3_decode_video.c:760 +#, c-format msgid "" "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" msgstr "" "dxr3_decode_video: VAROVANIE: korigujem snÃmk. rýchlosÅ¥ z PAL na NTSC\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: init librte zlyhal\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" @@ -1048,10 +1225,12 @@ msgstr "" "dxr3_mpeg_encoder: rte pracuje iba s rozmermi videa, ktoré sú násobkami 16\n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: zlyhalo zÃskanie rte kontextu.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: nemohol vytvoriÅ¥ kodec.\n" @@ -1080,6 +1259,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: nemožno zaÄaÅ¥ kódovanie: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: NeÅ¡lo naÅ¡tartovaÅ¥ FAME knižnicu\n" @@ -1169,18 +1349,22 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "video_out_dxr3: Mpeg kóder libavcodec neÅ¡iel spustiÅ¥.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: Mpeg kóder rte neÅ¡iel spustiÅ¥.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: Mpeg kóder fame neÅ¡iel spustiÅ¥.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1198,6 +1382,7 @@ msgstr "" "kódera.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1288,6 +1473,7 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: prosÃm spustite autocal, prekrývanie zakázané\n" @@ -1307,10 +1493,12 @@ msgid "" msgstr "" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: nastavenie video módu zlyhalo.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" @@ -1318,46 +1506,47 @@ msgstr "" "video_out_dxr3: Potrebujete mpeg kóder na prehratie nie-mpeg videa na dxr3\n" "video_out_dxr3: ÄŒÃtajte README.dxr3 kôli detailom.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" msgstr "" "video_out_dxr3: CHYBA ÄŒÃtania init súboru prekrývania. Spustite autocal!\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, fuzzy, c-format msgid "%s: can't connect to %s:%d\n" msgstr "rtsp: nemožno sa pripojiÅ¥ k '%s'\n" -#: src/input/input_cdda.c:1663 +#: src/input/input_cdda.c:1649 #, c-format msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: úspeÅ¡ne pripojenie na cddb server '%s:%d'.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" msgstr "input_cdda: nemožno sa pripojiÅ¥ na cddb server '%s:%d' (%s).\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "CD Digital Audio (aka. CDDA)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 #, fuzzy msgid "device used for CD audio" msgstr "zariadenie pre cdda mechaniku" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1366,12 +1555,12 @@ msgid "" "listening habits." msgstr "" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 #, fuzzy msgid "CDDB server name" msgstr "cddbp meno servera" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1379,21 +1568,21 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 #, fuzzy msgid "CDDB server port" msgstr "cddbp port servra" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 #, fuzzy msgid "CDDB cache directory" msgstr "cddbp cache adresár" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1401,11 +1590,11 @@ msgid "" "used for anything but CDDB caching." msgstr "" -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1414,173 +1603,205 @@ msgid "" "A value of zero here will disable the slowdown." msgstr "" -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, fuzzy, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_dvb: zlyhalo otvorenie súboru dvb kanála '%s'\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, fuzzy, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_dvb: zlyhalo otvorenie súboru dvb kanála '%s'\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: tuner_set_channel zlyhal\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: nemožno otvoriÅ¥ dvb zariadenie\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, fuzzy, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: zlyhalo otvorenie súboru dvb kanála '%s'\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" msgstr "" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, fuzzy, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: zlyhalo otvorenie súboru dvb kanála '%s'\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" msgstr "" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" msgstr "" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" msgstr "" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" msgstr "" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" msgstr "" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: nemožno otvoriÅ¥ dvr zariadenie '%s'\n" -#: src/input/input_dvb.c:2999 -#, fuzzy +#: src/input/input_dvb.c:3016 +#, fuzzy, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." msgstr "" -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "DVB (Digital TV) vstupný modul" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " msgstr "" -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "" -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." msgstr "" -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "" -#: src/input/input_dvb.c:3306 +#: src/input/input_dvb.c:3326 msgid "" "Leave this at zero unless you really have more than 1 card in your system." msgstr "" -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: Chyba pri zÃskavanà Äaľšieho bloku z DVD (%s)\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: Nemožno otvoriÅ¥ DVD zariadenie\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 #, fuzzy msgid "device used for DVD playback" msgstr "zariadenie pre mono výstup" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." msgstr "" -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1591,23 +1812,23 @@ msgid "" "See the documentation on raw device setup (man raw) for further information." msgstr "" -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " "scrambled DVDs." msgstr "" -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 #, fuzzy msgid "path to the title key cache" msgstr "cesta k video zariadeniu v4l" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1616,45 +1837,45 @@ msgid "" "used for anything but DVD key caching." msgstr "" -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." msgstr "" -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 #, fuzzy msgid "read-ahead caching" msgstr "Použijeme keÅ¡ovanie predÄÃtanÃm?" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1673,11 +1894,11 @@ msgid "" "features on the DVD" msgstr "" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1691,11 +1912,11 @@ msgid "" "chapter of the current feature" msgstr "" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1707,137 +1928,137 @@ msgid "" "play just the specified title/chapter and then stop" msgstr "" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: chyba pri ÄÃtanà (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, fuzzy, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_rip: skok zlyhal: %s\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, fuzzy, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: chyba pri ÄÃtanà (%s)\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, fuzzy, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: chyba pri ÄÃtanà (%s)\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "modul vstupu zo súboru" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "zaÄiatoÄné miesto prehliadania súborov" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "" -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "zobraziÅ¥ skryté súbory" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." msgstr "" -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "modul vstupu gnome-vfs dodávaný so xine" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, fuzzy, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_rip: skok zlyhal: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: chyba pri ÄÃtanà %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "Pripájam sa na HTTP server..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: neplatná odpoveÄ http\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: presmerovanie 3xx: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: stav http nie je 2xx: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, fuzzy, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: dĺžka obsahu = %Ld bajtov\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, fuzzy, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: chyba pri ÄÃtanà %d\n" -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "modul vstupu zo siete protokolom http" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 #, fuzzy msgid "HTTP proxy host" msgstr "adresa http proxy" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 #, fuzzy msgid "HTTP proxy port" msgstr "port http proxy" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "" -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 #, fuzzy msgid "HTTP proxy username" msgstr "meno použÃvateľa pre http proxy" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 #, fuzzy msgid "HTTP proxy password" msgstr "heslo pre http proxy" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "" -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" @@ -1845,27 +2066,27 @@ msgid "" "(full match required)." msgstr "" -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "modul vstupu zo siete protokolom mms" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 #, fuzzy msgid "network bandwidth" msgstr "SieÅ¥ové prenosové pásmo" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." msgstr "" -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "MMS protokol" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 #, fuzzy msgid "" "Select the protocol to encapsulate MMS.\n" @@ -1894,51 +2115,53 @@ msgstr "input_net: nemožno zistiÅ¥ adresu '%s'.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: nemožno sa pripojiÅ¥ k '%s'.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "modul vstupu zo siete dodávaný so xine" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "modul vstupu z prúdu pnm" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: nedá sa vytvoriÅ¥ pvr súbor (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: nedá sa otvoriÅ¥ pvr súbor (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: chyba pri ÄÃtanà (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: nemožno otvoriÅ¥ zariadenie %s\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_G_CODEC zlyhal, možno sa API zmenilo?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" msgstr "input_pvr: IVTV_IOC_S_CODEC zlyhal, možno sa API zmenilo?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "modul vstupu z WinTV-PVR 250/350" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "zariadenie použité pre WinTV-PVR 250/350 (pvr modul)" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "" @@ -1993,95 +2216,119 @@ msgstr "nemožno sa naviazaÅ¥ k '%s'.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: zastavujem ÄÃtacie vlákno...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: ÄÃtacie vlákno ukonÄené\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Otváranie >súbor:%s port:%d rozhranie:%s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "modul vstupu zo siete protokolom RTP a UDP dodávaný s xine" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "modul vstupu zo siete protokolom rtsp" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, fuzzy, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: nemôžem skoÄiÅ¥ späť! (%lld > %lld)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: nemožno otvoriÅ¥ '%s'\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "modul vstupu zo Å¡tandard. vstupu" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Buffer dáta odtiekli..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Buffer pretiekol..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "Prispôsobovanie sa..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Meno tuneru nenájdené\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "modul vstupu z tv v4l" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "modul vstupu z rádia v4l" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 #, fuzzy msgid "v4l video device" msgstr "cesta k video zariadeniu v4l" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 #, fuzzy msgid "The path to your Video4Linux video device." msgstr "cesta k video zariadeniu v4l" -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "cesta k rádio zariadeniu v4l" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "cesta k video zariadeniu v4l" + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 #, fuzzy msgid "v4l radio device" msgstr "cesta k rádio zariadeniu v4l" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 #, fuzzy msgid "The path to your Video4Linux radio device." msgstr "cesta k rádio zariadeniu v4l" #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: neplatné MRL. Použite vcdo:/<ÄÃslo stopy>\n" @@ -2094,33 +2341,33 @@ msgstr "input_vcd: neplatná stopa %d (platný rozsah: 0..%d)\n" msgid "Video CD input plugin" msgstr "modul vstupu z Video CD" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "nemožno otvoriÅ¥ %s: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: nemožno otvoriÅ¥ %s: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 #, fuzzy msgid "device used for VCD playback" msgstr "zariadenie pre mono výstup" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." msgstr "" -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: zlé mrl: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: nemožno sa pripojiÅ¥ k '%s'\n" @@ -2131,10 +2378,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: nemožno sa pripojiÅ¥ k servru %s\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: nemožno zaviesÅ¥ reláciu\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: nemožno zaviesÅ¥ reláciu\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "" @@ -2145,44 +2400,45 @@ msgstr "" msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "input_dvd: Zariadenie %s zlyhalo pri otvorenà poÄas volania eject\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "Pripájanie k MMS serveru (cez tcp)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: chyba posielania\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: zlý formát odpovede\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: presmerovanie 3xx nie je implementované: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: stav http nie je 2xx: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: Presmerovanie umiestnenia nie je implementované\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "Pripájanie na MMS server (cez http)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "neplatné url\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "nepodporovaný protokol\n" @@ -2191,7 +2447,7 @@ msgstr "nepodporovaný protokol\n" msgid "Buffering..." msgstr "Buffering..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2200,12 +2456,13 @@ msgstr "" "input_pnm: zÃskaná spáva od servra poÄas ÄÃtania prúdu:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: nemožno sa pripojiÅ¥ k '%s'\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: zlyhalo nastavenie prúdu dát\n" @@ -2246,52 +2503,52 @@ msgstr "Vyššie uvedené by malo byÅ¥ prevedené" msgid "failed to find a device with a VCD" msgstr "zlyhalo hľadanie zariadenia s VCD" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "bol poslaný parameter neznámej triedy" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Neplatný typ aktuálnej položky" -#: src/input/vcd/xineplug_inp_vcd.c:1014 +#: src/input/vcd/xineplug_inp_vcd.c:1012 msgid "" "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " msgstr "Video CD modul s PBC a podporou pre: (X)VCD, (X)SVCD, HQVCD, CVD ... " -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 #, fuzzy msgid "selection has no RETURN entry" msgstr "výber nemá Äaľšiu položku" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 #, fuzzy msgid "selection has no NEXT entry" msgstr "výber nemá Äaľšiu položku" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 #, fuzzy msgid "selection has no PREVIOUS entry" msgstr "výber nemá Äaľšiu položku" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "UdalosÅ¥ neznámeho typu: " -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "Vyššie uvedená správa má neznámu log. úroveň vcdimageru" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 #, fuzzy msgid "VCD default type to use on autoplay" msgstr "predvolený typ, ktorý sa použije na automat. prehratie VCD" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 #, fuzzy msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " @@ -2300,12 +2557,12 @@ msgstr "" "Jednotka prehrávania, ktorú použiÅ¥, keÄ nie je uvedená v MRL, napr. vcd:// " "alebo vcd:///dev/dvd:" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 #, fuzzy msgid "CD-ROM drive used for VCD when none given" msgstr "predvolené CD zariadenie použité pre VCD, pokiaľ nie je žiadne zadané" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 #, fuzzy msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " @@ -2314,32 +2571,32 @@ msgstr "" "ÄŒo použiÅ¥ ak nie je mechanika zadaná. Ak je zadané niÄ, xine preskenuje CD " "mechaniky." -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 #, fuzzy msgid "VCD position slider range" msgstr "rozsah ukazovateľa pozÃcie" -#: src/input/vcd/xineplug_inp_vcd.c:1861 +#: src/input/vcd/xineplug_inp_vcd.c:1859 #, fuzzy msgid "" "range that the stream playback position slider represents playing a VCD." msgstr "Rozsah ukazovateľa pozÃcie prehrávania použitého pri prehrávanÃ." -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 #, fuzzy msgid "VCD read-ahead caching?" msgstr "Použijeme keÅ¡ovanie predÄÃtanÃm?" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "Na slabÅ¡Ãch strojoch by mohlo viesÅ¥ k trhanému prehrávaniu" -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 #, fuzzy msgid "automatically advance VCD track/entry" msgstr "Automaticky postupovaÅ¥ po stopách/položkách?" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 #, fuzzy msgid "" "If enabled, we should automatically advance to the next entry or track. Used " @@ -2348,24 +2605,24 @@ msgstr "" "Ak je povolené, mali by sme automaticky postúpiÅ¥ na Äaľšiu položku alebo " "stopu. Použité iba ak nie je zapnutá kontola prehrávania (PBC)." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 #, fuzzy msgid "show 'rejected' VCD LIDs" msgstr "ZobraziÅ¥ 'odmietnuté' LID?" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 #, fuzzy msgid "VCD format string for display banner" msgstr "formát reÅ¥azca pre nápis na obrazovke" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2386,12 +2643,12 @@ msgid "" " %% : a %\n" msgstr "" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 #, fuzzy msgid "VCD format string for stream comment field" msgstr "formátovacà reÅ¥azec pre pole komentáru prúdu dát" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 #, fuzzy msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " @@ -2403,12 +2660,12 @@ msgstr "" "Å pecifikátory formátu zaÄÃnaju znakom percento. Å pecifikátory sú %A, %C, %c, " "%F, %I, %L, %N, %P, %p, %S, %T, %V, %v, and %%." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 #, fuzzy msgid "VCD debug flag mask" msgstr "debugovacia maska prÃznakov" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2425,7 +2682,8 @@ msgid "" "2048: Debugging from VCDINFO\n" msgstr "" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "POMOC! iba mono audio ovládaÄ?!\n" @@ -2467,150 +2725,33 @@ msgid "" "that the additional channels are mixed into the stereo signal." msgstr "" -#: src/libfaad/xine_faad_decoder.c:128 -#, fuzzy +#: src/libfaad/xine_faad_decoder.c:132 +#, fuzzy, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad faacDecOpen() zlyhal.\n" -#: src/libfaad/xine_faad_decoder.c:137 -#, fuzzy +#: src/libfaad/xine_faad_decoder.c:141 +#, fuzzy, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad faacDecInit2() zlyhal.\n" -#: src/libfaad/xine_faad_decoder.c:148 -#, fuzzy +#: src/libfaad/xine_faad_decoder.c:152 +#, fuzzy, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad faacDecInit() zlyhal.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: zväÄÅ¡ujem buffer na %d aby sa prediÅ¡lo preteÄeniu.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "ffmpeg_audio_dec: nenaÅ¡iel ffmpeg dekóder pre buf typu 0x%X\n" - -#: src/libffmpeg/ff_audio_decoder.c:253 -#, fuzzy -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: nemôžem otvoriÅ¥ dekóder\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: nemôžem otvoriÅ¥ dekóder\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, fuzzy, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: zväÄÅ¡ujem buffer na %d aby sa prediÅ¡lo preteÄeniu.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: nepodporovaný formát snÃmku, DR1 nepovolený.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -#, fuzzy -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: nepodporovaný formát snÃmku, DR1 nepovolený.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "ffmpeg_video_dec: nenájdený ffmpeg dekóder pre buf typu 0x%X\n" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: nedá sa otvoriÅ¥ dekóder\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: priame vykreslovanie zapnuté\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: zväÄÅ¡ujem buffer na %d aby sa prediÅ¡lo preteÄeniu.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -#, fuzzy -msgid "MPEG-4 postprocessing quality" -msgstr "kvalita ffmpeg mpeg-4 postspracovania" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:165 -#, fuzzy -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "Dxr3enc: výstupná rýchlosÅ¥ libavcodec mpeg (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:181 -#, fuzzy -msgid "minimum compression" -msgstr "iff-ilbm: neznáma kompresia: %d\n" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "" - -#: src/libffmpeg/ffmpeg_encoder.c:187 -#, fuzzy -msgid "maximum quantizer" -msgstr "Dxr3enc: Maximálny kvantizér" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "" - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "" @@ -2634,158 +2775,160 @@ msgid "" "information on how to install the codecs." msgstr "" -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "libreal: Chyba hľadania symbolov! (nekompatibilita verzii?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (audio) Nedajú sa zistiÅ¥ symboly - nekompatibilná dll: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "libareal: decoder init zlyhal, kód chyby: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "libareal: chutné nastavenie dekódera zlyhalo, kód chyby: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: ach, real môže maÅ¥ viac ako 2 kanály ?\n" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 #, fuzzy msgid "display closed captions in MPEG-2 streams" msgstr "PovoliÅ¥ skyté titulky v MPEG-2 prúdoch" -#: src/libspucc/xine_cc_decoder.c:190 +#: src/libspucc/xine_cc_decoder.c:196 msgid "" "Closed Captions are subtitles mostly meant to help the hearing impaired." msgstr "" -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 #, fuzzy msgid "closed-captioning foreground/background scheme" msgstr "Schéma skrytých titulkov popredie/pozadie" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "" -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 #, fuzzy msgid "standard closed captioning font" msgstr "Å tandardný font skrytých titulkov" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 #, fuzzy msgid "italic closed captioning font" msgstr "Font kurzÃvy skrytých titulkov" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 #, fuzzy msgid "closed captioning font size" msgstr "VeľkosÅ¥ fontu skrytých titulkov" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "" -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 #, fuzzy msgid "center-adjust closed captions" msgstr "Prispôsobenie centrovania skrytých titulkov" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "" -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 #, fuzzy msgid "font for external subtitles" msgstr "Font pre externé titulky" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 #, fuzzy msgid "subtitle vertical offset (relative window size)" msgstr "Vertikálny posun titulkov (vzhľadom k velkosti okna)" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 #, fuzzy msgid "encoding of subtitles" msgstr "Kódovanie titulkov" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 #, fuzzy msgid "default duration of subtitle display in seconds" msgstr "Predvolený Äas na skrytie titulkov v sekundách" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " "in the subtitle being shown until the next one takes over." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 #, fuzzy msgid "subtitle vertical offset" msgstr "Vertikálny posun titulkov (vzhľadom k velkosti okna)" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 #, fuzzy msgid "font for subtitles" msgstr "Font pre externé titulky" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 #, fuzzy msgid "encoding of the subtitles" msgstr "Kódovanie titulkov" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " @@ -2793,12 +2936,12 @@ msgid "" "used." msgstr "" -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 #, fuzzy msgid "use unscaled OSD if possible" msgstr "PoužiÅ¥ OSD bez zmeny mierky, ak je možné" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " @@ -2885,22 +3028,22 @@ msgstr "w32codec: Chyba inicializácie DMO zvuku\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: chyba pri ByteRun1 dekomprimácii\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 nie je podporovaný momentálne\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 nie je podporovaný momentálne\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ nie je podporovaný momentálne\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: Tento anim-typ nie je podporovaný momentálne\n" @@ -2931,6 +3074,7 @@ msgid "" msgstr "" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr "" @@ -2942,6 +3086,7 @@ msgstr[0] "" msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr "" @@ -2955,7 +3100,7 @@ msgid "" "the variations via the standard weighted mean over past samples.\n" msgstr "" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 #, fuzzy msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" @@ -2970,6 +3115,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3063,7 +3211,8 @@ msgstr "" "\n" "* PoužÃva niektoré algoritmy z tvtime a dscaler projektu.\n" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" msgstr "tvtime: Žiadna metóda odprekladania nie je dostupná, konÄÃm.\n" @@ -3107,7 +3256,7 @@ msgid "" "The available selections should be self-explaining." msgstr "" -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3297,7 +3446,7 @@ msgid "" "* mplayer's noise (C) Michael Niedermayer\n" msgstr "" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3309,7 +3458,7 @@ msgstr "" "Parametre\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3317,7 +3466,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 #, fuzzy msgid "" "Unsharp mask / gaussian blur\n" @@ -3374,147 +3523,150 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "výstupný modul xine s použitÃm ascii-art knižnice" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "výstupný video modul použitÃm Color AsCii Art knižnice" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." msgstr "" -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." msgstr "" -#: src/video_out/video_out_directfb.c:1357 +#: src/video_out/video_out_directfb.c:1353 #, fuzzy msgid "enable video colour key" msgstr "Dx3: hodnota kľúÄovej farby prekrývánia" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 msgid "" "Enable using a colour key to tell the graphics card where to overlay the " "video image." msgstr "" -#: src/video_out/video_out_directfb.c:1364 +#: src/video_out/video_out_directfb.c:1360 #, fuzzy msgid "video colour key" msgstr "Dx3: hodnota kľúÄovej farby prekrývánia" -#: src/video_out/video_out_directfb.c:1365 -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" "The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." msgstr "" -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." msgstr "" -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." msgstr "" -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1530 -#, fuzzy +#: src/video_out/video_out_directfb.c:1526 +#, fuzzy, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_vidix: karta podporuje yuy2 formát\n" -#: src/video_out/video_out_directfb.c:1539 -#, fuzzy +#: src/video_out/video_out_directfb.c:1535 +#, fuzzy, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_syncfb: info. (SyncFB modul podporuje YUY2)\n" -#: src/video_out/video_out_directfb.c:1546 -#, fuzzy +#: src/video_out/video_out_directfb.c:1542 +#, fuzzy, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_syncfb: info. (SyncFB modul podporuje YUY2)\n" -#: src/video_out/video_out_directfb.c:1557 +#: src/video_out/video_out_directfb.c:1553 +#, c-format msgid "" "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" msgstr "" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "" -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, fuzzy, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_vidix: použÃvam ovládaÄ: %s od %s\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 #, fuzzy msgid "xine video output plugin using DirectFB." msgstr "výstupný modul xine s použitÃm DirectFB knižnice." -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 #, fuzzy msgid "xine video output plugin using DirectFB under XDirectFB." msgstr "výstupný modul xine s použitÃm DirectFB knižnice." -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "výstupný video modul pre win32 použitÃm directx" @@ -3527,12 +3679,12 @@ msgstr "" "video_out_fb: sú podporované iba pravé farby truecolor/directcolor (%d).\n" " Zkontrolujte 'fbset -i' alebo skúste 'fbset -depth 16'.\n" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 #, fuzzy msgid "framebuffer device name" msgstr "zariadenie framebufferu" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3541,6 +3693,7 @@ msgid "" msgstr "" #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Váš video mód nebol rozpoznaný, prepáÄte.\n" @@ -3562,6 +3715,7 @@ msgstr "" " rozlÃÅ¡enia bufferu snÃmkov môže pomôcÅ¥.\n" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" @@ -3591,11 +3745,11 @@ msgstr "" msgid "xine video output plugin which displays nothing" msgstr "výstupný xine video modul, ktorý niÄ nezobrazuje" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3624,35 +3778,35 @@ msgid "" "Show images reflected in a spinning torus. Way cool =)" msgstr "" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" msgstr "" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 #, fuzzy msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "výstupný xine video modul, ktorý použÃva OpenGL - TNG" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "" @@ -3667,7 +3821,7 @@ msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" msgstr "" #: src/video_out/video_out_pgx64.c:278 -#, fuzzy +#, fuzzy, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "video_out_pgx64: Chyba: nedostatoÄná veľkosÅ¥ video pamäte\n" @@ -3689,39 +3843,40 @@ msgid "" msgstr "" #: src/video_out/video_out_pgx64.c:337 -#, fuzzy +#, fuzzy, c-format msgid "" "video_out_pgx64: Error: video overlay on this screen is already in use\n" msgstr "" "video_out_pgx64: Varovanie: málo video pamäte, multi-buffering zakázaný\n" #: src/video_out/video_out_pgx64.c:352 -#, fuzzy +#, fuzzy, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "video_out_pgx64: Chyba: nedostatoÄná veľkosÅ¥ video pamäte\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" msgstr "" "video_out_pgx64: Varovanie: málo video pamäte, multi-buffering zakázaný\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Chyba: nedostatoÄná veľkosÅ¥ video pamäte\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" msgstr "" "video_out_pgx64: Varovanie: málo video pamäte, dvoj-buffering zakázaný\n" #: src/video_out/video_out_pgx64.c:1394 -#, fuzzy +#, fuzzy, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Chyba: nedostatoÄná veľkosÅ¥ video pamäte\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 #, fuzzy msgid "video overlay colour key" msgstr "Dx3: hodnota kľúÄovej farby prekrývánia" @@ -3753,26 +3908,28 @@ msgid "" "memory." msgstr "" -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." msgstr "" -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" msgstr "sdl musà emulovaÅ¥ 16 bitové povrchy, to vÅ¡etko spomalÃ.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: plnoobrazovkový mód NIE JE podporovaný\n" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" msgstr "výstupný xine video modul použÃvajúci Simple Direct Media Layer" @@ -3781,43 +3938,52 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" msgstr "výstupný video modul použitÃm Libstk Surface Set-top Toolkit" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" msgstr "video_out_syncfb: chyba. (YUY2 nepodporovaný vaÅ¡ou video kartou)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" msgstr "video_out_syncfb: chyba. (YV12 nepodporované vaÅ¡ou graf. kartou)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" msgstr "" "video_out_syncfb: info. (SyncFB modul podporuje YUV 4:2:0 (3 roviny))\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" msgstr "" "video_out_syncfb: info. (SyncFB modul podporuje YUV 4:2:0 (2 roviny))\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" msgstr "video_out_syncfb: info. (SyncFB modul podporuje YUV 4:2:2)\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" msgstr "video_out_syncfb: info. (SyncFB modul podporuje YUY2)\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" msgstr "video_out_syncfb: info. (SyncFB modul podporuje RGB565)\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" "video_out_syncfb: rušà sa. (SyncFB modul nepodporuje YV12, YUY2 ani RGB565)\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " @@ -3827,28 +3993,28 @@ msgstr "" "SyncFB kernel modul vyzerá veľmi zastaraný. ProsÃm pozrite README.syncfb " "kôli ÄalÅ¡Ãm informáciam ako ho aktualizovaÅ¥.)\n" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." msgstr "" -#: src/video_out/video_out_syncfb.c:1058 +#: src/video_out/video_out_syncfb.c:1070 msgid "" "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" msgstr "" "výstupný video modul xine použitÃm SyncFB modulu pre Matrox G200/G400 karty" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 #, fuzzy msgid "SyncFB device name" msgstr "názov OSS audio zariadenia" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3856,84 +4022,86 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "" -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." msgstr "" -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: karta podporuje yuy2 formát\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: karta podporuje yv12 formát\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: Máte zlú verziu knižnice VIDIX\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: Nemôžem nájsÅ¥ funkÄný VIDIX ovládaÄ\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: použÃvam ovládaÄ: %s od %s\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 #, fuzzy msgid "video overlay colour key red component" msgstr "rozsah kľúÄovej farby prekrývánia" -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 #, fuzzy msgid "video overlay colour key green component" msgstr "rozsah kľúÄovej farby prekrývánia" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 #, fuzzy msgid "video overlay colour key blue component" msgstr "Dx3: hodnota kľúÄovej farby prekrývánia" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "výstupný video modul xine použitÃm libvidix pre x11" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" msgstr "výstupný video modul xine použitÃm libvidix pre linux frame buffer" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, fuzzy, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" @@ -3942,8 +4110,8 @@ msgstr "" "video_out_xshm: %s: alokácia obrazu\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xcbshm.c:164 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:159 +#, fuzzy, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" @@ -3952,8 +4120,8 @@ msgstr "" "video_out_xshm: chyba dielanej pamäte (chyba adresy) pri alokácii obrazu\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xcbshm.c:175 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:170 +#, fuzzy, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" @@ -3961,7 +4129,7 @@ msgstr "" "video_out_xshm: x11 chyba pri vytváranà zdielanej pamäte XImage\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3976,23 +4144,23 @@ msgstr "" "je doporuÄená hĺbka 16 bit/bod!\n" "\n" -#: src/video_out/video_out_xcbshm.c:1111 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1114 +#, fuzzy, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: rozÅ¡Ãrenie zdielanej pamäte MIT neprÃtomné na obrazovke.\n" -#: src/video_out/video_out_xcbshm.c:1210 -#, fuzzy +#: src/video_out/video_out_xcbshm.c:1213 +#, fuzzy, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: váš video mód nebol rozoznaný, prepáÄte :-(\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "výstupný video xine modul použitÃm rozÅ¡Ãrenia zdielanej pamäte MIT X" -#: src/video_out/video_out_xcbxv.c:268 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:270 +#, fuzzy, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4000,7 +4168,7 @@ msgstr "" "video_out_xv: XvShmCreateImage vrátila nulovú veľkosÅ¥\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, fuzzy, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" @@ -4009,8 +4177,8 @@ msgstr "" "video_out_xv: chyba zdielanej pamäte v shmget: %s\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xcbxv.c:296 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:298 +#, fuzzy, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4018,13 +4186,24 @@ msgstr "" "video_out_xv: x11 chyba pri vytváranà zdielanej pamäte XImage\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xcbxv.c:1289 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1354 +#, fuzzy, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xv: Xv rozÅ¡Ãrenie neprÃtomné.\n" -#: src/video_out/video_out_xcbxv.c:1331 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, fuzzy, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4035,7 +4214,7 @@ msgstr "" "port.\n" " Vyzerá to tak, že vaÅ¡a grafická karta nepodoruje Xv?!\n" -#: src/video_out/video_out_xcbxv.c:1339 +#: src/video_out/video_out_xcbxv.c:1413 #, fuzzy, c-format msgid "" "video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " @@ -4044,67 +4223,35 @@ msgstr "" "video_out_xv: použÃvam Xv port %ld z adaptéru %s pre hardvérovú konverziu " "farebného priestoru a Å¡kálovania.\n" -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -#, fuzzy -msgid "autopaint colour key" -msgstr "DonútiÅ¥ Xv automaticky kresliÅ¥ svojou kľúÄovou farbou" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -#, fuzzy -msgid "Make Xv autopaint its colour key." -msgstr "DonútiÅ¥ Xv automaticky kresliÅ¥ svojou kľúÄovou farbou" - -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -#, fuzzy -msgid "bilinear scaling mode" -msgstr "bilinearny Å¡kálovacà mód (permedia 2/3)" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -#: src/video_out/video_out_xcbxv.c:1507 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1579 +#, fuzzy, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: tento adaptér podporuje yv12 formát.\n" -#: src/video_out/video_out_xcbxv.c:1512 -#, fuzzy +#: src/video_out/video_out_xcbxv.c:1584 +#, fuzzy, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: tento adaptér podporuje yuy2 formát.\n" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "" - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4142,12 +4289,13 @@ msgid "" "with medium CPU usage." msgstr "" -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "výstupný video xine modul použitÃm MIT X video rozÅ¡Ãrenia" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4155,7 +4303,7 @@ msgstr "" "video_out_xshm: chyba dielanej pamäte pri alokácii obrazu\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -4164,7 +4312,8 @@ msgstr "" "video_out_xshm: %s: alokácia obrazu\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4172,7 +4321,8 @@ msgstr "" "video_out_xshm: chyba dielanej pamäte (chyba adresy) pri alokácii obrazu\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4180,16 +4330,19 @@ msgstr "" "video_out_xshm: x11 chyba pri vytváranà zdielanej pamäte XImage\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" msgstr "" "video_out_xshm: rozÅ¡Ãrenie zdielanej pamäte MIT neprÃtomné na obrazovke.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: váš video mód nebol rozoznaný, prepáÄte :-(\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4197,7 +4350,8 @@ msgstr "" "video_out_xv: XvShmCreateImage zlyhala\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4205,7 +4359,7 @@ msgstr "" "video_out_xv: XvShmCreateImage vrátila nulovú veľkosÅ¥\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -4214,7 +4368,8 @@ msgstr "" "video_out_xv: chyba zdielanej pamäte v shmget: %s\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4222,11 +4377,18 @@ msgstr "" "video_out_xv: x11 chyba pri vytváranà zdielanej pamäte XImage\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: Xv rozÅ¡Ãrenie neprÃtomné.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4236,7 +4398,7 @@ msgstr "" "port.\n" " Vyzerá to tak, že vaÅ¡a grafická karta nepodoruje Xv?!\n" -#: src/video_out/video_out_xv.c:1382 +#: src/video_out/video_out_xv.c:1456 #, c-format msgid "" "video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " @@ -4245,23 +4407,27 @@ msgstr "" "video_out_xv: použÃvam Xv port %ld z adaptéru %s pre hardvérovú konverziu " "farebného priestoru a Å¡kálovania.\n" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: tento adaptér podporuje yv12 formát.\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: tento adaptér podporuje yuy2 formát.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "výstupný video xine modul použitÃm XvMC X video rozÅ¡Ãrenia" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: XvMC rozÅ¡Ãrenie neprÃtomné.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4269,7 +4435,7 @@ msgstr "" "video_out_xvmc: Xv rozÅ¡Ãrenie je prÃtomné, ale nenaÅ¡iel som použiteľný yuv12 " "port.\n" -#: src/video_out/video_out_xvmc.c:1744 +#: src/video_out/video_out_xvmc.c:1749 #, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" @@ -4278,25 +4444,28 @@ msgstr "" "video_out_xvmc: použÃvam Xv port %ld z adaptéru %s\n" " pre hardvérovú konverziu farebného priestoru a Å¡kálovania\n" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " idct a akcelerácia kompenzácie pohybu \n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " iba akcelerácia kompenzácie pohybu\n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " žiadna XvMC podpora \n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " S PrekrývanÃm = %d; UnsignedIntra = %d.\n" -#: src/video_out/video_out_xxmc.c:642 -#, fuzzy +#: src/video_out/video_out_xxmc.c:639 +#, fuzzy, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4304,8 +4473,8 @@ msgstr "" "video_out_xv: XvShmCreateImage zlyhala\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:652 -#, fuzzy +#: src/video_out/video_out_xxmc.c:649 +#, fuzzy, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4313,7 +4482,7 @@ msgstr "" "video_out_xv: XvShmCreateImage vrátila nulovú veľkosÅ¥\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, fuzzy, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4322,8 +4491,8 @@ msgstr "" "video_out_xv: chyba zdielanej pamäte v shmget: %s\n" "video_out_xv: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:692 -#, fuzzy +#: src/video_out/video_out_xxmc.c:689 +#, fuzzy, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4331,13 +4500,13 @@ msgstr "" "video_out_xshm: x11 chyba pri vytváranà zdielanej pamäte XImage\n" "video_out_xshm: => nepoužÃvam rozÅ¡Ãrenie MIT Shared Memory.\n" -#: src/video_out/video_out_xxmc.c:2380 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2432 +#, fuzzy, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xvmc: XvMC rozÅ¡Ãrenie neprÃtomné.\n" -#: src/video_out/video_out_xxmc.c:2417 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2476 +#, fuzzy, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" @@ -4347,7 +4516,7 @@ msgstr "" "port.\n" " Vyzerá to tak, že vaÅ¡a grafická karta nepodoruje Xv?!\n" -#: src/video_out/video_out_xxmc.c:2426 +#: src/video_out/video_out_xxmc.c:2485 #, fuzzy, c-format msgid "" "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " @@ -4356,91 +4525,94 @@ msgstr "" "video_out_xv: použÃvam Xv port %ld z adaptéru %s pre hardvérovú konverziu " "farebného priestoru a Å¡kálovania.\n" -#: src/video_out/video_out_xxmc.c:2602 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2649 +#, fuzzy, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: tento adaptér podporuje yv12 formát.\n" -#: src/video_out/video_out_xxmc.c:2607 -#, fuzzy +#: src/video_out/video_out_xxmc.c:2654 +#, fuzzy, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: tento adaptér podporuje yuy2 formát.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." msgstr "" -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2650 +#: src/video_out/video_out_xxmc.c:2696 msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "" -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 msgid "" "There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "" -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "" -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "" -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" msgstr "" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" msgstr "" "x11osd: XShape rozÅ¡Ãrenie nedostupné. Prekrývanie bez zmien merÃtka " "zakázané.\n" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" msgstr "" "x11osd: chyba vytvorenia okna. Prekrývanie bez zmien merÃtka zakázané.\n" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" msgstr "" "x11osd: chyba vytvorenia mapy bodov. Prekrývanie bez zmien merÃtka " @@ -4451,6 +4623,74 @@ msgstr "" msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "" +#: src/video_out/xv_common.h:30 +#, fuzzy +msgid "autopaint colour key" +msgstr "DonútiÅ¥ Xv automaticky kresliÅ¥ svojou kľúÄovou farbou" + +#: src/video_out/xv_common.h:31 +#, fuzzy +msgid "Make Xv autopaint its colour key." +msgstr "DonútiÅ¥ Xv automaticky kresliÅ¥ svojou kľúÄovou farbou" + +#: src/video_out/xv_common.h:34 +#, fuzzy +msgid "bilinear scaling mode" +msgstr "bilinearny Å¡kálovacà mód (permedia 2/3)" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" + +#: src/video_out/xv_common.h:53 +#, fuzzy +msgid "Xv port number" +msgstr "zlé ÄÃslo záznamu" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +msgid "bicubic filtering" +msgstr "" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "" @@ -4485,34 +4725,38 @@ msgid "" "increased latency and memory consumption." msgstr "" -#: src/xine-engine/audio_out.c:1109 +#: src/xine-engine/audio_out.c:1110 +#, c-format msgid "" "audio_out: delay calculation impossible with an unavailable audio device\n" msgstr "" -#: src/xine-engine/audio_out.c:1248 -#, fuzzy +#: src/xine-engine/audio_out.c:1249 +#, fuzzy, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "zápis na zvukovú kartu zlyhal. Bolo odpojené USB zariadenie ?\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "8 bitov nepodporované ovládaÄom, konvertujem na 16bitov.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "mono nepodporované ovládaÄom, konvertujem na stereo.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "stereo nepodporované ovládaÄom, konvertujem na mono.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 #, fuzzy msgid "method to sync audio and video" msgstr "zvolte metódu synchronizácie audia a videa" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4535,11 +4779,11 @@ msgid "" "form." msgstr "" -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "" -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " @@ -4547,34 +4791,34 @@ msgid "" "automatically when necessary." msgstr "" -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 #, fuzzy msgid "always resample to this rate (0 to disable)" msgstr "ak !=0 vždy prevzorkovaÅ¥ na zvolenú frekv." -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." msgstr "" -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " @@ -4582,27 +4826,28 @@ msgid "" "audio post plugin instead." msgstr "" -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 #, fuzzy msgid "startup audio volume" msgstr "HlasitosÅ¥" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 #, fuzzy msgid "The overall audio volume set at xine startup." msgstr "obnoviÅ¥ úroveň hlasitosti pri Å¡tarte" -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "obnoviÅ¥ úroveň hlasitosti pri Å¡tarte" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 #, fuzzy msgid "If disabled, xine will not modify any mixer settings at startup." msgstr "" "ak toto nie je nastavené, xine sa nedotkne pri Å¡tarte nastavenia mixéru" -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" msgstr "audio_out: prepáÄ, toto sa nemalo staÅ¥, prosÃm reÅ¡tartuj xine.\n" @@ -4611,42 +4856,43 @@ msgstr "audio_out: prepáÄ, toto sa nemalo staÅ¥, prosÃm reÅ¡tartuj xine.\n" msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." msgstr "Aktuálny konfiguraÄný súbor bol modifikovaný novou verziou xine." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" msgstr "configfile: VAROVANIE: záloha konf.súboru do %s zlyhala\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: VAROVANIE: vaÅ¡a konfigurácia nebude uložená\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: VAROVANIE: zápis konfigurácie %s zlyhal\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" msgstr "configfile: VAROVANIE: odstraňujem možno poÅ¡kodený konf. súbor %s\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: VAROVANIE: mali by ste skontrolovaÅ¥ záložný súbor %s\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: položka '%s' nesmie byÅ¥ modifikovaná z MRL\n" #: src/xine-engine/info_helper.c:228 -#, fuzzy +#, fuzzy, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "osd: nemôžem zistiÅ¥ aktuálnu kódovú stánku\n" @@ -4677,7 +4923,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: zlyhalo ÄÃtanie vo vstupnom module\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, fuzzy, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: chyba pri zápise do súboru %lld bytov: %s\n" @@ -4702,12 +4948,12 @@ msgstr "input_rip: skok zlyhal: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %lld bytov zahodených\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: vstupný modul nedefinovaný!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " @@ -4716,7 +4962,7 @@ msgstr "" "input_rip: cieľový adresár nebol Å¡pecifikovaný, prosÃm vyplnte voľbu 'media." "capture.save_dir'\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." @@ -4724,24 +4970,24 @@ msgstr "" "SchopnosÅ¥ ukladania je zakázaná dovtedy kým nenastavÃte media.capture." "save_dir v konfigurácii." -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: ukladanie/keÅ¡ovanie z tohto zdroja nedovolené!\n" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" msgstr "" "xine nemá povolené ukladaÅ¥ z tohto zdroja. (možno autorsky chránenýmateriál?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: nezadané meno súboru!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: nemožno otvoriÅ¥ súbor %s: %s\n" @@ -4780,75 +5026,75 @@ msgstr "" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format msgid "" "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" msgstr "" "load_plugins: ignorujem modul %s, zlá verzia rozhrania %d (má byÅ¥ %d)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " "the default priority.\n" msgstr "" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: nájdený modul: %s\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, fuzzy, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: nájdený modul: %s\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: nájdený modul: %s\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, fuzzy, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "load_plugins: nájdený modul: %s\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: neznámy typ modulu %d v %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, fuzzy, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: neznámy typ modulu %d v %s\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: nemôžem naÅ¡tartovaÅ¥ %s\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4857,7 +5103,7 @@ msgstr "" "load_plugins: nemožno otvoriÅ¥ knižnicu modulov %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -4866,12 +5112,12 @@ msgstr "" "load_plugins: nemožno zÃskaÅ¥ info modulu z %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: preskakujem neÄitateľný adresár modulov: %s\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -4880,27 +5126,28 @@ msgstr "" "load_plugins: nemožno (fáza 2) otvoriÅ¥ knižnicu modulov %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: ÄŒo! %s neobsahuje informácie modulu.\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: neznáma stratégia %d zisÅ¥ovánia obsahu\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: nájdený demultiplexor '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: zlyhalo naÄÃtanie výstupného audio modulu <%s>\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -4908,7 +5155,7 @@ msgstr "" "load_plugins: auto-detekcia audio výstupu nenaÅ¡la žiadne použiteľné audio " "ovládaÄe.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, fuzzy, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4917,50 +5164,52 @@ msgstr "" "load_plugins: nemožno otvoriÅ¥ knižnicu modulov %s:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "font '%s-%d' už naÄÃtaný, divné.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "naÄÃtanie fontu '%s' zlyhalo (%d < %d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "zlá verzia fontu '%s'. oÄakávaná %d nájdená %d.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: nemôžem inicializovaÅ¥ ft2 knižnicu\n" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, fuzzy, c-format msgid "osd: error matching font %s with FontConfig" msgstr "osd: chyba naÄÃtania fontu %s s ft2\n" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, fuzzy, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: chyba naÄÃtania fontu %s s ft2\n" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, fuzzy, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "osd: chyba naÄÃtania fontu %s s ft2\n" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: chyba naÄÃtania fontu %s s ft2\n" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" msgstr "osd: chyba pri nastavenà veľkosti fontu (neÅ¡kálovateľný font?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -4969,75 +5218,80 @@ msgstr "" "osd: neznáma sekvencia zaÄÃnajúca s bytom 0x%02X v kódovanà \"%s\", " "preskakujem\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: nemôžem zistiÅ¥ aktuálnu kódovú stánku\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: nepodporovaná konverzia %s -> %s, nebude vykonaná žiadna\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: font nie je definovaný\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: chyba zavedenia glyph\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: chyba pri vykreslovanà glyph\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: chyba zavedenia glyph %i\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: chyba pri vykreslovanÃ\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 #, fuzzy msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "Paleta (popredie-okraj-pozadie) použitá na titulky" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: nedostupný modul na spracovanie '%s'\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: chyba, neznámy typ bufferu: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." msgstr "" -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "doruÄených %d rámcov, preskoÄených %d rámcov, zahodených %d rámcov\n" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " @@ -5046,37 +5300,38 @@ msgstr "" "video_out: zahadzuje sa obraz s pts %<PRId64>, pretože už je prÃliÅ¡ starý " "(rozdiel: %<PRId64>).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." msgstr "" -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." msgstr "" -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" msgstr "video_out: prepáÄ, toto sa nemalo staÅ¥, reÅ¡tartuj xine.\n" @@ -5120,133 +5375,146 @@ msgid "" "accelerated, this can dramatically reduce CPU usage." msgstr "" -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: chyba pri spracovanà mrl\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: nájdený vstupný modul : %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: vstupný modul nemôže otvoriÅ¥ MRL [%s]\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: nemožno nájsÅ¥ vstupný modul pre MRL [%s]\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: Å¡pecifikovaný demultiplexor %s nenaÅ¡tartoval\n" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: pripojený rip vstupný modul\n" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: chyba otvorenia modulu vstupu rip\n" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: last_probed demultiplexor %s nenaÅ¡tartoval\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "ignorujem video\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "ignorujem audio\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "ignorujem titulky\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "mrl titulkov otvorené '%s'\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: nemožno otvoriÅ¥ mrl titulkov\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: chyba pri spracovanà MRL\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" msgstr "xine: zmeniÅ¥ voľbu '%s' z MRL nie je dovolené\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: nemožno nájsÅ¥ demultiplexor pre >%s<\n" + +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: nemožno nájsÅ¥ demultiplexor pre >%s<\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: nájdený modul demultiplexora %s\n" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, fuzzy, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "xine: demultiplexor nenaÅ¡tartoval\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: demultiplexor nenaÅ¡tartoval\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: demultiplexor nedostupný\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: demultiplexor nenaÅ¡tartoval\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "xine: Å pecifikovaný save_dir \"%s\" môže byÅ¥ bezpeÄnostným rizikom.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "Å pecifikovaný save_dir môže byÅ¥ bezpeÄnostným rizikom." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: locale nepodporované vaÅ¡ou C knižnicou\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 #, fuzzy msgid "media format detection strategy" msgstr "Stratégia detekcie formátu médii" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5264,12 +5532,12 @@ msgid "" "Detect by file name extension only.\n" msgstr "" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 #, fuzzy msgid "directory for saving streams" msgstr "Cesta pre ukladanie prúdov" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5279,11 +5547,11 @@ msgid "" "content in any file." msgstr "" -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" msgstr "dovoliÅ¥ implicitné zmeny v konfigurácii (napr. cez MRL)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5299,83 +5567,83 @@ msgstr "" "MRL alebo playlisty z nedôverihodných vzdialených zdrojov. Ak im dovolÃte " "ľubovoľne meniÅ¥ vaÅ¡u konfiguráciu, môžete skonÄiÅ¥ s úplne rozhodeným xine." -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." msgstr "" -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "správy" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "modul" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "trace" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 #, fuzzy msgid "Unknown host:" msgstr "UdalosÅ¥ neznámeho typu: " -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 #, fuzzy msgid "Unknown device:" msgstr "UdalosÅ¥ neznámeho typu: " -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 #, fuzzy msgid "File not found:" msgstr "Meno tuneru nenájdené\n" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 #, fuzzy msgid "Error loading library:" msgstr "osd: chyba zavedenia glyph\n" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 #, fuzzy msgid "Audio device unavailable" msgstr "názov OSS audio zariadenia" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "" @@ -5391,218 +5659,6 @@ msgid "" msgstr "" #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Testovanie výkonnosti memcpy metód (menej je lepÅ¡ie):\n" - -#~ msgid "demux_asf: Wrong ASX version: %s\n" -#~ msgstr "demux_asf: Zlá verzia ASX: %s\n" - -#, fuzzy -#~ msgid "dvbsub: cannot create timer thread\n" -#~ msgstr "input_rtp: nemožno vytvoriÅ¥ nové vlákno (%s)\n" - -#~ msgid "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) failed.\n" -#~ msgstr "avcodec_find_decoder (CODEC_ID_MPEG1VIDEO) zlyhal.\n" - -#~ msgid "Do we use read-ahead caching?" -#~ msgstr "Použijeme keÅ¡ovanie predÄÃtanÃm?" - -#~ msgid "audio_oss_out: open() %s failed: %s\n" -#~ msgstr "audio_oss_out: open() %s zlyhal: %s\n" - -#, fuzzy -#~ msgid "selection has no DEFAULT entry" -#~ msgstr "výber nemá Äaľšiu položku" - -#~ msgid "device used for 5+ channel output" -#~ msgstr "zariadenie pre 5+ kanálový výstup" - -#~ msgid "used to inform xine about what the sound card can do" -#~ msgstr "použité pre informovanie xine o schopnostiach zvukovej karty" - -#~ msgid "OSS number N to append to audio device name /dev/dsp[N], -1 for none" -#~ msgstr "" -#~ "OSS ÄÃslo N na pridanie k názvu audio zariadenia /dev/dsp[N], -1 pre niÄ" - -#~ msgid "Adjust a/v sync for OSS softsync" -#~ msgstr "Vyladenie a/v synchronizáciu pre OSS softsync" - -#~ msgid "Use this to manually adjust a/v sync if you're using softsync" -#~ msgstr "" -#~ "Použite pre manuálne nastavenie a/v odstupu, ak použÃvate softv. synch." - -#~ msgid "Enable 4.0 channel analog surround output" -#~ msgstr "PovoliÅ¥ 4.0 kanálový analógový výstup" - -#~ msgid "Enable 5.0 channel analog surround output" -#~ msgstr "PovoliÅ¥ 5.0 kanálový analógový výstup" - -#~ msgid "Enable 5.1 channel analog surround output" -#~ msgstr "PovoliÅ¥ 5.1 kanálový analógový výstup" - -#~ msgid "OSS mixer device" -#~ msgstr "zariadenie OSS mixéra" - -#~ msgid "device used for audio output with the 'Sun' audio plugin" -#~ msgstr "zariadenie použité pre audio výstup s 'Sun' audio pluginom" - -#~ msgid "The device file of the dxr3 mpeg decoder card control device." -#~ msgstr "Súbor riadiaceho zariadenia dxr3 karty na dekódovanie MPEG" - -#~ msgid "This is relevant for progressive video only (most PAL films)." -#~ msgstr "Toto je relevantné iba pre progressive video (hlavne PAL filmy)." - -#~ msgid "Enable this for streams with wrong frame durations." -#~ msgstr "Povoľte to pre prúdy so zlou dĺžkou trvania snÃmku." - -#~ msgid "The encoding quality of the libfame mpeg encoder library." -#~ msgstr "Kvalita mpeg kódovania knižnice libfame." - -#~ msgid "Scr priorities greater 5 make the dxr3 xine's master clock." -#~ msgstr "Priorita SCR väÄÅ¡ia než 5 urobà z dxr3 hlavné hodiny xine" - -#~ msgid "If disabled, will assume source has 4:3 aspect ratio." -#~ msgstr "Ak je zakázané, bude predpokladaný pomer 4:3." - -#~ msgid "" -#~ "Content other than mpeg has to pass an additional reencoding stage, " -#~ "because the dxr3 handles mpeg only." -#~ msgstr "" -#~ "Obsah iný ako mpeg musà prejsÅ¥ ÄaľšÃm stupňom kódovania, lebo dxr3 " -#~ "spracúva iba mpeg." - -#~ msgid "A greater value widens the tolerance for the overlay keycolor" -#~ msgstr "VäÄÅ¡ia hodnota rozÅ¡Ãri toleranciu pre kľ. farbu prekryvania" - -#~ msgid "input_cdda: cannot connect to host.\n" -#~ msgstr "input_cdda: nemožno sa pripojiÅ¥ k serveru.\n" - -#~ msgid "input_cdda: unable to resolve '%s'.\n" -#~ msgstr "input_cdda: nemožno zistiÅ¥ adresu '%s'.\n" - -#~ msgid "input_cdda: unable to connect to '%s'.\n" -#~ msgstr "input_cdda: nemožno sa pripojiÅ¥ k '%s'.\n" - -#~ msgid "use cddb feature" -#~ msgstr "použiÅ¥ cddb" - -#~ msgid "selection has no return entry" -#~ msgstr "výber nemá návratovú položku" - -#~ msgid "selection has no default entry" -#~ msgstr "výber nemá predvolenú položku" - -#~ msgid "selection has no previous entry" -#~ msgstr "výber nemá predchádzajúcu položku" - -#~ msgid "" -#~ "Format used in the GUI Title. Similar to the Unix date command. Format " -#~ "specifiers that start with a percent sign. Specifiers are same as the " -#~ "title_format." -#~ msgstr "" -#~ "Formát použitý v titulku GUI. Podobá sa zadaniu unixového dátumu. " -#~ "Å pecifikátory formátu zaÄÃnaju znakom percento. Å pecifikátory sú tie isté " -#~ "ako pri title_format." - -#~ msgid "path to your local vcd device file" -#~ msgstr "cesta k vášmu lokálnemu vcd súboru zariadenia" - -#~ msgid "a/52 volume control" -#~ msgstr "ovládanie hlasitosti a/52" - -#~ msgid "Relative path to libdivxdecore.so to open" -#~ msgstr "RelatÃvna cesta na otvorenie k libdivxdecore.so" - -#~ msgid "the postprocessing level, 0 = none and fast, 6 = all and slow" -#~ msgstr "úroveň postspracovania, 0 = žiadne a rýchle, 6 = vÅ¡etko a pomaly" - -#~ msgid "use divx4 plugin for msmpeg4v3 streams" -#~ msgstr "použiÅ¥ modul divx4 pre msmpeg4v3 prúdy" - -#~ msgid "Divx version to check for (set to 0 (default) if unsure)" -#~ msgstr "" -#~ "Minimálna verzia divx na použitie (nastavte 0 (predvolené) ak ste si " -#~ "neistý)" - -#~ msgid "" -#~ "The bitrate the libavcodec mpeg encoder should use for dxr3's encoding " -#~ "mode" -#~ msgstr "" -#~ "Bit. rýchlosÅ¥, ktorá má byÅ¥ požitá libavcodec mpeg kóderom pre dx3 " -#~ "kódovacà mód" - -#~ msgid "Dxr3enc: Use quantizer instead of bitrate" -#~ msgstr "Dxr3enc: PoužiÅ¥ kvantizér namiesto bit. toku." - -#~ msgid "Dxr3enc: Minimum quantizer" -#~ msgstr "Dxr3enc: Minimálny kvantizer" - -#~ msgid "ffmpeg_video_dec: invalid/unknown frame rate code: %d \n" -#~ msgstr "ffmpeg_video_dec: neplatný/neznámy kód rýchlosti snÃmkov: %d \n" - -#~ msgid "" -#~ "Define this to non-zero, if you want automatically hide subtitle after " -#~ "given time. Used only with subtitle formats, where are no end time." -#~ msgstr "" -#~ "Nastavte toto na nie nulu, ak chcete automaticky skryÅ¥ titulky po urÄitom " -#~ "Äase. Použité iba pre formáty titulkov bez koncového Äasu." - -#~ msgid "Subtitle size (relative window size)" -#~ msgstr "VeľkosÅ¥ titulkov (vzhľadom k velkosti okna)" - -#~ msgid "" -#~ "xvid: there is mismatch between API used by currently installed XviD\n" -#~ "xvid: library (%d.%d) and library used to compile this plugin (%d.%d).\n" -#~ "xvid: Compiling this plugin against current XviD library should help.\n" -#~ msgstr "" -#~ "xvid: je nekompatibilita medzi API použÃvanou nainÅ¡talovanou XviD\n" -#~ "xvid: knižnice (%d.%d) a knižnicou použitou pri kompilácii tohto modulu (%" -#~ "d.%d).\n" -#~ "xvid: Prekompilovanie tohto modulu oproti nainÅ¡talovanej XviD knižnici by " -#~ "malo pomôcÅ¥.\n" - -#~ msgid "gamma correction for OpenGL driver" -#~ msgstr "gamma korekcia pre OpenGL ovládaÄ" - -#~ msgid "syncfb (teletux) device node" -#~ msgstr "uzol zariadenia syncfb (teletux)" - -#~ msgid "video_out_xshm: No thread-safe X libraries available.\n" -#~ msgstr "video_out_xshm:Žiadne bezpeÄné X knižnice vlákien nedostupné.\n" - -#~ msgid "gamma correction for XShm driver" -#~ msgstr "gamma korekcia pre XShm ovládaÄ" - -#~ msgid "Colorkey used for Xv video overlay" -#~ msgstr "KľúÄová farba pre automatické vykreslovanie" - -#~ msgid "double buffer to sync video to the retrace" -#~ msgstr "dvojtý buffer na synchronizáciu videa na retrace" - -#~ msgid "workaround for some (buggy) XVideo drivers" -#~ msgstr "obÃdenie chýb pre niektoré (chybné) XVideo ovládaÄe" - -#~ msgid "Software deinterlace method (Key I toggles deinterlacer on/off)" -#~ msgstr "Metóda softvérového odprekladania (Klávesa I prepne zap./vyp.)" - -#~ msgid "video_out_xv: No thread-safe X libraries available.\n" -#~ msgstr "video_out_xv: Žiadne bezpeÄné X knižnice vlákien nedostupné.\n" - -#~ msgid "" -#~ "'resample' might be better if you use a DXR3/H+ card and (analog) audio " -#~ "is processed by your sound card" -#~ msgstr "" -#~ "'resample' môže byÅ¥ lepÅ¡ie ak použÃvate DXR3/H+ kartu a (analóg.) audio " -#~ "je spracovávané vaÅ¡ou zvukovou kartou" - -#~ msgid "adjust whether resampling is done or not" -#~ msgstr "nataviÅ¥, Äi sa má prevzorkovávaÅ¥ alebo nie" - -#~ msgid "adjust if audio is offsync" -#~ msgstr "upravte, ak je zvuk nezosynchronizovaný" - -#~ msgid "Streams will be saved only into this directory" -#~ msgstr "Prúdy budú uložené do tohto adresára" - -#~ msgid "Memcopy method to use in xine for large data chunks." -#~ msgstr "Metóda memcopy ktorú má xine použiÅ¥ pre veľké bloky dát." @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: libxine1\n" "Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2007-12-24 12:54+0100\n" +"POT-Creation-Date: 2009-01-15 19:04+0000\n" "PO-Revision-Date: 2008-01-05 18:22+0200\n" "Last-Translator: Server Acim <sacim@kde.org.tr>\n" "Language-Team: Türkçe <yerellestirme@kde.org.tr>\n" @@ -55,15 +55,20 @@ msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" msgstr "audio_alsa_out: snd_pcm_open() of %s baÅŸarısız oldu: %s\n" #: src/audio_out/audio_alsa_out.c:380 +#, c-format msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" -msgstr "audio_alsa_out: >>>baÅŸka bir uygulamanın PCM'yi kullanıp kullanmadığını kontrol edin<<<\n" +msgstr "" +"audio_alsa_out: >>>baÅŸka bir uygulamanın PCM'yi kullanıp kullanmadığını " +"kontrol edin<<<\n" #: src/audio_out/audio_alsa_out.c:393 #, c-format msgid "" "audio_alsa_out: broken configuration for this PCM: no configurations " "available: %s\n" -msgstr "audio_alsa_out: bu PCM: için bozuk yapılandırma: hiç bir yapılandırma uygun deÄŸil: %s\n" +msgstr "" +"audio_alsa_out: bu PCM: için bozuk yapılandırma: hiç bir yapılandırma uygun " +"deÄŸil: %s\n" #: src/audio_out/audio_alsa_out.c:1295 msgid "notify changes to the hardware mixer" @@ -74,7 +79,9 @@ msgid "" "When the hardware mixer changes, your application will receive a " "notification so that it can update its graphical representation of the mixer " "settings on the fly." -msgstr "Donanım karıştırıcısı deÄŸiÅŸtiÄŸinde, uygulamanız karıştırıcı ayarlarının görsel yeniden sunumunun güncelleneceÄŸi uyarısını alacaktır." +msgstr "" +"Donanım karıştırıcısı deÄŸiÅŸtiÄŸinde, uygulamanız karıştırıcı ayarlarının " +"görsel yeniden sunumunun güncelleneceÄŸi uyarısını alacaktır." #: src/audio_out/audio_alsa_out.c:1361 #, c-format @@ -91,8 +98,10 @@ msgid "" "You can try enabling it and check, if everything works. If it does, this " "will increase performance." msgstr "" -"EÄŸer ses kartınız ve alsa sürücünüz hafızayla eÅŸlenmiÅŸ IO'ya destek veriyorsa bunu etkinleÅŸtirin./n " -"EÄŸer her ÅŸey çalışıyorsa, onu etkinleÅŸtirmeyi ve kontrol etmeyi deneyebilirsiniz. EÄŸer çalışırsa, bu baÅŸarını arttıracaktır." +"EÄŸer ses kartınız ve alsa sürücünüz hafızayla eÅŸlenmiÅŸ IO'ya destek " +"veriyorsa bunu etkinleÅŸtirin./n EÄŸer her ÅŸey çalışıyorsa, onu " +"etkinleÅŸtirmeyi ve kontrol etmeyi deneyebilirsiniz. EÄŸer çalışırsa, bu " +"baÅŸarını arttıracaktır." #: src/audio_out/audio_alsa_out.c:1378 msgid "device used for mono output" @@ -127,7 +136,8 @@ msgid "" "xine will use this alsa device to output 4 channel (4.0) surround sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -"xine mono 4 kanal (4.0) surround ses çıkışı için bu alsa aygıtını kullanacaktır.\n" +"xine mono 4 kanal (4.0) surround ses çıkışı için bu alsa aygıtını " +"kullanacaktır.\n" "Alsa aygıtları hakkında daha fazla bilgi için alsa belgesine bakınız." #: src/audio_out/audio_alsa_out.c:1406 src/audio_out/audio_alsa_out.c:1416 @@ -140,7 +150,8 @@ msgid "" "sound.\n" "See the alsa documentation for information on alsa devices." msgstr "" -"xine 5 kanal artı LFE (5.1) surround ses çıkışı için bu alsa aygıtını kullanacaktır.\n" +"xine 5 kanal artı LFE (5.1) surround ses çıkışı için bu alsa aygıtını " +"kullanacaktır.\n" "Alsa aygıtları hakkında daha fazla bilgi için alsa belgesine bakınız." #: src/audio_out/audio_alsa_out.c:1417 @@ -149,7 +160,8 @@ msgid "" "This can be used be external surround decoders.\n" "See the alsa documentation for information on alsa devices." msgstr "" -"xine kodlanmamış sayısal surround ses çıkışı için bu alsa aygıtını kullanacaktır.\n" +"xine kodlanmamış sayısal surround ses çıkışı için bu alsa aygıtını " +"kullanacaktır.\n" "Alsa aygıtları hakkında daha fazla bilgi için alsa belgesine bakınız." #: src/audio_out/audio_alsa_out.c:1437 @@ -160,13 +172,16 @@ msgstr "snd_pcm_open() baÅŸarısız oldu:%d:%s\n" #: src/audio_out/audio_alsa_out.c:1439 #, c-format msgid ">>> Check if another program already uses PCM <<<\n" -msgstr ">>>BaÅŸka bir uygulamanın PCM'yi kullanıp kullanmadığını kontrol edin<<<\n" +msgstr "" +">>>BaÅŸka bir uygulamanın PCM'yi kullanıp kullanmadığını kontrol edin<<<\n" -#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926 +#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_jack_out.c:755 +#: src/audio_out/audio_oss_out.c:927 msgid "speaker arrangement" msgstr "hoparlör ayarları" -#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927 +#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_jack_out.c:756 +#: src/audio_out/audio_oss_out.c:928 msgid "" "Select how your speakers are arranged, this determines which speakers xine " "uses for sound output. The individual values are:\n" @@ -197,84 +212,85 @@ msgid "" "xine. You need to connect a digital surround decoder capable of decoding the " "formats you want to play to your sound card's digital output." msgstr "" -"Hoparlörlerin nasıl düzenlendiÄŸine bakınız, bu xine'nin ses çıkışı için hangi hoparlörlerin kullanıldığını belirler. Bireysel deÄŸerler şöyledir:\n" +"Hoparlörlerin nasıl düzenlendiÄŸine bakınız, bu xine'nin ses çıkışı için " +"hangi hoparlörlerin kullanıldığını belirler. Bireysel deÄŸerler şöyledir:\n" "\n" -"Mono 1.0: Sadece tek hoparlörünüz var demektir. " -"Stereo 2.0: Sol ve saÄŸ kanal için iki hoparlörünüz var demektir." +"Mono 1.0: Sadece tek hoparlörünüz var demektir. Stereo 2.0: Sol ve saÄŸ kanal " +"için iki hoparlörünüz var demektir." #: src/audio_out/audio_alsa_out.c:1500 -msgid "audio_alsa_out : supported modes are " +msgid "audio_alsa_out : supported modes are" msgstr "audio_alsa_out : desteklenen kipler" -#: src/audio_out/audio_alsa_out.c:1503 -msgid "8bit " -msgstr "8bit " - -#: src/audio_out/audio_alsa_out.c:1508 -msgid "16bit " -msgstr "16bit " +#: src/audio_out/audio_alsa_out.c:1504 +msgid " 8bit" +msgstr " 8bit" -#: src/audio_out/audio_alsa_out.c:1512 -msgid "24bit " -msgstr "24bit " +#: src/audio_out/audio_alsa_out.c:1509 +msgid " 16bit" +msgstr " 16bit" -#: src/audio_out/audio_alsa_out.c:1516 -msgid "32bit " -msgstr "32bit " +#: src/audio_out/audio_alsa_out.c:1513 +msgid " 24bit" +msgstr " 24bit" -#: src/audio_out/audio_alsa_out.c:1527 -msgid "mono " -msgstr "mono " +#: src/audio_out/audio_alsa_out.c:1517 +msgid " 32bit" +msgstr " 32bit" -#: src/audio_out/audio_alsa_out.c:1531 -msgid "stereo " -msgstr "stereo " +#: src/audio_out/audio_alsa_out.c:1530 src/audio_out/audio_oss_out.c:963 +msgid " mono" +msgstr " mono" -#: src/audio_out/audio_alsa_out.c:1536 -msgid "4-channel " -msgstr "4-kanal " +#: src/audio_out/audio_alsa_out.c:1534 src/audio_out/audio_oss_out.c:969 +msgid " stereo" +msgstr " stereo" -#: src/audio_out/audio_alsa_out.c:1539 -msgid "(4-channel not enabled in xine config) " -msgstr "(4-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ) " +#: src/audio_out/audio_alsa_out.c:1539 src/audio_out/audio_oss_out.c:976 +msgid " 4-channel" +msgstr " 4-kanal" -#: src/audio_out/audio_alsa_out.c:1544 -msgid "4.1-channel " -msgstr "4.1-kanal" +#: src/audio_out/audio_alsa_out.c:1542 src/audio_out/audio_oss_out.c:979 +msgid " (4-channel not enabled in xine config)" +msgstr " (4-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ)" #: src/audio_out/audio_alsa_out.c:1547 -msgid "(4.1-channel not enabled in xine config) " -msgstr "(4.1-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ) " +msgid " 4.1-channel" +msgstr " 4.1-kanal" -#: src/audio_out/audio_alsa_out.c:1552 -msgid "5-channel " -msgstr "5-kanal" +#: src/audio_out/audio_alsa_out.c:1550 +msgid " (4.1-channel not enabled in xine config)" +msgstr " (4.1-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ)" -#: src/audio_out/audio_alsa_out.c:1555 -msgid "(5-channel not enabled in xine config) " -msgstr "(5-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ) " +#: src/audio_out/audio_alsa_out.c:1555 src/audio_out/audio_oss_out.c:986 +msgid " 5-channel" +msgstr " 5-kanal" -#: src/audio_out/audio_alsa_out.c:1560 -msgid "5.1-channel " -msgstr "5.1-kanal " +#: src/audio_out/audio_alsa_out.c:1558 src/audio_out/audio_oss_out.c:989 +msgid " (5-channel not enabled in xine config)" +msgstr " (5-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ)" -#: src/audio_out/audio_alsa_out.c:1563 -msgid "(5.1-channel not enabled in xine config) " -msgstr "(5.1-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ) " +#: src/audio_out/audio_alsa_out.c:1563 src/audio_out/audio_oss_out.c:996 +msgid " 5.1-channel" +msgstr " 5.1-kanal" -#: src/audio_out/audio_alsa_out.c:1586 -msgid "a/52 and DTS pass-through\n" -msgstr "a/52 and DTS pass-through\n" +#: src/audio_out/audio_alsa_out.c:1566 src/audio_out/audio_oss_out.c:999 +msgid " (5.1-channel not enabled in xine config)" +msgstr " (5.1-kanal xine yapılandırmasında etkinleÅŸtirilmemiÅŸ)" #: src/audio_out/audio_alsa_out.c:1589 -msgid "(a/52 and DTS pass-through not enabled in xine config)\n" -msgstr "(a/52 and DTS pass-through xine yapılandırmasında etkinleÅŸtirilmemiÅŸ))\n" +msgid " a/52 and DTS pass-through" +msgstr " a/52 and DTS pass-through" -#: src/audio_out/audio_alsa_out.c:1596 +#: src/audio_out/audio_alsa_out.c:1592 +msgid " (a/52 and DTS pass-through not enabled in xine config)" +msgstr " (a/52 and DTS pass-through xine yapılandırmasında etkinleÅŸtirilmemiÅŸ)" + +#: src/audio_out/audio_alsa_out.c:1602 msgid "alsa mixer device" msgstr "alsa karıştırıcı aygıtı" -#: src/audio_out/audio_alsa_out.c:1597 +#: src/audio_out/audio_alsa_out.c:1603 msgid "" "xine will use this alsa mixer device to change the volume.\n" "See the alsa documentation for information on alsa devices." @@ -282,7 +298,7 @@ msgstr "" "xine ses gürlüğünü deÄŸiÅŸtirmek bu alsa karıştırıcısını kullanacaktır.\n" "Alsa aygıtları hakkında daha fazla bilgi için alsa belgesine bakınız." -#: src/audio_out/audio_alsa_out.c:1671 +#: src/audio_out/audio_alsa_out.c:1677 msgid "xine audio output plugin using alsa-compliant audio devices/drivers" msgstr "xine ses çıkışı eklentisi alsa uyumlu aygıtları/sürücüleri kullanıyor" @@ -294,205 +310,187 @@ msgstr "Kde arts kullanan xine ses çıktısı eklentisi" msgid "xine output plugin for Coreaudio/Mac OS X" msgstr "Coreaudio/Mac OS X için xine ses çıktısı eklentisi" -#: src/audio_out/audio_directx2_out.c:161 +#: src/audio_out/audio_directx2_out.c:166 msgid "Error" msgstr "Hata" -#: src/audio_out/audio_directx2_out.c:168 +#: src/audio_out/audio_directx2_out.c:173 msgid "success" msgstr "baÅŸarılı" -#: src/audio_out/audio_directx2_out.c:170 +#: src/audio_out/audio_directx2_out.c:175 msgid "access denied" msgstr "eriÅŸim engellendi" -#: src/audio_out/audio_directx2_out.c:172 +#: src/audio_out/audio_directx2_out.c:177 msgid "resource is already in use" msgstr "kaynak zaten kullanımda" -#: src/audio_out/audio_directx2_out.c:173 +#: src/audio_out/audio_directx2_out.c:178 msgid "object was already initialized" msgstr "nesne zaten algılanmıştı" -#: src/audio_out/audio_directx2_out.c:174 +#: src/audio_out/audio_directx2_out.c:179 msgid "specified wave format is not supported" msgstr "belirtilen dalga biçimi desteklenmiyor" -#: src/audio_out/audio_directx2_out.c:175 +#: src/audio_out/audio_directx2_out.c:180 msgid "memory buffer has been lost and must be restored" msgstr "hafıza arabelleÄŸi kayıp ve onarılması gerekiyor" -#: src/audio_out/audio_directx2_out.c:176 +#: src/audio_out/audio_directx2_out.c:181 msgid "requested buffer control is not available" msgstr "istenen ara bellek kontrolü uygun deÄŸil" -#: src/audio_out/audio_directx2_out.c:177 +#: src/audio_out/audio_directx2_out.c:182 msgid "undetermined error inside DirectSound subsystem" msgstr "DirectSound alt sistemi içinde belirlenemeyen hata" -#: src/audio_out/audio_directx2_out.c:179 +#: src/audio_out/audio_directx2_out.c:184 msgid "DirectSound hardware device is unavailable" msgstr "DirectSound donanım aygıtı geçerli deÄŸil" -#: src/audio_out/audio_directx2_out.c:181 +#: src/audio_out/audio_directx2_out.c:186 msgid "function is not valid for the current state of the object" msgstr "uygulamanın geçerli durumu için iÅŸlev uygun deÄŸil" -#: src/audio_out/audio_directx2_out.c:182 +#: src/audio_out/audio_directx2_out.c:187 msgid "invalid parameter was passed" msgstr "geçersiz parametre geçirildi" -#: src/audio_out/audio_directx2_out.c:183 +#: src/audio_out/audio_directx2_out.c:188 msgid "object doesn't support aggregation" msgstr "nesne kümeyi desteklemiyor" -#: src/audio_out/audio_directx2_out.c:184 +#: src/audio_out/audio_directx2_out.c:189 msgid "no sound driver available for use" msgstr "kullanılabilecek bir ses sürücüsü yok" -#: src/audio_out/audio_directx2_out.c:185 +#: src/audio_out/audio_directx2_out.c:190 msgid "requested COM interface not available" msgstr "istenilen COM arayüzü kullanılabilir deÄŸil" -#: src/audio_out/audio_directx2_out.c:186 +#: src/audio_out/audio_directx2_out.c:191 msgid "another application has a higher priority level" msgstr "baÅŸka bir uygulamanın daha yüksek öncelik düzeyi var" -#: src/audio_out/audio_directx2_out.c:187 +#: src/audio_out/audio_directx2_out.c:192 msgid "insufficient memory" msgstr "yetersiz bellek" -#: src/audio_out/audio_directx2_out.c:188 +#: src/audio_out/audio_directx2_out.c:193 msgid "low priority level for this function" msgstr "bu fonksiyon için düşük öncelik düzeyi" -#: src/audio_out/audio_directx2_out.c:189 +#: src/audio_out/audio_directx2_out.c:194 msgid "DirectSound wasn't initialized" msgstr "DirectSound baÅŸlatılamadı" -#: src/audio_out/audio_directx2_out.c:190 +#: src/audio_out/audio_directx2_out.c:195 msgid "function is not supported" msgstr "fonksiyon desteklenmiyor" -#: src/audio_out/audio_directx2_out.c:191 +#: src/audio_out/audio_directx2_out.c:196 msgid "unknown error" msgstr "bilinmeyen hata" -#: src/audio_out/audio_directx2_out.c:201 +#: src/audio_out/audio_directx2_out.c:206 #, c-format msgid "Unable to create direct sound object." msgstr "DoÄŸrudan ses nesnesi oluÅŸturulamadı." -#: src/audio_out/audio_directx2_out.c:207 +#: src/audio_out/audio_directx2_out.c:212 #, c-format msgid "Could not set direct sound cooperative level." msgstr "DoÄŸrudan ses iÅŸbirliÄŸi düzeyi ayarlanamadı." -#: src/audio_out/audio_directx2_out.c:281 +#: src/audio_out/audio_directx2_out.c:284 msgid "Unable to create secondary direct sound buffer" msgstr "İkincil doÄŸrudan ses önbelleÄŸi oluÅŸturulamadı" -#: src/audio_out/audio_directx2_out.c:305 -#, c-format -msgid "Unable to create buffer position events." -msgstr "Önbellek konum olayları oluÅŸturulamadı." - -#: src/audio_out/audio_directx2_out.c:313 -msgid "Unable to get notification interface" -msgstr "Bildirim arayüzü alınamadı" - -#: src/audio_out/audio_directx2_out.c:318 -msgid "Unable to set notification positions" -msgstr "Bildirim konumları ayarlanamadı" - -#: src/audio_out/audio_directx2_out.c:338 +#: src/audio_out/audio_directx2_out.c:304 msgid "Couldn't play sound buffer" msgstr "Ses önbelleÄŸi çalınamadı" -#: src/audio_out/audio_directx2_out.c:350 +#: src/audio_out/audio_directx2_out.c:316 msgid "Couldn't stop sound buffer" msgstr "Ses önbelleÄŸi durdurulamadı" -#: src/audio_out/audio_directx2_out.c:363 +#: src/audio_out/audio_directx2_out.c:329 msgid "Can't get buffer position" msgstr "Önbellek konumu alınamadı" -#: src/audio_out/audio_directx2_out.c:377 +#: src/audio_out/audio_directx2_out.c:343 msgid "Can't set buffer position" msgstr "Önbellek konumu ayarlanamadı" -#: src/audio_out/audio_directx2_out.c:409 +#: src/audio_out/audio_directx2_out.c:374 msgid "Can't set sound volume" msgstr "Ses düzeyi ayarlanamadı" -#: src/audio_out/audio_directx2_out.c:427 +#: src/audio_out/audio_directx2_out.c:392 #, c-format msgid ": buffer lost, tryig to restore\n" msgstr ": önbellek kayıp, geri yüklenmeye çalışılıyor\n" -#: src/audio_out/audio_directx2_out.c:431 +#: src/audio_out/audio_directx2_out.c:396 msgid "Couldn't lock direct sound buffer" msgstr "DoÄŸrudan ses önbelleÄŸinin kilitlenemedi" -#: src/audio_out/audio_directx2_out.c:442 +#: src/audio_out/audio_directx2_out.c:409 msgid "Couldn't unlock direct sound buffer" msgstr "DoÄŸrudan ses önbelleÄŸinin kilidi açılamadı" -#: src/audio_out/audio_directx2_out.c:539 +#: src/audio_out/audio_directx2_out.c:500 #, c-format msgid "Unable to create primary direct sound buffer." msgstr "Birincil doÄŸrudan ses önbelleÄŸi oluÅŸturulamadı." -#: src/audio_out/audio_directx2_out.c:632 -#, c-format -msgid ": play cursor overran, flushing buffers\n" +#: src/audio_out/audio_directx2_out.c:596 +#, fuzzy, c-format +msgid ": play cursor overran (data %u, min %u), flushing buffers\n" msgstr ": ara belleÄŸi dolduran imleç geçiÅŸini çal, \n" -#: src/audio_out/audio_directx2_out.c:650 -#, c-format -msgid ": delayed by %ld msec\n" -msgstr ": %ld tarafından milisaniye geciktirildi\n" - -#: src/audio_out/audio_directx2_out.c:754 +#: src/audio_out/audio_directx2_out.c:699 #, c-format msgid ": can't create pthread condition: %s\n" msgstr ": iÅŸ parçacığı durumu yaratamaz: %s\n" -#: src/audio_out/audio_directx2_out.c:758 +#: src/audio_out/audio_directx2_out.c:703 #, c-format msgid ": can't create pthread mutex: %s\n" msgstr ": mutex iÅŸ parçacığı oluÅŸturamaz: %s\n" -#: src/audio_out/audio_directx2_out.c:765 +#: src/audio_out/audio_directx2_out.c:710 #, c-format msgid ": can't create buffer pthread: %s\n" msgstr ": tampon bellek iÅŸ parçacığı oluÅŸturamaz: %s\n" -#: src/audio_out/audio_directx2_out.c:872 +#: src/audio_out/audio_directx2_out.c:825 #, c-format msgid ": can't destroy buffer pthread: %s\n" msgstr ": tampon bellek iÅŸ parçacığını yok edemez: %s\n" -#: src/audio_out/audio_directx2_out.c:879 +#: src/audio_out/audio_directx2_out.c:832 #, c-format msgid ": can't destroy pthread condition: %s\n" msgstr ": iÅŸ parçacığı ÅŸartını yok edemez : %s\n" -#: src/audio_out/audio_directx2_out.c:882 +#: src/audio_out/audio_directx2_out.c:835 #, c-format msgid ": can't destroy pthread mutex: %s\n" msgstr ": mutex iÅŸ parçacığını yok edemez : %s\n" -#: src/audio_out/audio_directx2_out.c:942 +#: src/audio_out/audio_directx2_out.c:890 #, c-format msgid ": unknown control command %d\n" msgstr ": bilinmeyen denetim komutu %d\n" -#: src/audio_out/audio_directx2_out.c:998 +#: src/audio_out/audio_directx2_out.c:946 msgid "second xine audio output plugin using directx" msgstr "directx kullanan ikinci xine ses çıktısı eklentisi" -#: src/audio_out/audio_directx_out.c:827 +#: src/audio_out/audio_directx_out.c:831 msgid "xine audio output plugin for win32 using directx" msgstr "win32 için directx kullanan xine ses çıktısı eklentisi" @@ -502,6 +500,7 @@ msgid "audio_esd_out: connecting to ESD server %s: %s\n" msgstr "audio_esd_out: ESD sunucusuna baÄŸlanılıyor %s: %s\n" #: src/audio_out/audio_esd_out.c:497 +#, c-format msgid "audio_esd_out: connecting to esd server...\n" msgstr "audio_esd_out: esd sunucusuna baÄŸlanılıyor...\n" @@ -514,13 +513,14 @@ msgstr "audio_esd_out: %s ESD sunucusuna baÄŸlanılamadı: %s\n" msgid "esd audio output latency (adjust a/v sync)" msgstr "esd ses çıkışı gecikme süresi (a/v senkronunu ayarla)" -#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:864 +#: src/audio_out/audio_esd_out.c:540 src/audio_out/audio_oss_out.c:869 msgid "" "If you experience audio being not in sync with the video, you can enter a " "fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -"EÄŸer, sesin görüntü ile senkronize olmadığını fark ederseniz, eÅŸitlemek için buraya sabitlenmiÅŸ göreli konum girebilirsiniz.\n" +"EÄŸer, sesin görüntü ile senkronize olmadığını fark ederseniz, eÅŸitlemek için " +"buraya sabitlenmiÅŸ göreli konum girebilirsiniz.\n" "DeÄŸerin birimi saniyenin 90000de bir olan bir PTS tıklamasıdır." #: src/audio_out/audio_esd_out.c:572 @@ -542,14 +542,26 @@ msgid "" "The unit of this value is one PTS tick, which is the 90000th part of a " "second." msgstr "" -"Ses ve görüntü arasındaki en fazla konumu belirlerseniz, xine ikisi arasındaki senkronu yeniden denemeden önce bunu tolere edecektir.\n" +"Ses ve görüntü arasındaki en fazla konumu belirlerseniz, xine ikisi " +"arasındaki senkronu yeniden denemeden önce bunu tolere edecektir.\n" "Bu ünitenin deÄŸeri, saniyenin 90000'de biri deÄŸerindeki bir PTS tıklamasıdır." #: src/audio_out/audio_irixal_out.c:415 msgid "xine audio output plugin using IRIX libaudio" msgstr "IRIX libaudio kullanan xine ses çıktısı eklentisi" -#: src/audio_out/audio_jack_out.c:406 +#: src/audio_out/audio_jack_out.c:743 +#, fuzzy +msgid "JACK audio device name" +msgstr "OSS ses aygıtı adı" + +#: src/audio_out/audio_jack_out.c:744 +msgid "" +"Specifies the jack audio device name, leave blank for the default physical " +"output port." +msgstr "" + +#: src/audio_out/audio_jack_out.c:921 msgid "xine output plugin for JACK Audio Connection Kit" msgstr "JACK Audio Connection Kit kullanan xine ses çıktısı eklentisi" @@ -564,32 +576,37 @@ msgstr "audio_oss_out: Ses aygıtı açılıyor %s: %s\n" #: src/audio_out/audio_oss_out.c:218 #, c-format -msgid "audio_oss_out: warning: sampling rate %d Hz not supported, trying 44100 Hz\n" -msgstr "audio_oss_out: uyarı: örnekleme oranı %d Hz desteklenmiyor, 44100 Hz deneniyor\n" +msgid "" +"audio_oss_out: warning: sampling rate %d Hz not supported, trying 44100 Hz\n" +msgstr "" +"audio_oss_out: uyarı: örnekleme oranı %d Hz desteklenmiyor, 44100 Hz " +"deneniyor\n" #: src/audio_out/audio_oss_out.c:230 #, c-format msgid "audio_oss_out: audio rate : %d requested, %d provided by device\n" msgstr "audio_oss_out: ses oranı : %d istendi, %d aygıt tarafından saÄŸlandı\n" -#: src/audio_out/audio_oss_out.c:743 +#: src/audio_out/audio_oss_out.c:745 msgid "OSS audio device name" msgstr "OSS ses aygıtı adı" -#: src/audio_out/audio_oss_out.c:744 +#: src/audio_out/audio_oss_out.c:746 msgid "" "Specifies the base part of the audio device name, to which the OSS device " "number is appended to get the full device name.\n" "Select \"auto\" if you want xine to auto detect the corret setting." msgstr "" -"hangi OSS aygıtı numarasının tam aygıt ismini almayı üstlendiÄŸini belirlemek için ses aygıtı adının temel kısmını belirler .\n" -"EÄŸer xine'nin doÄŸru ayarı otomatik olarak algılamasını isterseniz \"auto\"yu seçiniz." +"hangi OSS aygıtı numarasının tam aygıt ismini almayı üstlendiÄŸini belirlemek " +"için ses aygıtı adının temel kısmını belirler .\n" +"EÄŸer xine'nin doÄŸru ayarı otomatik olarak algılamasını isterseniz \"auto\"yu " +"seçiniz." -#: src/audio_out/audio_oss_out.c:751 +#: src/audio_out/audio_oss_out.c:753 msgid "OSS audio device number, -1 for none" msgstr "OSS ses aygıtı numarası, hiçbiri için -1" -#: src/audio_out/audio_oss_out.c:752 +#: src/audio_out/audio_oss_out.c:754 msgid "" "The full audio device name is created by concatenating the OSS device name " "and the audio device number.\n" @@ -598,24 +615,29 @@ msgid "" "The range of this value is -1 or 0-15. This setting is ignored, when the OSS " "audio device name is set to \"auto\"." msgstr "" -"Ses aygıtının tam ismi OSS aygıt adına ve ses aygıtı numarasından oluÅŸturulmuÅŸtur.\n" -"EÄŸer numaraya ihtiyacınız yoksa ve varsayılan sistem ses aygıtından memnunsanız bunu -1'e ayarlayın.\n" -"Bu deÄŸerin geniÅŸliÄŸi -1 veya 0-15 arasındadır. Bu ayar, OSS ses aygıt adı \"otomatik\" olarak saptanmış ise göz ardı edilir." +"Ses aygıtının tam ismi OSS aygıt adına ve ses aygıtı numarasından " +"oluÅŸturulmuÅŸtur.\n" +"EÄŸer numaraya ihtiyacınız yoksa ve varsayılan sistem ses aygıtından " +"memnunsanız bunu -1'e ayarlayın.\n" +"Bu deÄŸerin geniÅŸliÄŸi -1 veya 0-15 arasındadır. Bu ayar, OSS ses aygıt adı " +"\"otomatik\" olarak saptanmış ise göz ardı edilir." -#: src/audio_out/audio_oss_out.c:761 +#: src/audio_out/audio_oss_out.c:763 +#, c-format msgid "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" msgstr "audio_oss_out: audio.device.oss_device_name = auto, probing devs\n" -#: src/audio_out/audio_oss_out.c:764 +#: src/audio_out/audio_oss_out.c:766 +#, c-format msgid "audio_oss_out: Auto probe for audio device failed\n" msgstr "audio_oss_out: Ses aygıtı için otomatik hazırlama baÅŸarısız oldu\n" -#: src/audio_out/audio_oss_out.c:780 +#: src/audio_out/audio_oss_out.c:782 #, c-format msgid "audio_oss_out: using device >%s<\n" msgstr "audio_oss_out: kullanılan aygıt >%s<\n" -#: src/audio_out/audio_oss_out.c:786 src/audio_out/audio_oss_out.c:901 +#: src/audio_out/audio_oss_out.c:788 src/audio_out/audio_oss_out.c:902 #, c-format msgid "" "audio_oss_out: opening audio device %s failed:\n" @@ -624,11 +646,11 @@ msgstr "" "audio_oss_out: %s ses aygıtının açılamadı:\n" "%s\n" -#: src/audio_out/audio_oss_out.c:807 +#: src/audio_out/audio_oss_out.c:809 msgid "a/v sync method to use by OSS" msgstr "OSS tarafından kullanılması için a/v senkron yöntemi" -#: src/audio_out/audio_oss_out.c:808 +#: src/audio_out/audio_oss_out.c:810 msgid "" "xine can use different methods to keep audio and video synchronized. Which " "setting works best depends on the OSS driver and sound hardware you are " @@ -657,7 +679,10 @@ msgid "" "for a/v sync; try this if your system does not support any of the realtime " "ioctls and you experience sync errors after long playback" msgstr "" -"xine ses ve görüntünün senkronize olması için farklı yöntemler kullanabilir. Kullandığınız ses donanımından hangi ayarın en iyi çalışacağı OSS sürücünüze ve kullandığınız ses donanımına baÄŸlıdır. EÄŸer senkron sorunları yaÅŸarsanız deÄŸiÅŸik yöntemler deneyin. \n" +"xine ses ve görüntünün senkronize olması için farklı yöntemler kullanabilir. " +"Kullandığınız ses donanımından hangi ayarın en iyi çalışacağı OSS sürücünüze " +"ve kullandığınız ses donanımına baÄŸlıdır. EÄŸer senkron sorunları yaÅŸarsanız " +"deÄŸiÅŸik yöntemler deneyin. \n" "\n" "DeÄŸerlerin anlamları aÅŸağıdadır:\n" "\n" @@ -665,18 +690,28 @@ msgstr "" "xine en ayarı bulmak için otomatik seçeneÄŸini atar\n" "\n" "getodelay\n" -"Sürücü gerçek zamanlı çalmayı desteklemese bile, SNDCTL_DSP_GETODELAY ioctl parametresini gerçek a/v senkronunu baÅŸarmak için kullanır.\n" +"Sürücü gerçek zamanlı çalmayı desteklemese bile, SNDCTL_DSP_GETODELAY ioctl " +"parametresini gerçek a/v senkronunu baÅŸarmak için kullanır.\n" "\n" "getoptr\n" -"Sürücü tercih edilen SNDCTL_DSP_GETODELAY ioctl parametresini kullansa bile, SNDCTL_DSP_GETOPTR ioctl parametresini gerçek a/v senkronunu baÅŸarmak için kullanır.\n" +"Sürücü tercih edilen SNDCTL_DSP_GETODELAY ioctl parametresini kullansa bile, " +"SNDCTL_DSP_GETOPTR ioctl parametresini gerçek a/v senkronunu baÅŸarmak için " +"kullanır.\n" "\n" "softsync\n" -"sistem saati ile birlikte yazılım senkronizasyonunu kullanır;eÄŸer sistem saati kızı ses kartınızın çalma hızı ile uyuÅŸmaz ise ses ve görüntü, senkronize çalışmaz\n" +"sistem saati ile birlikte yazılım senkronizasyonunu kullanır;eÄŸer sistem " +"saati kızı ses kartınızın çalma hızı ile uyuÅŸmaz ise ses ve görüntü, " +"senkronize çalışmaz\n" "\n" "probebuffer\n" -"ses kartı tampon boyutunu sıfırlamak için tüm a/v senkronizasyonundaki gecikme süresini hesaplamayı araÅŸtırır; sisteminizin gerçek zamanlı ioctl (GiriÅŸ/Çıkış Kontrolu) uygulamalarından birini destekleyip desteklemediÄŸini denetlemek için veya uzun süreli çalmalardan sonra senkron hatası alırsanız bunu deneyin" +"ses kartı tampon boyutunu sıfırlamak için tüm a/v senkronizasyonundaki " +"gecikme süresini hesaplamayı araÅŸtırır; sisteminizin gerçek zamanlı ioctl " +"(GiriÅŸ/Çıkış Kontrolu) uygulamalarından birini destekleyip desteklemediÄŸini " +"denetlemek için veya uzun süreli çalmalardan sonra senkron hatası alırsanız " +"bunu deneyin" -#: src/audio_out/audio_oss_out.c:856 +#: src/audio_out/audio_oss_out.c:861 +#, c-format msgid "" "audio_oss_out: Audio driver realtime sync disabled...\n" "audio_oss_out: ...will use system real-time clock for soft-sync instead\n" @@ -686,32 +721,39 @@ msgstr "" "audio_oss_out: ...soft-sync yerine sistem gerçek zamanlı saatini kullanacak\n" "audio_oss_out: ...burada ses/görüntü senkronizasyon sorunları olabilir\n" -#: src/audio_out/audio_oss_out.c:863 +#: src/audio_out/audio_oss_out.c:868 msgid "OSS audio output latency (adjust a/v sync)" msgstr "OSS ses çıkışı gecikme süresi (a/v/ senkronunu ayarlayın)" -#: src/audio_out/audio_oss_out.c:877 -msgid "" -"audio_oss_out: Audio driver realtime sync disabled...\n" -"audio_oss_out: ...probing output buffer size: " -msgstr "" -"audio_oss_out: Ses sürücüsü gerçek zamanlı senkron etkisizleÅŸtirildi...\n" -"audio_oss_out: ...çıkış tampon boyutunu araÅŸtırıyor: " - #: src/audio_out/audio_oss_out.c:894 #, c-format msgid "" -"%d bytes\n" +"audio_oss_out: Audio driver realtime sync disabled...\n" +"audio_oss_out: ...probing output buffer size: %d bytes\n" "audio_oss_out: ...there may be audio/video synchronization issues\n" msgstr "" -"%d bytes\n" +"audio_oss_out: Ses sürücüsü gerçek zamanlı senkron etkisizleÅŸtirildi...\n" +"audio_oss_out: ...çıkış tampon boyutunu araÅŸtırıyor: %d bytes\n" "audio_oss_out: ...burada ses/görüntü senkronizasyon sorunları olabilir\n" -#: src/audio_out/audio_oss_out.c:1023 +#: src/audio_out/audio_oss_out.c:958 +msgid "audio_oss_out: supported modes are" +msgstr "audio_oss_out: desteklenen kipler" + +#: src/audio_out/audio_oss_out.c:1009 +msgid " a/52 pass-through" +msgstr " a/52 pass-through" + +#: src/audio_out/audio_oss_out.c:1012 +#, fuzzy +msgid " (a/52 pass-through not enabled in xine config)" +msgstr " (a/52 pass-through xine yapılandırmasında etkinleÅŸtirilmemiÅŸ)" + +#: src/audio_out/audio_oss_out.c:1027 msgid "OSS audio mixer number, -1 for none" msgstr "OSS ses karıştırıcısı numarası, hiçbiri için -1" -#: src/audio_out/audio_oss_out.c:1024 +#: src/audio_out/audio_oss_out.c:1028 msgid "" "The full mixer device name is created by taking the OSS device name, " "replacing \"dsp\" with \"mixer\" and adding the mixer number.\n" @@ -720,31 +762,34 @@ msgid "" "The range of this value is -1 or 0-15. This setting is ignored, when the OSS " "audio device name is set to \"auto\"." msgstr "" -"Tam karıştırıcı aygıt adı OSS aygıtı adından alınarak oluÅŸturuldu, " -"\"dsp\" ile \"karıştırıcı\" yer deÄŸiÅŸtiriyor ve karıştırıcı numarası ekliyor.\n" -"EÄŸer sisteminizin varsayılan karıştırıcı aygıtınızdan memnun olduÄŸunuz için bir numaraya ihtiyacınız yoksa, bunu -1'e ayarlayın.\n" -"Bu deÄŸerin oranı -1 veya 0-15 arasındadır. Bu ayar OSS ses aygıt numarası \"auto\" olarak ayarlandığında göz ardı edilir." +"Tam karıştırıcı aygıt adı OSS aygıtı adından alınarak oluÅŸturuldu, \"dsp\" " +"ile \"karıştırıcı\" yer deÄŸiÅŸtiriyor ve karıştırıcı numarası ekliyor.\n" +"EÄŸer sisteminizin varsayılan karıştırıcı aygıtınızdan memnun olduÄŸunuz için " +"bir numaraya ihtiyacınız yoksa, bunu -1'e ayarlayın.\n" +"Bu deÄŸerin oranı -1 veya 0-15 arasındadır. Bu ayar OSS ses aygıt numarası " +"\"auto\" olarak ayarlandığında göz ardı edilir." -#: src/audio_out/audio_oss_out.c:1081 +#: src/audio_out/audio_oss_out.c:1082 #, c-format msgid "audio_oss_out: open() mixer %s failed: %s\n" msgstr "audio_oss_out: karıştırıcı() açılması %s baÅŸarılamadı: %s\n" -#: src/audio_out/audio_oss_out.c:1154 +#: src/audio_out/audio_oss_out.c:1155 msgid "xine audio output plugin using oss-compliant audio devices/drivers" msgstr "xine ses çıkışı eklentisi oss uyumlu aygıtları/sürücüleri kullanıyor" -#: src/audio_out/audio_pulse_out.c:548 +#: src/audio_out/audio_pulse_out.c:763 msgid "device used for pulseaudio" msgstr "pulseaudio için kullanılan aygıt" -#: src/audio_out/audio_pulse_out.c:549 +#: src/audio_out/audio_pulse_out.c:764 msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "sesatımı kısma aygıtını ayarlamak için sunucuyu [:kısma] kullanın." -#: src/audio_out/audio_pulse_out.c:582 +#: src/audio_out/audio_pulse_out.c:845 msgid "xine audio output plugin using pulseaudio sound server" -msgstr "xine ses çıkışı eklentisi sesatımı uyumlu aygıtları/sürücüleri kullanıyor" +msgstr "" +"xine ses çıkışı eklentisi sesatımı uyumlu aygıtları/sürücüleri kullanıyor" #: src/audio_out/audio_sun_out.c:457 src/audio_out/audio_sun_out.c:950 #, c-format @@ -763,41 +808,220 @@ msgid "" "careful that the value you enter really is a proper Sun audio device." msgstr "" "Sun ses aygıtı kullanımı için dosya adını belirler.\n" -"Bu ayar güvenlik açısından tehlikelidir, çünkü farklı bir dosya olarak deÄŸiÅŸtirilirse, xine bu dosyayı keyfi bir içerikle doldurabilir. Bu nedenle, girdiÄŸiniz deÄŸerin Sun ses aygıtına uyması konusunda dikkatli olmalısınız." +"Bu ayar güvenlik açısından tehlikelidir, çünkü farklı bir dosya olarak " +"deÄŸiÅŸtirilirse, xine bu dosyayı keyfi bir içerikle doldurabilir. Bu nedenle, " +"girdiÄŸiniz deÄŸerin Sun ses aygıtına uyması konusunda dikkatli olmalısınız." #: src/audio_out/audio_sun_out.c:968 #, c-format msgid "audio_sun_out: audio ioctl on device %s failed: %s\n" -msgstr "audio_sun_out: %s aygıtının ses ioctl (GiriÅŸ/Çıkış Denetimi) baÅŸarılamadı: %s\n" +msgstr "" +"audio_sun_out: %s aygıtının ses ioctl (GiriÅŸ/Çıkış Denetimi) baÅŸarılamadı: %" +"s\n" #: src/audio_out/audio_sun_out.c:1022 msgid "xine audio output plugin using sun-compliant audio devices/drivers" msgstr "xine ses çıkışı eklentisi sun uyumlu aygıtları/sürücüleri kullanıyor" -#: src/demuxers/demux_asf.c:426 +#: src/combined/ffmpeg/ff_audio_decoder.c:120 +#, c-format +msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"ffmpeg_audio_dec: tampon belleÄŸi %d seviyesine taÅŸmayı önlemek için " +"arttırıyor.\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:164 +#, c-format +msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "ffmpeg_audio_dec: 0x%X türü dışında ffmpeg kod çözücü bulamıyor\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:301 +#, c-format +msgid "ffmpeg_audio_dec: trying to open null codec\n" +msgstr "ffmpeg_audio_dec: boÅŸ kodu açmaya çalışıyor\n" + +#: src/combined/ffmpeg/ff_audio_decoder.c:310 +#, c-format +msgid "ffmpeg_audio_dec: couldn't open decoder\n" +msgstr "ffmpeg_audio_dec: kod çözücüyü açamıyor\n" + +#: src/combined/ffmpeg/ff_dvaudio_decoder.c:285 +#, c-format +msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"dvaudio: taÅŸmayı önlemek için tampon belleÄŸi %d seviyesine çıkartıyor.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:174 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: desteklenmeyen çerçeve kipi, DR1 devre dışı.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:192 +#, c-format +msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" +msgstr "ffmpeg_video_dec: desteklenmeyen çerçeve boyutları, DR1 devre dışı.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:376 +#, c-format +msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" +msgstr "ffmpeg_video_dec: 0x%Xtürü için ffmpeg kod çözücüyü bulamıyor\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:408 +#, c-format +msgid "ffmpeg_video_dec: couldn't open decoder\n" +msgstr "ffmpeg_video_dec: kod çözücüyü açamıyor\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:451 +#, c-format +msgid "ffmpeg_video_dec: direct rendering enabled\n" +msgstr "ffmpeg_video_dec: doÄŸrudan iÅŸleme etkin\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:900 +#, c-format +msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" +msgstr "" +"ffmpeg_video_dec: taÅŸmayı önlemek için tampon belleÄŸi %d seviyesine " +"yükseltiyor.\n" + +#: src/combined/ffmpeg/ff_video_decoder.c:1773 +msgid "MPEG-4 postprocessing quality" +msgstr "MPEG 4 iÅŸleme kalitesi" + +#: src/combined/ffmpeg/ff_video_decoder.c:1774 +msgid "" +"You can adjust the amount of post processing applied to MPEG-4 video.\n" +"Higher values result in better quality, but need more CPU. Lower values may " +"result in image defects like block artifacts. For high quality content, too " +"heavy post processing can actually make the image worse by blurring it too " +"much." +msgstr "" +"MPEG 4 görüntüye uygulanan iÅŸlemenin oranını ayarlayabilirsiniz.\n" +"Yüksek deÄŸerler daha iyi sonuç verir, fakat daha çok iÅŸlemci gücü " +"gerektirir. Düşük deÄŸerler görüntü bozulmalarınına sebebiyet verir. Yüksek " +"kalite içeriÄŸi için, ağır iÅŸleme iÅŸlemleri doÄŸal olarak onun netliÄŸinin " +"bozulmasına neden olabilir ve görüntünün kötüleÅŸmesi sonucunu doÄŸurabilir." + +#: src/combined/ffmpeg/ff_video_decoder.c:1782 +msgid "FFmpeg video decoding thread count" +msgstr "FFmpeg görüntü kodlaması iÅŸ sayısı" + +#: src/combined/ffmpeg/ff_video_decoder.c:1783 +#, fuzzy +msgid "" +"You can adjust the number of video decoding threads which FFmpeg may use.\n" +"Higher values should speed up decoding but it depends on the codec used " +"whether parallel decoding is supported. A rule of thumb is to have one " +"decoding thread per logical CPU (typically 1 to 4).\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" +"FFmpeg'nin kullanabileceÄŸi görüntü kodlama iÅŸlerinin sayılarını " +"ayarlayabilirsiniz.\n" +"Yüksek deÄŸerler kodlama iÅŸleminin hızını yükseltir fakat bu kodlamada " +"paralel kodlamanın yapılıp yapılmadığıyla da baÄŸlantılıdır. Mimari kuralına " +"göre mantıksal iÅŸlemci başına bir adet kodlama iÅŸlemi yapılmalıdır (tipik " +"olarak 1den14'e kadar). Bu deÄŸiÅŸim sonraki yayın akışında etkili olacaktır." + +#: src/combined/ffmpeg/ff_video_decoder.c:1792 +msgid "Skip loop filter" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1793 +msgid "" +"You can control for which frames the loop filter shall be skipped after " +"decoding.\n" +"Skipping the loop filter will speedup decoding but may lead to artefacts. " +"The number of frames for which it is skipped increases from 'none' to 'all'. " +"The default value leaves the decision up to the implementation.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1802 +msgid "Choose speed over specification compliance" +msgstr "" + +#: src/combined/ffmpeg/ff_video_decoder.c:1803 +msgid "" +"You may want to allow speed cheats which violate codec specification.\n" +"Cheating may speed up decoding but can also lead to decoding artefacts.\n" +"A change of this setting will take effect with playing the next stream." +msgstr "" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:167 +msgid "libavcodec mpeg output bitrate (kbit/s)" +msgstr "libavcodec mpeg çıkış bit oranı (kbit/s)" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:168 +msgid "" +"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " +"Higher values will increase quality and CPU usage.\n" +"This setting is only considered, when constant quality mode is disabled." +msgstr "" +"libavcodec mpeg çıkış bit oranı, DXR3 kodlama kipini kullanmalıdır. Yüksek " +"deÄŸerler kaliteyi ve iÅŸlemci kullanımını yükseltir.\n" +"Bu ayar sadece sabit kalite kipi devre dışı ise etkilidir." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:175 +msgid "constant quality mode" +msgstr "sabit kalite kipi" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:176 +msgid "" +"When enabled, libavcodec will use a constant quality mode by dynamically " +"compressing the images based on their complexity. When disabled, libavcodec " +"will use constant bitrate mode." +msgstr "" +"EtkinleÅŸtirildiÄŸinde libavcodec, görüntünün karmaşık yapısına göre dinamik " +"olarak sıkıştırılmış sabit kalite kipini kullanacaktır " + +#: src/combined/ffmpeg/ffmpeg_encoder.c:183 +msgid "minimum compression" +msgstr "en düşük sıkıştırma" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:184 +msgid "The minimum compression to apply to an image in constant quality mode." +msgstr "Sabit kalite kipindeki bir resme uygulanacak ola en düşük sıkıştırma." + +#: src/combined/ffmpeg/ffmpeg_encoder.c:189 +msgid "maximum quantizer" +msgstr "en yüksek nicelikler" + +#: src/combined/ffmpeg/ffmpeg_encoder.c:190 +msgid "The maximum compression to apply to an image in constant quality mode." +msgstr "Sabit kalite kipindeki bir resme uygulanacak ola en yüksek sıkıştırma." + +#: src/demuxers/demux_asf.c:450 +#, fuzzy, c-format +msgid "demux_asf: warning: A stream appears to be missing.\n" +msgstr "demux_asf: uyarı: Akış kimliÄŸi=%d ÅŸifrelidir.\n" + +#: src/demuxers/demux_asf.c:452 +msgid "Media stream missing?" +msgstr "" + +#: src/demuxers/demux_asf.c:461 #, c-format msgid "demux_asf: warning: The stream id=%d is encrypted.\n" msgstr "demux_asf: uyarı: Akış kimliÄŸi=%d ÅŸifrelidir.\n" -#: src/demuxers/demux_asf.c:428 +#: src/demuxers/demux_asf.c:463 msgid "Media stream scrambled/encrypted" msgstr "Ortam akışı ÅŸifrelidir" -#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642 +#: src/demuxers/demux_avi.c:530 src/demuxers/demux_avi.c:644 msgid "Restoring index..." msgstr "İndeks Yeniden Yükleniyor..." -#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683 +#: src/demuxers/demux_avi.c:630 src/demuxers/demux_avi.c:1697 #, c-format msgid "demux_avi: invalid avi chunk \"%c%c%c%c\" at pos %<PRIdMAX>\n" msgstr "demux_avi: geçersiz avi yığını \"%c%c%c%c\" at pos %<PRIdMAX>\n" -#: src/demuxers/demux_avi.c:823 +#: src/demuxers/demux_avi.c:824 #, c-format msgid "demux_avi: avi index is broken\n" msgstr "demux_avi: avi indeksi bozuk\n" -#: src/demuxers/demux_avi.c:831 +#: src/demuxers/demux_avi.c:832 #, c-format msgid "demux_avi: failed to seek to the next chunk (pos %<PRIdMAX>)\n" msgstr "demux_avi: sonraki yığın bulunamadı (konum %<PRIdMAX>)\n" @@ -807,20 +1031,26 @@ msgstr "demux_avi: sonraki yığın bulunamadı (konum %<PRIdMAX>)\n" msgid "invalid FILM chunk size\n" msgstr "geçersiz FILM yığını\n" -#: src/demuxers/demux_film.c:340 +#: src/demuxers/demux_film.c:342 #, c-format msgid "unrecognized FILM chunk\n" msgstr "tanınmayan FILM yığını\n" -#: src/demuxers/demux_flv.c:178 +#: src/demuxers/demux_flv.c:184 #, c-format msgid "unsupported FLV version (%d).\n" msgstr "desteklenmeyen FLV sürümü (%d).\n" -#: src/demuxers/demux_flv.c:185 +#: src/demuxers/demux_flv.c:191 +#, c-format msgid "neither video nor audio stream in this file.\n" msgstr "bu dosya içerisinde ses ya da görüntü akışı yok.\n" +#: src/demuxers/demux_flv.c:552 src/demuxers/demux_flv.c:694 +#, c-format +msgid "sequence header too big (%u bytes)!\n" +msgstr "" + #: src/demuxers/demux_iff.c:233 #, c-format msgid "iff-8svx/16sv: unknown compression: %d\n" @@ -836,7 +1066,8 @@ msgstr "iff-ilbm: bilinmeyen sıkıştırma: %d\n" msgid "iff: unknown Chunk: %s\n" msgstr "iff: bilinmeyen Yığın: %s\n" -#: src/demuxers/demux_mpc.c:210 +#: src/demuxers/demux_mpc.c:205 +#, c-format msgid "demux_mpc: frame too big for buffer" msgstr "demux_mpc: çerçeve önbellek için çok büyük" @@ -846,97 +1077,112 @@ msgid "" "xine-lib:demux_mpeg_block: Unrecognised stream_id 0x%02x. Please report this " "to xine developers.\n" msgstr "" -"xine-lib:demux_mpeg_block: Tanınmayan akış_kimliÄŸi 0x%02x. Lütfen bunu " -"xine geliÅŸtiricilerine bildirin.\n" +"xine-lib:demux_mpeg_block: Tanınmayan akış_kimliÄŸi 0x%02x. Lütfen bunu xine " +"geliÅŸtiricilerine bildirin.\n" #: src/demuxers/demux_mpeg_block.c:305 -msgid "demux_mpeg_block: error! freeing. Please report this to xine developers.\n" +#, c-format +msgid "" +"demux_mpeg_block: error! freeing. Please report this to xine developers.\n" msgstr "" -"demux_mpeg_block: hata! boÅŸaltılıyor.Lütfen bunu " -"xine geliÅŸtiricilerine bildirin.\n" +"demux_mpeg_block: hata! boÅŸaltılıyor.Lütfen bunu xine geliÅŸtiricilerine " +"bildirin.\n" #: src/demuxers/demux_mpeg_block.c:637 #, c-format msgid "demux_mpeg_block: warning: PES header reserved 10 bits not found\n" -msgstr "demux_mpeg_block: uyarı: 10 bit olarak saklanan PES baÅŸlığı bulunamadı\n" +msgstr "" +"demux_mpeg_block: uyarı: 10 bit olarak saklanan PES baÅŸlığı bulunamadı\n" #: src/demuxers/demux_mpeg_block.c:647 #, c-format msgid "" "demux_mpeg_block: warning: PES header indicates that this stream may be " "encrypted (encryption mode %d)\n" -msgstr "demux_mpeg_block: uyarı: PES baÅŸlığı bu akışın ÅŸifrelenmiÅŸ olabileceÄŸini bildiriyor (ÅŸifrelenmiÅŸ kip %d)\n" +msgstr "" +"demux_mpeg_block: uyarı: PES baÅŸlığı bu akışın ÅŸifrelenmiÅŸ olabileceÄŸini " +"bildiriyor (ÅŸifrelenmiÅŸ kip %d)\n" -#: src/demuxers/demux_mpeg_pes.c:415 +#: src/demuxers/demux_mpeg_pes.c:413 #, c-format msgid "" "xine-lib:demux_mpeg_pes: Unrecognised stream_id 0x%02x. Please report this " "to xine developers.\n" msgstr "" -"xine-lib:demux_mpeg_pes: Tanınmayan akış_kimliÄŸi 0x%02x. Lütfen bunu " -"xine geliÅŸtiricilerine bildirin.\n" +"xine-lib:demux_mpeg_pes: Tanınmayan akış_kimliÄŸi 0x%02x. Lütfen bunu xine " +"geliÅŸtiricilerine bildirin.\n" -#: src/demuxers/demux_mpeg_pes.c:424 +#: src/demuxers/demux_mpeg_pes.c:422 #, c-format msgid "demux_mpeg_pes: warning: PACK stream id=0x%x decode failed.\n" -msgstr "demux_mpeg_pes: uyarı: PACK akış kimliÄŸi=0x%x kodlamasının açılması iÅŸlemi baÅŸarısız oldu.\n" +msgstr "" +"demux_mpeg_pes: uyarı: PACK akış kimliÄŸi=0x%x kodlamasının açılması iÅŸlemi " +"baÅŸarısız oldu.\n" -#: src/demuxers/demux_mpeg_pes.c:806 +#: src/demuxers/demux_mpeg_pes.c:804 #, c-format msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n" msgstr "demux_mpeg_pes: uyarı: 10 bit olarak saklanan PES baÅŸlığı bulunamadı\n" -#: src/demuxers/demux_mpeg_pes.c:816 +#: src/demuxers/demux_mpeg_pes.c:814 #, c-format msgid "" "demux_mpeg_pes: warning: PES header indicates that this stream may be " "encrypted (encryption mode %d)\n" -msgstr "demux_mpeg_pes: uyarı: PES baÅŸlığı bu akışın ÅŸifrelenmiÅŸ olabileceÄŸini bildiriyor (ÅŸifrelenmiÅŸ kip %d)\n" +msgstr "" +"demux_mpeg_pes: uyarı: PES baÅŸlığı bu akışın ÅŸifrelenmiÅŸ olabileceÄŸini " +"bildiriyor (ÅŸifrelenmiÅŸ kip %d)\n" -#: src/demuxers/demux_mpeg_pes.c:1090 +#: src/demuxers/demux_mpeg_pes.c:1088 #, c-format msgid "" "demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to " "xine developers.\n" msgstr "" -"demux_mpeg_pes:Tanınmayan gizli akış 1 0x%02x. Lütfen bunu " -"xine geliÅŸtiricilerine bildirin.\n" +"demux_mpeg_pes:Tanınmayan gizli akış 1 0x%02x. Lütfen bunu xine " +"geliÅŸtiricilerine bildirin.\n" #: src/demuxers/demux_ogg.c:805 #, c-format msgid "ogg: vorbis audio track indicated but no vorbis stream header found.\n" msgstr "ogg: vorbis ses izi bulundu ama hiç vorbis akış baÅŸlığı bulunamadı.\n" -#: src/demuxers/demux_snd.c:102 +#: src/demuxers/demux_snd.c:100 #, c-format msgid "demux_snd: bad header parameters\n" msgstr "demux_snd: kötü baÅŸlık parametreleri\n" -#: src/demuxers/demux_snd.c:147 +#: src/demuxers/demux_snd.c:145 #, c-format msgid "demux_snd: unsupported audio type: %d\n" msgstr "demux_snd: desteklenmeyen ses tipi: %d\n" #: src/demuxers/demux_tta.c:86 +#, c-format msgid "demux_tta: total frames count too high\n" msgstr "demux_tta: toplam çerçeve sayısı çok yüksek\n" #: src/demuxers/demux_voc.c:103 #, c-format msgid "unknown VOC block type (0x%02X); please report to xine developers\n" -msgstr "bilinmeyen VOC blok tipi (0x%02X); lütfen bunu xine geliÅŸtiricilerine bildirin.\n" +msgstr "" +"bilinmeyen VOC blok tipi (0x%02X); lütfen bunu xine geliÅŸtiricilerine " +"bildirin.\n" #: src/demuxers/demux_voc.c:118 #, c-format -msgid "unknown VOC compression type (0x%02X); please report to xine developers\n" -msgstr "bilinmeyen VOC sıkıştırma tipi (0x%02X); lütfen bunu xine geliÅŸtiricilerine bildirin.\n" +msgid "" +"unknown VOC compression type (0x%02X); please report to xine developers\n" +msgstr "" +"bilinmeyen VOC sıkıştırma tipi (0x%02X); lütfen bunu xine geliÅŸtiricilerine " +"bildirin.\n" #: src/demuxers/demux_wc3movie.c:190 #, c-format msgid "demux_wc3movie: SHOT chunk referenced invalid palette (%d >= %d)\n" msgstr "demux_wc3movie: SHOT yığını geçersiz paleti gösterdi (%d >= %d)\n" -#: src/demuxers/demux_wc3movie.c:404 +#: src/demuxers/demux_wc3movie.c:408 #, c-format msgid "demux_wc3movie: There was a problem while loading palette chunks\n" msgstr "demux_wc3movie: Palet yığınlarını yüklerken bir sorunla karşılaÅŸtı\n" @@ -949,7 +1195,9 @@ msgstr "DXR3 aygıt numarası" msgid "" "If you have more than one DXR3 in your computer, you can specify which one " "to use here." -msgstr "EÄŸer bilgisayarınızda birden fazla DXR3 varsa, burada hangisini kullanacağınızı belirlemelisiniz." +msgstr "" +"EÄŸer bilgisayarınızda birden fazla DXR3 varsa, burada hangisini " +"kullanacağınızı belirlemelisiniz." #: src/dxr3/dxr3_decode_spu.c:251 #, c-format @@ -957,6 +1205,7 @@ msgid "dxr3_decode_spu: Failed to open spu device %s (%s)\n" msgstr "dxr3_decode_spu: spu device %s (%s) yüklenemedi\n" #: src/dxr3/dxr3_decode_spu.c:661 +#, c-format msgid "requested button not available\n" msgstr "istenilen düğme kullanılabilir deÄŸil\n" @@ -984,16 +1233,22 @@ msgid "" "Enable Pan & Scan based on information embedded in DVB streams. This makes " "use of the Active Format Descriptor (AFD) used in some European DVB channels." msgstr "" -"\"Panla & Tara\" bazen MPEG kodlama malzemesinde kullanılan özel bir görüntüleme kipidir. Böyle bir içeriÄŸin nasıl kullanılacağını burada belirleyebilirsiniz.\n" +"\"Panla & Tara\" bazen MPEG kodlama malzemesinde kullanılan özel bir " +"görüntüleme kipidir. Böyle bir içeriÄŸin nasıl kullanılacağını burada " +"belirleyebilirsiniz.\n" "\n" "sadece zorunluluk halinde\n" -"Yalnızca çalmakta olduÄŸunuz içerik sizi mecbur bıraktığında Panla & Tara özelliÄŸini kullanınız.\n" +"Yalnızca çalmakta olduÄŸunuz içerik sizi mecbur bıraktığında Panla & Tara " +"özelliÄŸini kullanınız.\n" "\n" "MPEG iÅŸareti\n" -"MPEG görüntü akışına gömülü bilgiyi temel alan Panla & Tara seçeneÄŸini etkinleÅŸtiriniz.\n" +"MPEG görüntü akışına gömülü bilgiyi temel alan Panla & Tara seçeneÄŸini " +"etkinleÅŸtiriniz.\n" "\n" "DVB iÅŸaretini kullan\n" -"DVB görüntü akışına gömülü bilgiyi temel alan Panla & Tara seçeneÄŸini etkinleÅŸtiriniz. Bu bazı Avrupa DVB kanallarında kullanılan Etkin Kip Tanımlayıcısı'nın (AFD) kullanımını saÄŸlar." +"DVB görüntü akışına gömülü bilgiyi temel alan Panla & Tara seçeneÄŸini " +"etkinleÅŸtiriniz. Bu bazı Avrupa DVB kanallarında kullanılan Etkin Kip " +"Tanımlayıcısı'nın (AFD) kullanımını saÄŸlar." #: src/dxr3/dxr3_decode_video.c:274 msgid "try to sync video every frame" @@ -1006,7 +1261,9 @@ msgid "" "every now and then.\n" "This is relevant for progressive video only (most PAL films)." msgstr "" -"EÄŸer kare için zaman çizelgesinin senkronize edilmesini dener. Normalde bu gerekli deÄŸildir, çünkü zaman çizelgesi ayarlanmış olsun veya olması senkron uygundur.\n" +"EÄŸer kare için zaman çizelgesinin senkronize edilmesini dener. Normalde bu " +"gerekli deÄŸildir, çünkü zaman çizelgesi ayarlanmış olsun veya olması senkron " +"uygundur.\n" "Bu sadece yürüyen görüntü için geçerlidir (çoÄŸu PAL görüntüde oluÄŸu gibi)." #: src/dxr3/dxr3_decode_video.c:281 @@ -1015,7 +1272,9 @@ msgstr "düz oynatma kipini kullan" #: src/dxr3/dxr3_decode_video.c:282 msgid "Enabling this option will utilise a smoother play mode." -msgstr "Bu seçeneÄŸi etkinleÅŸtirmek daha yumuÅŸak bir çalma kipine geçiÅŸi saÄŸlayacaktır." +msgstr "" +"Bu seçeneÄŸi etkinleÅŸtirmek daha yumuÅŸak bir çalma kipine geçiÅŸi " +"saÄŸlayacaktır." #: src/dxr3/dxr3_decode_video.c:285 msgid "correct frame durations in broken streams" @@ -1027,7 +1286,11 @@ msgid "" "with wrong framerate codes. Currently a correction for NTSC streams " "erroneously labeled as PAL streams is implemented. Enable only, when you " "encounter such streams." -msgstr "Bazı hatalı kare sürelerine sahip mpeg akışlarındaki yanlış kare hatası kodlarını düzelten bir küçük mantığı etkinleÅŸtirir. Bu hata karşımıza daha çok yanlışlıkla PAL akışı olarak etiketlenmiÅŸ NTSC akışlarında karşımıza çıkar. Bu özelliÄŸi böylesi akışlarla karşılaÅŸtığınızda etkinleÅŸtirin." +msgstr "" +"Bazı hatalı kare sürelerine sahip mpeg akışlarındaki yanlış kare hatası " +"kodlarını düzelten bir küçük mantığı etkinleÅŸtirir. Bu hata karşımıza daha " +"çok yanlışlıkla PAL akışı olarak etiketlenmiÅŸ NTSC akışlarında karşımıza " +"çıkar. Bu özelliÄŸi böylesi akışlarla karşılaÅŸtığınızda etkinleÅŸtirin." #: src/dxr3/dxr3_decode_video.c:545 #, c-format @@ -1035,6 +1298,7 @@ msgid "dxr3_decode_video: Failed to open video device %s (%s)\n" msgstr "dxr3_decode_video: Aygıt açılamadı %s (%s)\n" #: src/dxr3/dxr3_decode_video.c:613 +#, c-format msgid "dxr3_decode_video: write to device would block. flushing\n" msgstr "dxr3_decode_video: kızarmayı önlemesi için aygıta yazar\n" @@ -1049,24 +1313,32 @@ msgid "dxr3_decode_video: WARNING: unknown frame rate code %d\n" msgstr "dxr3_decode_video: UYARI: bilinmeyen çerçevesi oranı kodu %d\n" #: src/dxr3/dxr3_decode_video.c:760 -msgid "dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" -msgstr "dxr3_decode_video: UYARI: çerçeve oranı kodu PAL'den NTSC'ye çevriliyor\n" +#, c-format +msgid "" +"dxr3_decode_video: WARNING: correcting frame rate code from PAL to NTSC\n" +msgstr "" +"dxr3_decode_video: UYARI: çerçeve oranı kodu PAL'den NTSC'ye çevriliyor\n" #: src/dxr3/dxr3_mpeg_encoders.c:123 +#, c-format msgid "dxr3_mpeg_encoder: failed to init librte\n" msgstr "dxr3_mpeg_encoder: librte baÅŸlatılamadı\n" #: src/dxr3/dxr3_mpeg_encoders.c:158 +#, c-format msgid "" "dxr3_mpeg_encoder: rte only handles video dimensions which are multiples of " "16\n" -msgstr "dxr3_mpeg_encoder: 16 çoklamasına sahip görüntü boyutlarında sadece rte \n" +msgstr "" +"dxr3_mpeg_encoder: 16 çoklamasına sahip görüntü boyutlarında sadece rte \n" #: src/dxr3/dxr3_mpeg_encoders.c:168 +#, c-format msgid "dxr3_mpeg_encoder: failed to get rte context.\n" msgstr "dxr3_mpeg_encoder: rte baÄŸlamı alınamadı.\n" #: src/dxr3/dxr3_mpeg_encoders.c:179 +#, c-format msgid "dxr3_mpeg_encoder: could not create codec.\n" msgstr "dxr3_mpeg_encoder: kodlayıcı oluÅŸturulamadı.\n" @@ -1078,7 +1350,10 @@ msgstr "rte mpeg çıktısı bit oranı (kbit/s)" msgid "" "The bitrate the mpeg encoder library librte should use for DXR3's encoding " "mode. Higher values will increase quality and CPU usage." -msgstr "Mpeg kodlama kütüphanesi bit boyu olan librte, DXR3 kodlama kipini kullanmalı. Daha yüksek deÄŸerle kaliteyi ve iÅŸlemci kullanımını arttıracaktır." +msgstr "" +"Mpeg kodlama kütüphanesi bit boyu olan librte, DXR3 kodlama kipini " +"kullanmalı. Daha yüksek deÄŸerle kaliteyi ve iÅŸlemci kullanımını " +"arttıracaktır." #: src/dxr3/dxr3_mpeg_encoders.c:232 #, c-format @@ -1091,6 +1366,7 @@ msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n" msgstr "dxr3_mpeg_encoder: kodlamaya baÅŸlanamadı: %s\n" #: src/dxr3/dxr3_mpeg_encoders.c:370 +#, c-format msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n" msgstr "dxr3_mpeg_encoder: FAME kütüphanesi baÅŸlatılamadı\n" @@ -1102,7 +1378,10 @@ msgstr "fame mpeg kodlama kalitesi" msgid "" "The encoding quality of the libfame mpeg encoder library. Lower is faster " "but gives noticeable artifacts. Higher is better but slower." -msgstr "Libfame mpeg kodlama kütüphanesinin kodlama kalitesi. YavaÅŸ, daha hızlıdır ama dikkat çekici bir özellik katar. Daha hızlı, daha iyidir, fakat daha yavaÅŸtır." +msgstr "" +"Libfame mpeg kodlama kütüphanesinin kodlama kalitesi. YavaÅŸ, daha hızlıdır " +"ama dikkat çekici bir özellik katar. Daha hızlı, daha iyidir, fakat daha " +"yavaÅŸtır." #: src/dxr3/dxr3_scr.c:96 msgid "SCR plugin priority" @@ -1113,7 +1392,10 @@ msgid "" "Priority of the DXR3 SCR plugin. Values less than 5 mean that the unix " "system timer will be used. Values greater 5 force to use DXR3's internal " "clock as sync source." -msgstr "DXR3 SCR eklentisinin önceliÄŸi. 5'den daha az olan deÄŸerler unix sistem zamanlayıcısının kullanılacağı anlamına gelir. 5'den daha büyük deÄŸerler DXR3'ü senkron kaynağı olarak dahili saati kullanması için zorlarlar." +msgstr "" +"DXR3 SCR eklentisinin önceliÄŸi. 5'den daha az olan deÄŸerler unix sistem " +"zamanlayıcısının kullanılacağı anlamına gelir. 5'den daha büyük deÄŸerler " +"DXR3'ü senkron kaynağı olarak dahili saati kullanması için zorlarlar." #: src/dxr3/video_out_dxr3.c:260 msgid "swap odd and even lines" @@ -1126,7 +1408,8 @@ msgid "" "screen." msgstr "" "Resmin tek ve çift alanlarını deÄŸiÅŸtirir.\n" -"Bu seçeneÄŸi MPEG malzemesi dışında ekranda dikey oynamalar üretmek için etkinleÅŸtirin." +"Bu seçeneÄŸi MPEG malzemesi dışında ekranda dikey oynamalar üretmek için " +"etkinleÅŸtirin." #: src/dxr3/video_out_dxr3.c:265 msgid "add black bars to correct aspect ratio" @@ -1136,15 +1419,20 @@ msgstr "görünüm oranını düzeltmek için siyah çubuklar ekle" msgid "" "Adds black bars when the image has an aspect ratio the card cannot handle " "natively. This is needed to maintain proper image proportions." -msgstr "Resim görüntü oranı kartı ile baÅŸa çıkamadığında siyah çizgiler ekler. Bu uygun görüntü kesitleri oluÅŸturulmak isteniÄŸinde gereklidir." +msgstr "" +"Resim görüntü oranı kartı ile baÅŸa çıkamadığında siyah çizgiler ekler. Bu " +"uygun görüntü kesitleri oluÅŸturulmak isteniÄŸinde gereklidir." #: src/dxr3/video_out_dxr3.c:271 msgid "use smooth play mode for mpeg encoder playback" msgstr "mpeg kodlayıcı oynatması için pürüzsüz oynatmayı kullan" #: src/dxr3/video_out_dxr3.c:272 -msgid "Enabling this option will utilise a smoother play mode for non-MPEG content." -msgstr "Bu seçeneÄŸi etkinleÅŸtirmek MPEG içeriÄŸi dışındaki kaynaklar için daha yumuÅŸak oynatma kipine geçiÅŸi saÄŸlayacaktır." +msgid "" +"Enabling this option will utilise a smoother play mode for non-MPEG content." +msgstr "" +"Bu seçeneÄŸi etkinleÅŸtirmek MPEG içeriÄŸi dışındaki kaynaklar için daha " +"yumuÅŸak oynatma kipine geçiÅŸi saÄŸlayacaktır." #: src/dxr3/video_out_dxr3.c:280 #, c-format @@ -1173,24 +1461,35 @@ msgid "" "\"fame\" and \"rte\" are still there, but xine support for them is outdated, " "so these might fail to work." msgstr "" -"MPEG dışındaki içeriÄŸin, ek bir yeniden kodlanma aÅŸamasından geçmesi gereklidir, çünkü dxr3 sadece MPEG ile baÅŸa çıkabilir.\n" -"xine'nin neyi desteklediÄŸine baÄŸlı olarak, bu ayar \"fame\", \"rte\", \"libavcodec\" veya \"hiçbiri\". olarak ayarlanabilir.\n" -"\"libavcodec\" kodlayıcısı xine ile çalışan ffmpeg eklentisinin çalışmasına sebep olur, böylece bunun için ek bir kütüphane dosyası yüklemek zorunda kalmazsınız. Hatta daha iyi bir olanak olarak, libavcodec'in aynı zamanda düşük iÅŸlemci hızıyla yüksek kalitede performans gösterdiÄŸidir. \"libavcodec\" kullanılması bu yüzden ÅŸiddetle tavsiye edilir.\n" -"\"fame\" ve \"rtre\" hala oradadırlar, fakat xine onları güncel olarak desteklemezler, bu yüzden çalışmazlar." +"MPEG dışındaki içeriÄŸin, ek bir yeniden kodlanma aÅŸamasından geçmesi " +"gereklidir, çünkü dxr3 sadece MPEG ile baÅŸa çıkabilir.\n" +"xine'nin neyi desteklediÄŸine baÄŸlı olarak, bu ayar \"fame\", \"rte\", " +"\"libavcodec\" veya \"hiçbiri\". olarak ayarlanabilir.\n" +"\"libavcodec\" kodlayıcısı xine ile çalışan ffmpeg eklentisinin çalışmasına " +"sebep olur, böylece bunun için ek bir kütüphane dosyası yüklemek zorunda " +"kalmazsınız. Hatta daha iyi bir olanak olarak, libavcodec'in aynı zamanda " +"düşük iÅŸlemci hızıyla yüksek kalitede performans gösterdiÄŸidir. \"libavcodec" +"\" kullanılması bu yüzden ÅŸiddetle tavsiye edilir.\n" +"\"fame\" ve \"rtre\" hala oradadırlar, fakat xine onları güncel olarak " +"desteklemezler, bu yüzden çalışmazlar." #: src/dxr3/video_out_dxr3.c:346 +#, c-format msgid "video_out_dxr3: Mpeg encoder libavcodec failed to init.\n" msgstr "video_out_dxr3: Mpeg kodlayıcı libavcodec baÅŸlatılamadı.\n" #: src/dxr3/video_out_dxr3.c:352 +#, c-format msgid "video_out_dxr3: Mpeg encoder rte failed to init.\n" msgstr "video_out_dxr3: Mpeg kodlayıcı rte baÅŸlatılamadı.\n" #: src/dxr3/video_out_dxr3.c:359 +#, c-format msgid "video_out_dxr3: Mpeg encoder fame failed to init.\n" msgstr "video_out_dxr3: Mpeg kodlayıcı fame baÅŸlatılamadı.\n" #: src/dxr3/video_out_dxr3.c:365 +#, c-format msgid "" "video_out_dxr3: Mpeg encoding disabled.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1200,11 +1499,15 @@ msgid "" "encoder.\n" msgstr "" "video_out_dxr3: Mpeg kodlaması edilgenleÅŸtirilmiÅŸ.\n" -"video_out_dxr3: burası tamamdır, ona DVDler gibi mpeg video amacıyla ihtiyacınız yoktur, fakat\n" -"video_out_dxr3: bu görüntü çıkışını kullanarak mpeg-dışı içeriÄŸi oynatamazsınız\n" -"video_out_dxr3: sürücü. kodlayıcıyı yapılandırmak hakkında daha detaylı bilgiler için README.dxr3 dosyasını okuyunuz.\n" +"video_out_dxr3: burası tamamdır, ona DVDler gibi mpeg video amacıyla " +"ihtiyacınız yoktur, fakat\n" +"video_out_dxr3: bu görüntü çıkışını kullanarak mpeg-dışı içeriÄŸi " +"oynatamazsınız\n" +"video_out_dxr3: sürücü. kodlayıcıyı yapılandırmak hakkında daha detaylı " +"bilgiler için README.dxr3 dosyasını okuyunuz.\n" #: src/dxr3/video_out_dxr3.c:371 +#, c-format msgid "" "video_out_dxr3: No mpeg encoder compiled in.\n" "video_out_dxr3: that's ok, you don't need it for mpeg video like DVDs, but\n" @@ -1214,9 +1517,12 @@ msgid "" "encoder.\n" msgstr "" "video_out_dxr3: Hiç bir mpeg kodlayıcısı derlenmemiÅŸtir.\n" -"video_out_dxr3: burası tamamdır, ona DVDler gibi mpeg görüntü amacıyla ihtiyacınız yoktur, fakat\n" -"video_out_dxr3: bu görüntü çıkışını kullanarak mpeg-dışı içeriÄŸi oynatamazsınız\n" -"video_out_dxr3: sürücü. kodlayıcıyı yapılandırmak hakkında daha detaylı bilgiler için README.dxr3 dosyasını okuyunuz.\n" +"video_out_dxr3: burası tamamdır, ona DVDler gibi mpeg görüntü amacıyla " +"ihtiyacınız yoktur, fakat\n" +"video_out_dxr3: bu görüntü çıkışını kullanarak mpeg-dışı içeriÄŸi " +"oynatamazsınız\n" +"video_out_dxr3: sürücü. kodlayıcıyı yapılandırmak hakkında daha detaylı " +"bilgiler için README.dxr3 dosyasını okuyunuz.\n" #: src/dxr3/video_out_dxr3.c:386 msgid "video output mode (TV or overlay)" @@ -1253,47 +1559,68 @@ msgid "" "switching to TV out by hiding the video window. This is the common variant " "of DXR3 overlay." msgstr "" -"BitmiÅŸ görüntü için DXR3 çıkışlarının yolları buradan ayarlanabilir. KiÅŸisel deÄŸerler:\n" +"BitmiÅŸ görüntü için DXR3 çıkışlarının yolları buradan ayarlanabilir. KiÅŸisel " +"deÄŸerler:\n" "\n" "harfkutucuklu tv\n" -"görüntüyü sadece TV çıkış baÄŸlantılarına gönderme. Bu standart 4:3 televizyonlar için kullanılan bir kiptir. Anamorfik (16:9) görüntü harfkutucuklu görüntülenecektir, panla&tara malzemesi görüntünün saÄŸ ve sol tarafta kesilmiÅŸ gibi görüntülenmesine yol açacaktır. Bu televizyonun bağımsız DVD çalıcı gibi kullanıldığı ortak bir ayardır.\n" +"görüntüyü sadece TV çıkış baÄŸlantılarına gönderme. Bu standart 4:3 " +"televizyonlar için kullanılan bir kiptir. Anamorfik (16:9) görüntü " +"harfkutucuklu görüntülenecektir, panla&tara malzemesi görüntünün saÄŸ ve sol " +"tarafta kesilmiÅŸ gibi görüntülenmesine yol açacaktır. Bu televizyonun " +"bağımsız DVD çalıcı gibi kullanıldığı ortak bir ayardır.\n" "\n" "geniÅŸ ekran tv\n" -"Görüntüyü sadece TV çıkış baÄŸlantılarına gönderme. Bu kip 16:9 geniÅŸ ekran TV setleri için oluÅŸturulmuÅŸtur. Anamorfik ve panla&tara içeriÄŸi tüm ekranı kaplayacaktır, fakat televizyonun görüntü ayarlarını elle 16:9 ekran boyutunda kullanacak ÅŸekilde ayarlamalısınız.\n" +"Görüntüyü sadece TV çıkış baÄŸlantılarına gönderme. Bu kip 16:9 geniÅŸ ekran " +"TV setleri için oluÅŸturulmuÅŸtur. Anamorfik ve panla&tara içeriÄŸi tüm ekranı " +"kaplayacaktır, fakat televizyonun görüntü ayarlarını elle 16:9 ekran " +"boyutunda kullanacak ÅŸekilde ayarlamalısınız.\n" "\n" "harfkutucuklu kaplama\n" -"Bilgisayar ekranındaki üstyazım görüntü çıkışının, görüntü ekranının gizlenmesi suretiyle TV çıkışına geçirilmesidir. EÄŸer kaynak anamorfik (16:9) ise, üstyazım siyah çerçeveyle görüntülenecektir.\n" -"Bu ayar, DVD altyazı kanalının sadece harfkutucuklu kipte düzgün görüntülenebildiÄŸi ender durumlarda faydalı olabilecektir. Bunun için en iyi örnek \"Ghostbusters\" filmindeki hareketli yorumcu silüetleridir.\n" +"Bilgisayar ekranındaki üstyazım görüntü çıkışının, görüntü ekranının " +"gizlenmesi suretiyle TV çıkışına geçirilmesidir. EÄŸer kaynak anamorfik " +"(16:9) ise, üstyazım siyah çerçeveyle görüntülenecektir.\n" +"Bu ayar, DVD altyazı kanalının sadece harfkutucuklu kipte düzgün " +"görüntülenebildiÄŸi ender durumlarda faydalı olabilecektir. Bunun için en iyi " +"örnek \"Ghostbusters\" filmindeki hareketli yorumcu silüetleridir.\n" "\n" "geniÅŸ ekran kaplama\n" -"Bilgisayar ekranındaki üstyazım görüntü çıkışının, görüntü ekranının gizlenmesi suretiyle TV çıkışına geçirilmesidir. Bu DXR3 kaplamasının ortak deÄŸiÅŸkenidir." +"Bilgisayar ekranındaki üstyazım görüntü çıkışının, görüntü ekranının " +"gizlenmesi suretiyle TV çıkışına geçirilmesidir. Bu DXR3 kaplamasının ortak " +"deÄŸiÅŸkenidir." #: src/dxr3/video_out_dxr3.c:434 -msgid "overlay colorkey value" +#, fuzzy +msgid "overlay colour key value" msgstr "katman renk deÄŸeri" #: src/dxr3/video_out_dxr3.c:434 +#, fuzzy msgid "" -"Hexadecimal RGB value of the key color.\n" +"Hexadecimal RGB value of the key colour.\n" "You can try different values, if you experience windows becoming transparent " "when using DXR3 overlay mode." msgstr "" "Anahtar rengin onaltılık RGB deÄŸeri.\n" -"EÄŸer DXR3 katman kipini kullandığınızda pencereler ÅŸeffaflaşırsa deÄŸiÅŸik deÄŸerler deneyebilirsiniz." +"EÄŸer DXR3 katman kipini kullandığınızda pencereler ÅŸeffaflaşırsa deÄŸiÅŸik " +"deÄŸerler deneyebilirsiniz." #: src/dxr3/video_out_dxr3.c:439 -msgid "overlay colorkey tolerance" +#, fuzzy +msgid "overlay colour key tolerance" msgstr "katman renk toleransı" #: src/dxr3/video_out_dxr3.c:439 +#, fuzzy msgid "" -"A greater value widens the tolerance for the overlay keycolor.\n" +"A greater value widens the tolerance for the overlay key colour.\n" "You can try lower values, if you experience windows becoming transparent " "when using DXR3 overlay mode, but parts of the image borders may disappear " "when using a too low setting." msgstr "" "Daha büyük bir deÄŸer katmak renginin toleransını geniÅŸletebilir.\n" -"EÄŸer DXR3 katman kipini kullandığınızda pencereler ÅŸeffaflaşırsa daha düşük deÄŸerler deneyebilirsiniz, fakat çok daha düşük bir deÄŸer denediÄŸinizde görüntü sınırlarının bazı kısımları kaybolabilir." +"EÄŸer DXR3 katman kipini kullandığınızda pencereler ÅŸeffaflaşırsa daha düşük " +"deÄŸerler deneyebilirsiniz, fakat çok daha düşük bir deÄŸer denediÄŸinizde " +"görüntü sınırlarının bazı kısımları kaybolabilir." #: src/dxr3/video_out_dxr3.c:445 msgid "crop the overlay area at top and bottom" @@ -1303,9 +1630,12 @@ msgstr "Üst ve altın katman bölgesini kesin" msgid "" "Removes one pixel line from the top and bottom of the overlay. Enable this, " "if you see green lines at the top or bottom of the overlay." -msgstr "Katmanın üst ve altından bir piksel satırını çıkarır. Katmanın üst ve altındaki yeÅŸil satırı görmek isterseniz bunu etkinleÅŸtirin." +msgstr "" +"Katmanın üst ve altından bir piksel satırını çıkarır. Katmanın üst ve " +"altındaki yeÅŸil satırı görmek isterseniz bunu etkinleÅŸtirin." #: src/dxr3/video_out_dxr3.c:450 +#, c-format msgid "video_out_dxr3: please run autocal, overlay disabled\n" msgstr "video_out_dxr3: lütfen otomatik ayarı çalıştırın, katman kayboldu\n" @@ -1330,55 +1660,64 @@ msgstr "" "varsayılan: ekran kartının ayarlarını korur" #: src/dxr3/video_out_dxr3.c:482 +#, c-format msgid "video_out_dxr3: setting video mode failed.\n" msgstr "video_out_dxr3: görüntü kipi ayarlanamadı.\n" #: src/dxr3/video_out_dxr3.c:712 +#, c-format msgid "" "video_out_dxr3: Need an mpeg encoder to play non-mpeg videos on dxr3\n" "video_out_dxr3: Read the README.dxr3 for details.\n" msgstr "" -"video_out_dxr3: mpeg-dışı görüntüleri oynatmak için dxr3 üzerinde bir mpeg kodlayıcısına ihtiyaç duyar\n" +"video_out_dxr3: mpeg-dışı görüntüleri oynatmak için dxr3 üzerinde bir mpeg " +"kodlayıcısına ihtiyaç duyar\n" "video_out_dxr3: Detaylar için README.dxr3 dosyasını okuyun.\n" -#: src/dxr3/video_out_dxr3.c:1371 +#: src/dxr3/video_out_dxr3.c:1367 +#, c-format msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n" -msgstr "video_out_dxr3: HATA Katman init dosyasını okuyor. Otomatik kullanımı çalıştırın!\n" +msgstr "" +"video_out_dxr3: HATA Katman init dosyasını okuyor. Otomatik kullanımı " +"çalıştırın!\n" -#: src/input/input_cdda.c:1616 +#: src/input/input_cdda.c:1602 #, c-format msgid "%s: can't connect to %s:%d\n" msgstr "%s: %s konumuna baÄŸlanılamadı:%d\n" -#: src/input/input_cdda.c:1663 -#, c-format -msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n" +#: src/input/input_cdda.c:1649 +#, fuzzy, c-format +msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n" msgstr "input_cdda: cddb sunucusuna baÅŸarılı bir ÅŸekilde baÄŸlandı '%s:%d'.\n" -#: src/input/input_cdda.c:1668 +#: src/input/input_cdda.c:1654 #, c-format msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n" -msgstr "input_cdda: cddb sunucusuna '%s:%d' (%s) baÄŸlanma iÅŸlemi baÅŸarısız oldu.\n" +msgstr "" +"input_cdda: cddb sunucusuna '%s:%d' (%s) baÄŸlanma iÅŸlemi baÅŸarısız oldu.\n" -#: src/input/input_cdda.c:2702 +#: src/input/input_cdda.c:2823 msgid "CD Digital Audio (aka. CDDA)" msgstr "CD Dijital Ses (CDDA olarak da bilinir)" -#: src/input/input_cdda.c:2755 +#: src/input/input_cdda.c:2875 msgid "device used for CD audio" msgstr "CD sesi için kullanılan aygıt" -#: src/input/input_cdda.c:2756 +#: src/input/input_cdda.c:2876 msgid "" "The path to the device, usually a CD or DVD drive, which you intend to use " "for playing audio CDs." -msgstr "Aygıta giden yol, ses CDlerini çalmak amacıyla kullandığınız CD yada DVD sürücüsü." +msgstr "" +"Aygıta giden yol, ses CDlerini çalmak amacıyla kullandığınız CD yada DVD " +"sürücüsü." -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "query CDDB" msgstr "CDDB sorgusu" -#: src/input/input_cdda.c:2762 +#: src/input/input_cdda.c:2882 msgid "" "Enables CDDB queries, which will give you convenient title and track names " "for your audio CDs.\n" @@ -1386,14 +1725,18 @@ msgid "" "retrieved from an internet server which might collect a profile of your " "listening habits." msgstr "" -"Ses CD'niz için uygun baÅŸlıklar ve iz isimleri sunan CDDB sorgularını etkinleÅŸtirir.\n" -"Size özel, kiÅŸisel CDDB'yi kullanmadığınız taktirde sizin dinlediÄŸiniz müziklerinizin toplanmasından yola çıkarak oluÅŸturulan profiliniz paralelinde bir aÄŸ sunucusundan ilgili bilgilerin toplandığını aklınızdan çıkarmayınız." +"Ses CD'niz için uygun baÅŸlıklar ve iz isimleri sunan CDDB sorgularını " +"etkinleÅŸtirir.\n" +"Size özel, kiÅŸisel CDDB'yi kullanmadığınız taktirde sizin dinlediÄŸiniz " +"müziklerinizin toplanmasından yola çıkarak oluÅŸturulan profiliniz " +"paralelinde bir aÄŸ sunucusundan ilgili bilgilerin toplandığını aklınızdan " +"çıkarmayınız." -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "CDDB server name" msgstr "CDDB sunucu adı" -#: src/input/input_cdda.c:2770 +#: src/input/input_cdda.c:2890 msgid "" "The CDDB server used to retrieve the title and track information from.\n" "This setting is security critical, because the sever will receive " @@ -1401,21 +1744,23 @@ msgid "" "malicious replies. Be sure to enter a server you can trust." msgstr "" "CDDB sunucusu baÅŸlık ve iz bilgilerinin toplanması için kullanılır.\n" -"Bu ayar güvenlik açısından kritiktir, çünkü sunucu sizin dinleme alışkanlıklarınız hakkında bilgiler toplayacak ve kötü niyetli sorguları cevaplandıracaktır. Güvenilir sunucuları kullanmayı deneyin." +"Bu ayar güvenlik açısından kritiktir, çünkü sunucu sizin dinleme " +"alışkanlıklarınız hakkında bilgiler toplayacak ve kötü niyetli sorguları " +"cevaplandıracaktır. Güvenilir sunucuları kullanmayı deneyin." -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "CDDB server port" msgstr "CDDB sunucu portu" -#: src/input/input_cdda.c:2778 +#: src/input/input_cdda.c:2898 msgid "The server port used to retrieve the title and track information from." msgstr "Sunucu portu baÅŸlık ve iz bilgisini almak için kullanıldı." -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "CDDB cache directory" msgstr "CDDB önbellek dizini" -#: src/input/input_cdda.c:2784 +#: src/input/input_cdda.c:2904 msgid "" "The replies from the CDDB server will be cached in this directory.\n" "This setting is security critical, because files with uncontrollable names " @@ -1423,13 +1768,15 @@ msgid "" "used for anything but CDDB caching." msgstr "" "CDDB sunucusundan gelen cevaplar bu dizinde saklanacaktır.\n" -"Bu ayar güvenlik açısından kritiktir, çünkü bu dizinde dosyalara verilen isimler denetlenemeyecektir. Bu dizini CDDB depolanması dışında baÅŸka amaçla kullanmamaya özen gösterin." +"Bu ayar güvenlik açısından kritiktir, çünkü bu dizinde dosyalara verilen " +"isimler denetlenemeyecektir. Bu dizini CDDB depolanması dışında baÅŸka amaçla " +"kullanmamaya özen gösterin." -#: src/input/input_cdda.c:2792 +#: src/input/input_cdda.c:2912 msgid "slow down disc drive to this speed factor" msgstr "disk sürücüsünün hızını seviyesine düşür" -#: src/input/input_cdda.c:2793 +#: src/input/input_cdda.c:2913 msgid "" "Since some CD or DVD drives make some really loud noises because of the fast " "disc rotation, xine will try to slow them down. With standard CD or DVD " @@ -1437,116 +1784,145 @@ msgid "" "so the slowdown should not affect playback performance.\n" "A value of zero here will disable the slowdown." msgstr "" -"Bazı CD ve DVD sürücüler hızlı disk dönüşü nedeniyle çok ses çıkaracağı için, xine onları yavaÅŸlatmayı deneyecektir. Standart CD veya DVD çalınırken, hızlı dönüşü gerektiren yüksek verilere ihtiyaç duyulmaz, böylece yavaÅŸlama, çalma performansını etkilemez.\n" +"Bazı CD ve DVD sürücüler hızlı disk dönüşü nedeniyle çok ses çıkaracağı " +"için, xine onları yavaÅŸlatmayı deneyecektir. Standart CD veya DVD " +"çalınırken, hızlı dönüşü gerektiren yüksek verilere ihtiyaç duyulmaz, " +"böylece yavaÅŸlama, çalma performansını etkilemez.\n" "Buradaki sıfır deÄŸeri yavaÅŸlamayı devre dışı bırakacaktır." -#: src/input/input_dvb.c:895 +#: src/input/input_dvb.c:904 #, c-format msgid "input_dvb: failed to open dvb channel file '%s': %s\n" msgstr "input_dvb: dvb kanal dosyası açılamadı '%s': %s\n" -#: src/input/input_dvb.c:901 +#: src/input/input_dvb.c:910 #, c-format msgid "input_dvb: dvb channel file '%s' is not a plain file\n" msgstr "input_dvb: dvb kanal dosyası '%s' düz bir dosya deÄŸil\n" -#: src/input/input_dvb.c:2139 src/input/input_dvb.c:2971 +#: src/input/input_dvb.c:2148 src/input/input_dvb.c:2987 +#, c-format msgid "input_dvb: tuner_set_channel failed\n" msgstr "input_dvb: tuner_set_channel baÅŸarısız oldu\n" -#: src/input/input_dvb.c:2771 src/input/input_dvb.c:3197 +#: src/input/input_dvb.c:2782 +#, c-format +msgid "input_dvb: DVB GUI %s\n" +msgstr "" + +#: src/input/input_dvb.c:2787 src/input/input_dvb.c:3215 +#, c-format msgid "input_dvb: cannot open dvb device\n" msgstr "input_dvb: dvb aygıtı açılamadı\n" -#: src/input/input_dvb.c:2795 +#: src/input/input_dvb.c:2811 #, c-format msgid "input_dvb: channel %d out of range, defaulting to 0\n" msgstr "input_dvb: kanal %d sınırların dışında, Sıfırlanıyor\n" -#: src/input/input_dvb.c:2806 +#: src/input/input_dvb.c:2822 #, c-format msgid "input_dvb: searching for channel %s\n" msgstr "input_dvb: %s kanalını arıyor\n" -#: src/input/input_dvb.c:2829 +#: src/input/input_dvb.c:2845 #, c-format msgid "input_dvb: exact match for %s not found: trying partial matches\n" -msgstr "input_dvb: %s için tam eÅŸleÅŸme bulunamadı: kısmi eÅŸleÅŸmeler deneniyor\n" +msgstr "" +"input_dvb: %s için tam eÅŸleÅŸme bulunamadı: kısmi eÅŸleÅŸmeler deneniyor\n" -#: src/input/input_dvb.c:2836 +#: src/input/input_dvb.c:2852 #, c-format msgid "input_dvb: found matching channel %s\n" msgstr "input_dvb: %s eÅŸleÅŸen kanal bulundu\n" -#: src/input/input_dvb.c:2849 +#: src/input/input_dvb.c:2865 #, c-format msgid "input_dvb: channel %s not found in channels.conf, defaulting.\n" -msgstr "input_dvb: %s kanalı channels.conf dosyasında bulunamadı, öntanımlı deÄŸerlere dönülüyor.\n" +msgstr "" +"input_dvb: %s kanalı channels.conf dosyasında bulunamadı, öntanımlı " +"deÄŸerlere dönülüyor.\n" -#: src/input/input_dvb.c:2855 +#: src/input/input_dvb.c:2871 +#, c-format msgid "" "input_dvb: invalid channel specification, defaulting to last viewed " "channel.\n" msgstr "" -"input_dvb: geçersiz kanal belirtimi, son görüntülenen kanala " -"dönülüyor.\n" +"input_dvb: geçersiz kanal belirtimi, son görüntülenen kanala dönülüyor.\n" -#: src/input/input_dvb.c:2861 +#: src/input/input_dvb.c:2877 +#, c-format msgid "input_dvb: invalid channel specification, defaulting to channel 0\n" msgstr "input_dvb: geçersiz kanal belirtimi, kanal 0(sıfır)'a dönülüyor.\n" -#: src/input/input_dvb.c:2873 +#: src/input/input_dvb.c:2889 +#, c-format msgid "" "input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-" "S)\n" -msgstr "input_dvb: dvb'nin mrl deÄŸeri belirtilmiÅŸ fakat alıcı QPSK (DVB-S) gibi gözükmemekte.\n" +msgstr "" +"input_dvb: dvb'nin mrl deÄŸeri belirtilmiÅŸ fakat alıcı QPSK (DVB-S) gibi " +"gözükmemekte.\n" -#: src/input/input_dvb.c:2893 +#: src/input/input_dvb.c:2909 +#, c-format msgid "" "input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-" "T)\n" -msgstr "input_dvb: dvbt'nin mrl deÄŸeri belirtilmiÅŸ fakat alıcı OFDM (DVB-T) gibi gözükmemekte.\n" +msgstr "" +"input_dvb: dvbt'nin mrl deÄŸeri belirtilmiÅŸ fakat alıcı OFDM (DVB-T) gibi " +"gözükmemekte.\n" -#: src/input/input_dvb.c:2916 +#: src/input/input_dvb.c:2932 +#, c-format msgid "" "input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-" "C)\n" -msgstr "input_dvb: dvbc'nin mrl deÄŸeri belirtilmiÅŸ fakat alıcı QAM (DVB-C) gibi gözükmemekte.\n" +msgstr "" +"input_dvb: dvbc'nin mrl deÄŸeri belirtilmiÅŸ fakat alıcı QAM (DVB-C) gibi " +"gözükmemekte.\n" -#: src/input/input_dvb.c:2942 +#: src/input/input_dvb.c:2958 +#, c-format msgid "" "input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-" "A)\n" -msgstr "input_dvb: dvba'nın mrl deÄŸeri belirtilmiÅŸ fakat alıcı ATSC (DVB-A) gibi gözükmemekte.\n" +msgstr "" +"input_dvb: dvba'nın mrl deÄŸeri belirtilmiÅŸ fakat alıcı ATSC (DVB-A) gibi " +"gözükmemekte.\n" -#: src/input/input_dvb.c:2977 +#: src/input/input_dvb.c:2993 #, c-format msgid "input_dvb: cannot open dvr device '%s'\n" msgstr "input_dvb: dvr aygıtını açamıyor '%s'\n" -#: src/input/input_dvb.c:2999 +#: src/input/input_dvb.c:3016 +#, c-format msgid "input_dvb: cannot create EPG updater thread\n" msgstr "input_dvb: EPG güncelleyici bağı yaratamıyor\n" -#: src/input/input_dvb.c:3061 +#: src/input/input_dvb.c:3078 msgid "use DVB 'center cutout' (zoom)" msgstr "DVB merkez kesmesini kullan (yakınlaÅŸtır)" -#: src/input/input_dvb.c:3062 +#: src/input/input_dvb.c:3079 msgid "" "This will allow fullscreen playback of 4:3 content transmitted in a 16:9 " "frame." -msgstr "Bu, 4:3 tam ekran oynatımı içeriÄŸinin 16:9 çerçevesinde gösterilmesine izin verecektır." +msgstr "" +"Bu, 4:3 tam ekran oynatımı içeriÄŸinin 16:9 çerçevesinde gösterilmesine izin " +"verecektır." -#: src/input/input_dvb.c:3155 +#: src/input/input_dvb.c:3172 msgid "DVB (Digital TV) input plugin" msgstr "DVB (Dijital TV) girdi eklentisi" -#: src/input/input_dvb.c:3284 +#: src/input/input_dvb.c:3304 msgid "Remember last DVB channel watched" msgstr "Son izlenen DVB kanalını hatırla" -#: src/input/input_dvb.c:3285 +#: src/input/input_dvb.c:3305 msgid "" "On autoplay, xine will remember and switch to the channel indicated in media." "dvb.last_channel. " @@ -1554,60 +1930,84 @@ msgstr "" "Otomatik çalmada, xine hatırlayacak ve ortamdaki ilgili kanala geçecektir. " "dvb.son_kanal." -#: src/input/input_dvb.c:3292 +#: src/input/input_dvb.c:3312 msgid "Last DVB channel viewed" msgstr "Görüntülenen son DVB kanalı" -#: src/input/input_dvb.c:3293 +#: src/input/input_dvb.c:3313 msgid "If enabled xine will remember and switch to this channel. " msgstr "EÄŸer etkinleÅŸtirilmiÅŸse, xine hatırlayacak ve bu kanala geçecektir." -#: src/input/input_dvb.c:3298 +#: src/input/input_dvb.c:3318 msgid "Number of seconds until tuning times out." msgstr "Ayarın süresinin dolmasına kalan saniyelerin sayısı" -#: src/input/input_dvb.c:3299 +#: src/input/input_dvb.c:3319 msgid "" "Leave at 0 means try forever. Greater than 0 means wait that many seconds to " "get a lock. Minimum is 5 seconds." -msgstr "0'da bırakmak, sürekli dene anlamına gelir. 0'dan büyükler kilitlenmeye kadar bekleyin anlamına gelir. En az olanı 5 saniyedir." +msgstr "" +"0'da bırakmak, sürekli dene anlamına gelir. 0'dan büyükler kilitlenmeye " +"kadar bekleyin anlamına gelir. En az olanı 5 saniyedir." -#: src/input/input_dvb.c:3305 +#: src/input/input_dvb.c:3325 msgid "Number of dvb card to use." msgstr "Kullanılacak dvb kartların sayısı." -#: src/input/input_dvb.c:3306 -msgid "Leave this at zero unless you really have more than 1 card in your system." +#: src/input/input_dvb.c:3326 +msgid "" +"Leave this at zero unless you really have more than 1 card in your system." msgstr "EÄŸer sisteminizde birden fazla kart yoksa bunu sıfırda bırakın." -#: src/input/input_dvd.c:588 +#: src/input/input_dvb.c:3334 +msgid "Enable the DVB GUI" +msgstr "" + +#: src/input/input_dvb.c:3335 +msgid "Enable the DVB GUI, mouse controlled recording and channel switching." +msgstr "" + +#: src/input/input_dvb.c:3341 +msgid "DVB Channels config file" +msgstr "" + +#: src/input/input_dvb.c:3342 +msgid "" +"DVB Channels config file to use instead of the ~/.xine/channels.conf file." +msgstr "" + +#: src/input/input_dvd.c:585 +#, c-format msgid "input_dvd: values of \\beta will give rise to dom!\n" msgstr "input_dvd: values of \\beta will give rise to dom!\n" -#: src/input/input_dvd.c:607 +#: src/input/input_dvd.c:604 #, c-format msgid "input_dvd: Error getting next block from DVD (%s)\n" msgstr "input_dvd: DVD (%s) ortamından sonraki blok alınamadı\n" -#: src/input/input_dvd.c:1497 +#: src/input/input_dvd.c:1494 +#, c-format msgid "input_dvd: Error opening DVD device\n" msgstr "input_dvd: DVD aygıtı açılırken hata oluÅŸtu\n" -#: src/input/input_dvd.c:1784 +#: src/input/input_dvd.c:1781 msgid "device used for DVD playback" msgstr "DVD oynatmak için kullanılacak aygıt" -#: src/input/input_dvd.c:1785 +#: src/input/input_dvd.c:1782 msgid "" "The path to the device, usually a DVD drive, which you intend to use for " "playing DVDs." -msgstr "Aygıta giden yol, genellikle DVDleri oynatmak amacıyla kullanılan DVD sürücüsü." +msgstr "" +"Aygıta giden yol, genellikle DVDleri oynatmak amacıyla kullanılan DVD " +"sürücüsü." -#: src/input/input_dvd.c:1803 +#: src/input/input_dvd.c:1800 msgid "raw device set up for DVD access" msgstr "DVD giriÅŸi için yeni aygıt ayarı" -#: src/input/input_dvd.c:1804 +#: src/input/input_dvd.c:1801 msgid "" "If this points to a raw device connected to your DVD device, xine will use " "the raw device for playback. This has the advantage of being slightly faster " @@ -1617,25 +2017,33 @@ msgid "" "once.\n" "See the documentation on raw device setup (man raw) for further information." msgstr "" -"EÄŸer bu, yeni aygıtın DVD aygıtına baÄŸlı olduÄŸunu gösterirse, xine çalmak için yeni aygıtı kullanacaktır. Bu daha hızlı olma konusunda bir avantajdır ve DVD verilerinin tutulduÄŸu önemli bellek içeriklerinin kaybolmasını önleyen blok belleÄŸin atlanmasını saÄŸlar. Aygıt belleÄŸinin DVD için bloke edilmesi kullanışsızdır, çünkü tüm DVD verisi sadece bir kez kullanılacaktır.\n" +"EÄŸer bu, yeni aygıtın DVD aygıtına baÄŸlı olduÄŸunu gösterirse, xine çalmak " +"için yeni aygıtı kullanacaktır. Bu daha hızlı olma konusunda bir avantajdır " +"ve DVD verilerinin tutulduÄŸu önemli bellek içeriklerinin kaybolmasını " +"önleyen blok belleÄŸin atlanmasını saÄŸlar. Aygıt belleÄŸinin DVD için bloke " +"edilmesi kullanışsızdır, çünkü tüm DVD verisi sadece bir kez " +"kullanılacaktır.\n" "Daha fazla bilgi için yeni aygıt ayarı (man raw) belgesine bakınız." -#: src/input/input_dvd.c:1817 +#: src/input/input_dvd.c:1814 msgid "CSS decryption method" msgstr "CSS ÅŸifre çözme yöntemi" -#: src/input/input_dvd.c:1818 +#: src/input/input_dvd.c:1815 msgid "" "Selects the decryption method libdvdcss will use to descramble copy " "protected DVDs. Try the various methods, if you have problems playing " "scrambled DVDs." -msgstr "Åžifreyi kırma yöntemini seçer, libdvdcss kopya korumalı DVDlerin ÅŸifrelerini çözmekte kullanılacaktır. EÄŸer ÅŸifreli DVD'leri çalmakta problemler yaÅŸarsanzı deÄŸiÅŸik yöntemler deneyin." +msgstr "" +"Åžifreyi kırma yöntemini seçer, libdvdcss kopya korumalı DVDlerin ÅŸifrelerini " +"çözmekte kullanılacaktır. EÄŸer ÅŸifreli DVD'leri çalmakta problemler " +"yaÅŸarsanzı deÄŸiÅŸik yöntemler deneyin." -#: src/input/input_dvd.c:1826 +#: src/input/input_dvd.c:1822 msgid "path to the title key cache" msgstr "anahtar bellek baÅŸlığı yolu" -#: src/input/input_dvd.c:1827 +#: src/input/input_dvd.c:1823 msgid "" "Since cracking the copy protection of scrambled DVDs can be quite time " "consuming, libdvdcss will cache the cracked keys in this directory.\n" @@ -1643,51 +2051,59 @@ msgid "" "will be created in this directory. Be sure to use a dedicated directory not " "used for anything but DVD key caching." msgstr "" -"Åžifre korumalı DVDlerin çözümlenmesi zaman alacağından, libdvdcss kırılmış anahtarların bu dizinde saklayacaktır.\n" -"Bu ayar güvenlik açısından kritiktir, çünkü bu dizinde denetlenemeyen adlara sahip dosyalar oluÅŸturulabilir. Bu önemli dizini DVD anahtar saklamanın dışında baÅŸka amaçlarla kullanmamaya özen gösterin." +"Åžifre korumalı DVDlerin çözümlenmesi zaman alacağından, libdvdcss kırılmış " +"anahtarların bu dizinde saklayacaktır.\n" +"Bu ayar güvenlik açısından kritiktir, çünkü bu dizinde denetlenemeyen adlara " +"sahip dosyalar oluÅŸturulabilir. Bu önemli dizini DVD anahtar saklamanın " +"dışında baÅŸka amaçlarla kullanmamaya özen gösterin." -#: src/input/input_dvd.c:1849 +#: src/input/input_dvd.c:1845 msgid "region the DVD player claims to be in (1 to 8)" msgstr "DVD çaların kapsadığı bölge (1 ile 8 arası)" -#: src/input/input_dvd.c:1850 +#: src/input/input_dvd.c:1846 msgid "" "This only needs to be changed if your DVD jumps to a screen complaining " "about a wrong region code. It has nothing to do with the region code set in " "DVD drives, this is purely software." -msgstr "EÄŸer DVDniz hatalı bölge kodunu ekranda gösterirse, sadece bu durumda gereklidir. Yazılımın özelliÄŸinden dolayı, DVD sürücülerine ayarlanan bölge kodları ile ilgili bir deÄŸiÅŸikli yapılamaz." +msgstr "" +"EÄŸer DVDniz hatalı bölge kodunu ekranda gösterirse, sadece bu durumda " +"gereklidir. Yazılımın özelliÄŸinden dolayı, DVD sürücülerine ayarlanan bölge " +"kodları ile ilgili bir deÄŸiÅŸikli yapılamaz." -#: src/input/input_dvd.c:1856 +#: src/input/input_dvd.c:1852 msgid "default language for DVD playback" msgstr "DVD oynatmak için öntanımlı dil" -#: src/input/input_dvd.c:1857 +#: src/input/input_dvd.c:1853 msgid "" "xine tries to use this language as a default for DVD playback. As far as the " "DVD supports it, menus and audio tracks will be presented in this language.\n" "The value must be a two character ISO639 language code." msgstr "" -"xine, ön tanımlı DVD çalma dili olarak bunu kullanmayı dener. DVD'nin desteklediÄŸi ölçüde, menüler ve ses izleri bu dilde sunulacaktır.\n" +"xine, ön tanımlı DVD çalma dili olarak bunu kullanmayı dener. DVD'nin " +"desteklediÄŸi ölçüde, menüler ve ses izleri bu dilde sunulacaktır.\n" "Dil kodu deÄŸerinin iki karakterli ISO639 dil kodu olması gereklidir." -#: src/input/input_dvd.c:1863 +#: src/input/input_dvd.c:1859 msgid "read-ahead caching" msgstr "tamponlama boyunca oku" -#: src/input/input_dvd.c:1864 +#: src/input/input_dvd.c:1860 msgid "" "xine can use a read ahead cache for DVD drive access.\n" "This may lead to jerky playback on slow drives, but it improves the impact " "of the DVD layer change on faster drives." msgstr "" "xine, DVD sürücü yolu için tamponlama boyunca oku özelliÄŸini kullanabilir.\n" -"Bu özellik, yavaÅŸ çalışan sürücülerde kötü çalmalara sebebiyet verebilir, fakat o daha hızlı sürücülerde DVD katman deÄŸiÅŸiminin etkisini güçlendirir." +"Bu özellik, yavaÅŸ çalışan sürücülerde kötü çalmalara sebebiyet verebilir, " +"fakat o daha hızlı sürücülerde DVD katman deÄŸiÅŸiminin etkisini güçlendirir." -#: src/input/input_dvd.c:1870 +#: src/input/input_dvd.c:1866 msgid "unit for the skip action" msgstr "atlama eylemi için birim" -#: src/input/input_dvd.c:1871 +#: src/input/input_dvd.c:1867 msgid "" "You can configure the behaviour when issuing a skip command (using the skip " "buttons for example). The individual values mean:\n" @@ -1705,22 +2121,27 @@ msgid "" "will skip a DVD title, which is a structural unit representing entire " "features on the DVD" msgstr "" -"Bir atlama komutunu kullanırken davranışı yapılandırlabilirsiniz (örneÄŸin atlama tuÅŸlarını kullanarak). Bireysel deÄŸerler ÅŸu anlama gelir:\n" +"Bir atlama komutunu kullanırken davranışı yapılandırlabilirsiniz (örneÄŸin " +"atlama tuÅŸlarını kullanarak). Bireysel deÄŸerler ÅŸu anlama gelir:\n" "\n" "program atla\n" -"Ses CD'sindeki içindekileri gösteren yapıya benzer ÅŸekilde görüntülenebilir bir ünite olan DVD programına atlayacaktır\n" -"\n " -"kısım atla\n" -"bir ses CD'sindeki iz iÅŸaretlerine benzeyen yapısal bir ünite olan DVD kısmına atlayacaktır, kısımlar programlarla uyumludur, fakat kısımlar programlardan daha büyük olabilirler.\n" +"Ses CD'sindeki içindekileri gösteren yapıya benzer ÅŸekilde görüntülenebilir " +"bir ünite olan DVD programına atlayacaktır\n" +"\n" +" kısım atla\n" +"bir ses CD'sindeki iz iÅŸaretlerine benzeyen yapısal bir ünite olan DVD " +"kısmına atlayacaktır, kısımlar programlarla uyumludur, fakat kısımlar " +"programlardan daha büyük olabilirler.\n" "\n" "baÅŸlığı atla\n" -"DVD'deki tüm özellikleri gösteren yapısal bir birim olan DVD başılığını atlayacaktır" +"DVD'deki tüm özellikleri gösteren yapısal bir birim olan DVD başılığını " +"atlayacaktır" -#: src/input/input_dvd.c:1886 +#: src/input/input_dvd.c:1882 msgid "unit for seeking" msgstr "arama birimi" -#: src/input/input_dvd.c:1887 +#: src/input/input_dvd.c:1883 msgid "" "You can configure the domain spanned by the seek slider. The individual " "values mean:\n" @@ -1733,19 +2154,21 @@ msgid "" "seeking will span a DVD program, which is a navigational unit representing a " "chapter of the current feature" msgstr "" -"Arama kaydıracı ile kullanılan alanı yapılandırabilirsiniz. KiÅŸisel deÄŸerlerin anlamları:\n" +"Arama kaydıracı ile kullanılan alanı yapılandırabilirsiniz. KiÅŸisel " +"deÄŸerlerin anlamları:\n" "\n" "program zincirinde ara\n" -"arama tüm DVD program zincirini baÄŸlayacaktır, geçerli özelliÄŸin tüm görüntü akışını gösteren gözlemsel bir birimdir bu\n" -"n " -"programda arama\n" -"arama tüm DVD program zincirini baÄŸlayacaktır, geçerli özelliÄŸin bölümlerini gösteren gözlemsel bir birimdir bu" +"arama tüm DVD program zincirini baÄŸlayacaktır, geçerli özelliÄŸin tüm görüntü " +"akışını gösteren gözlemsel bir birimdir bu\n" +"n programda arama\n" +"arama tüm DVD program zincirini baÄŸlayacaktır, geçerli özelliÄŸin bölümlerini " +"gösteren gözlemsel bir birimdir bu" -#: src/input/input_dvd.c:1898 +#: src/input/input_dvd.c:1894 msgid "play mode when title/chapter is given" msgstr "baÅŸlık/bölüm verildiÄŸindeki çalma kipi" -#: src/input/input_dvd.c:1899 +#: src/input/input_dvd.c:1895 msgid "" "You can configure the behaviour when playing a dvd from a given title/" "chapter (eg. using MRL 'dvd:/1.2'). The individual values mean:\n" @@ -1756,175 +2179,185 @@ msgid "" "one chapter\n" "play just the specified title/chapter and then stop" msgstr "" -"VerilmiÅŸ bir baÅŸlık/bölüm'den bir dvd çalarken davranış modelini yapılandırabilirsiniz (örneÄŸin MRL kullanıyor dvd:/1.2). Bireysel deÄŸerlerin anlamları:\n" +"VerilmiÅŸ bir baÅŸlık/bölüm'den bir dvd çalarken davranış modelini " +"yapılandırabilirsiniz (örneÄŸin MRL kullanıyor dvd:/1.2). Bireysel deÄŸerlerin " +"anlamları:\n" "\n" "tüm dvd\n" "tüm dvd'yi belirlenen konumdan baÅŸlayarak çal.\n" "bir bölüm\n" "sadece belirlenen baÅŸlık/bölüm'ü çal ve dur" -#: src/input/input_file.c:201 +#: src/input/input_file.c:209 #, c-format msgid "input_file: read error (%s)\n" msgstr "input_file: okuma hatası (%s)\n" -#: src/input/input_file.c:361 +#: src/input/input_file.c:369 #, c-format msgid "input_file: Permission denied: >%s<\n" msgstr "input_file: İzin verilmedi: >%s<\n" -#: src/input/input_file.c:365 +#: src/input/input_file.c:373 #, c-format msgid "input_file: File not found: >%s<\n" msgstr "input_file: Dosya bulunamadı: >%s<\n" -#: src/input/input_file.c:403 src/input/input_gnome_vfs.c:290 +#: src/input/input_file.c:411 src/input/input_gnome_vfs.c:295 #, c-format msgid "input_file: File empty: >%s<\n" msgstr "input_file: Dosya boÅŸ: >%s<\n" -#: src/input/input_file.c:624 +#: src/input/input_file.c:632 msgid "file input plugin" msgstr "dosya girdi eklentisi" -#: src/input/input_file.c:993 +#: src/input/input_file.c:991 msgid "file browsing start location" msgstr "dosya açma baÅŸlangıç konumu" -#: src/input/input_file.c:994 +#: src/input/input_file.c:992 msgid "The browser to select the file to play will start at this location." msgstr "Çalınması istenen dosyanın bu konumdan baÄŸlayacağını seçen tarayıcı." -#: src/input/input_file.c:1001 +#: src/input/input_file.c:999 msgid "list hidden files" msgstr "gizli dosyaları listele" -#: src/input/input_file.c:1002 +#: src/input/input_file.c:1000 msgid "" "If enabled, the browser to select the file to play will also show hidden " "files." -msgstr "EÄŸer etkinleÅŸtirilmiÅŸse, çalınacak dosyayı seçen tarayıcı aynı zamanda gizli dosyaları da gösterebilir." +msgstr "" +"EÄŸer etkinleÅŸtirilmiÅŸse, çalınacak dosyayı seçen tarayıcı aynı zamanda gizli " +"dosyaları da gösterebilir." -#: src/input/input_gnome_vfs.c:216 +#: src/input/input_gnome_vfs.c:221 msgid "gnome-vfs input plugin as shipped with xine" msgstr "xine ile birlikte gelen gnome vfs giriÅŸi" -#: src/input/input_http.c:176 +#: src/input/input_http.c:178 #, c-format msgid "input_http: gethostbyname(%s) failed: %s\n" msgstr "input_http: gethostbyname(%s) baÅŸarısız oldu: %s\n" -#: src/input/input_http.c:421 src/input/input_http.c:1002 +#: src/input/input_http.c:413 src/input/input_http.c:1008 #, c-format msgid "input_http: read error %d\n" msgstr "input_http: okuma hatası %d\n" -#: src/input/input_http.c:648 +#: src/input/input_http.c:652 msgid "Connecting HTTP server..." msgstr "HTTP sunucusuna baÄŸlanılıyor..." -#: src/input/input_http.c:840 +#: src/input/input_http.c:841 #, c-format msgid "input_http: invalid http answer\n" msgstr "input_http: geçersiz http yanıtı\n" -#: src/input/input_http.c:846 +#: src/input/input_http.c:847 #, c-format msgid "input_http: 3xx redirection: >%d %s<\n" msgstr "input_http: 3xx yeniden yönlendirme: >%d %s<\n" -#: src/input/input_http.c:851 src/input/input_http.c:857 -#: src/input/input_http.c:864 +#: src/input/input_http.c:852 src/input/input_http.c:858 +#: src/input/input_http.c:865 #, c-format msgid "input_http: http status not 2xx: >%d %s<\n" msgstr "input_http: http durumu 2xx deÄŸil: >%d %s<\n" -#: src/input/input_http.c:874 +#: src/input/input_http.c:875 #, c-format msgid "input_http: content length = %<PRIdMAX> bytes\n" msgstr "input_http: içerik büyüklüğü = %<PRIdMAX> byte\n" -#: src/input/input_http.c:957 +#: src/input/input_http.c:962 #, c-format msgid "input_http: buffer exhausted after %d bytes." msgstr "input_http: %d byte ardından önbellek boÅŸaltıldı." -#: src/input/input_http.c:1055 +#: src/input/input_http.c:1062 msgid "http input plugin" msgstr "http girdi eklentisi" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "HTTP proxy host" msgstr "HTTP vekil sunucu makinesi" -#: src/input/input_http.c:1121 +#: src/input/input_http.c:1124 msgid "The hostname of the HTTP proxy." msgstr "HTTP vekil sunucusu için makine adı." -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "HTTP proxy port" msgstr "HTTP vekil sunucu portu" -#: src/input/input_http.c:1125 +#: src/input/input_http.c:1128 msgid "The port number of the HTTP proxy." msgstr "HTTP vekil sunucusu için port numarası." -#: src/input/input_http.c:1135 +#: src/input/input_http.c:1138 msgid "HTTP proxy username" msgstr "HTTP vekil sunucu kullanıcı adı" -#: src/input/input_http.c:1136 +#: src/input/input_http.c:1139 msgid "The user name for the HTTP proxy." msgstr "HTTP vekil sunucusu için kullanıcı adı." -#: src/input/input_http.c:1139 +#: src/input/input_http.c:1142 msgid "HTTP proxy password" msgstr "HTTP vekil sunucu parolası" -#: src/input/input_http.c:1140 +#: src/input/input_http.c:1143 msgid "The password for the HTTP proxy." msgstr "HTTP vekil sunucusu için parola." -#: src/input/input_http.c:1143 +#: src/input/input_http.c:1146 msgid "Domains for which to ignore the HTTP proxy" msgstr "HTTP vekilini göz ardı etmek için alanlar" -#: src/input/input_http.c:1144 +#: src/input/input_http.c:1147 msgid "" "A comma-separated list of domain names for which the proxy is to be " "ignored.\n" "If a domain name is prefixed with '=' then it is treated as a host name only " "(full match required)." msgstr "" -"Vekilin göz ardı edilmesi için birbirinden virgülle ayrılan alan adları listesi.\n" -"EÄŸer bir alan adı '=' ile ön ek almışsa, o zaman ona sadece ana makina adı olarak bakmak gerekir (tam uyuÅŸum gereklidir)." +"Vekilin göz ardı edilmesi için birbirinden virgülle ayrılan alan adları " +"listesi.\n" +"EÄŸer bir alan adı '=' ile ön ek almışsa, o zaman ona sadece ana makina adı " +"olarak bakmak gerekir (tam uyuÅŸum gereklidir)." -#: src/input/input_mms.c:441 +#: src/input/input_mms.c:446 msgid "mms streaming input plugin" msgstr "mms yayın girdi eklentisi" -#: src/input/input_mms.c:477 src/input/librtsp/rtsp_session.c:91 +#: src/input/input_mms.c:482 src/input/librtsp/rtsp_session.c:91 msgid "network bandwidth" msgstr "aÄŸ bant geniÅŸliÄŸi" -#: src/input/input_mms.c:478 src/input/librtsp/rtsp_session.c:92 +#: src/input/input_mms.c:483 src/input/librtsp/rtsp_session.c:92 msgid "" "Specify the bandwidth of your internet connection here. This will be used " "when streaming servers offer different versions with different bandwidth " "requirements of the same stream." -msgstr "İnternet baÄŸlantınızın bant geniÅŸliÄŸini burada belirtiniz. Bu, yayın akışı sunucularının aynı yayın akışını farklı bant geniÅŸliÄŸi gereksinimleriyle önerdiklerinde kullanılacaktır." +msgstr "" +"İnternet baÄŸlantınızın bant geniÅŸliÄŸini burada belirtiniz. Bu, yayın akışı " +"sunucularının aynı yayın akışını farklı bant geniÅŸliÄŸi gereksinimleriyle " +"önerdiklerinde kullanılacaktır." -#: src/input/input_mms.c:487 +#: src/input/input_mms.c:492 msgid "MMS protocol" msgstr "MMS protokolü" -#: src/input/input_mms.c:488 +#: src/input/input_mms.c:493 msgid "" "Select the protocol to encapsulate MMS.\n" "TCP is better but you may need HTTP behind a firewall." msgstr "" "MMS için kullanılacak protokolü seçin.\n" -"TCP daha iyidir ancak bir güvenlik duvarı kullanıyorsanız HTTP seçmeniz gerekir." +"TCP daha iyidir ancak bir güvenlik duvarı kullanıyorsanız HTTP seçmeniz " +"gerekir." #: src/input/input_net.c:121 src/input/input_net.c:151 #, c-format @@ -1946,51 +2379,55 @@ msgstr "input_net: '%s' çözümlenemedi.\n" msgid "input_net: unable to connect to '%s'.\n" msgstr "input_net: '%s' konumuna baÄŸlanılamadı.\n" -#: src/input/input_net.c:508 +#: src/input/input_net.c:522 msgid "net input plugin as shipped with xine" msgstr "xine ile birlikte gelen aÄŸ giriÅŸi eklentisi" -#: src/input/input_pnm.c:262 +#: src/input/input_pnm.c:272 msgid "pnm streaming input plugin" msgstr "pnm yayın girdi eklentisi" -#: src/input/input_pvr.c:601 +#: src/input/input_pvr.c:589 #, c-format msgid "input_pvr: error creating pvr file (%s)\n" msgstr "input_pvr: pvr dosyası oluÅŸturma hatası (%s)\n" -#: src/input/input_pvr.c:758 +#: src/input/input_pvr.c:746 #, c-format msgid "input_pvr: error opening pvr file (%s)\n" msgstr "input_pvr: pvr dosyası açma hatası (%s)\n" -#: src/input/input_pvr.c:834 +#: src/input/input_pvr.c:822 #, c-format msgid "input_pvr: read error (%s)\n" msgstr "input_pvr: okuma hatası (%s)\n" -#: src/input/input_pvr.c:1150 src/input/input_pvr.c:1403 +#: src/input/input_pvr.c:1161 src/input/input_pvr.c:1417 #, c-format msgid "input_pvr: error opening device %s\n" msgstr "input_pvr: %s aygıtı açılamadı\n" -#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1409 +#: src/input/input_pvr.c:1167 src/input/input_pvr.c:1423 +#, c-format msgid "input_pvr: IVTV_IOC_G_CODEC failed, maybe API changed?\n" -msgstr "input_pvr: IVTV_IOC_G_CODEC baÅŸarısız oldu, API deÄŸiÅŸmiÅŸ olabilir mi?\n" +msgstr "" +"input_pvr: IVTV_IOC_G_CODEC baÅŸarısız oldu, API deÄŸiÅŸmiÅŸ olabilir mi?\n" -#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418 +#: src/input/input_pvr.c:1175 src/input/input_pvr.c:1432 +#, c-format msgid "input_pvr: IVTV_IOC_S_CODEC failed, maybe API changed?\n" -msgstr "input_pvr: IVTV_IOC_S_CODEC baÅŸarısız oldu, API deÄŸiÅŸmiÅŸ olabilir mi?\n" +msgstr "" +"input_pvr: IVTV_IOC_S_CODEC baÅŸarısız oldu, API deÄŸiÅŸmiÅŸ olabilir mi?\n" -#: src/input/input_pvr.c:1526 +#: src/input/input_pvr.c:1540 msgid "WinTV-PVR 250/350 input plugin" msgstr "WinTV-PVR 250/350 girdi eklentisi" -#: src/input/input_pvr.c:1552 +#: src/input/input_pvr.c:1566 msgid "device used for WinTV-PVR 250/350 (pvr plugin)" msgstr "WinTV-PVR 250/350 (pvr eklentisi) için kullanılan aygıt" -#: src/input/input_pvr.c:1553 +#: src/input/input_pvr.c:1567 msgid "The path to the device of your WinTV card." msgstr "WinTV kartınızın aygıt yolu." @@ -2026,7 +2463,8 @@ msgstr "%s iface için adres bulunamadı:%s\n" #: src/input/input_rtp.c:255 #, c-format msgid "setsockopt(IP_ADD_MEMBERSHIP) failed (multicast kernel?): %s.\n" -msgstr "setsockopt(IP_ADD_MEMBERSHIP) baÅŸarısız oldu (multicast kernel?): %s.\n" +msgstr "" +"setsockopt(IP_ADD_MEMBERSHIP) baÅŸarısız oldu (multicast kernel?): %s.\n" #: src/input/input_rtp.c:277 #, c-format @@ -2043,91 +2481,115 @@ msgstr "Buraya baÄŸlanamadı %s'.\n" msgid "recv(): %s.\n" msgstr "recv(): %s.\n" -#: src/input/input_rtp.c:630 +#: src/input/input_rtp.c:640 msgid "RTP: stopping reading thread...\n" msgstr "RTP: okuma iÅŸini durduruyor...\n" -#: src/input/input_rtp.c:633 +#: src/input/input_rtp.c:643 msgid "RTP: reading thread terminated\n" msgstr "RTP: okuma iÅŸi kapatıldı\n" -#: src/input/input_rtp.c:648 +#: src/input/input_rtp.c:658 #, c-format msgid "Opening >filename:%s port:%d interface:%s<\n" msgstr "Dosya adını >açıyor:%s baÄŸlantı noktası:%d arabirim:%s<\n" -#: src/input/input_rtp.c:665 +#: src/input/input_rtp.c:675 #, c-format msgid "input_rtp: can't create new thread (%s)\n" msgstr "input_rtp: yeni iÅŸ üretemez (%s)\n" -#: src/input/input_rtp.c:769 +#: src/input/input_rtp.c:779 msgid "RTP and UDP input plugin as shipped with xine" msgstr "xine ile birlikte gelen RTP ve UDP giriÅŸ eklentisi" -#: src/input/input_rtsp.c:284 +#: src/input/input_rtsp.c:293 msgid "rtsp streaming input plugin" msgstr "rtsp yayın girdi eklentisi" -#: src/input/input_smb.c:156 +#: src/input/input_smb.c:163 msgid "CIFS/SMB input plugin based on libsmbclient" msgstr "libsmbclient temelli CIFS/SMB girdi eklentisi" -#: src/input/input_stdin_fifo.c:164 +#: src/input/input_stdin_fifo.c:171 #, c-format msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n" msgstr "stdin: geri arama yapamaz! (%<PRIdMAX> > %<PRIdMAX>)\n" -#: src/input/input_stdin_fifo.c:252 +#: src/input/input_stdin_fifo.c:259 #, c-format msgid "stdin: failed to open '%s'\n" msgstr "stdin: '%s' açılamadı\n" -#: src/input/input_stdin_fifo.c:348 +#: src/input/input_stdin_fifo.c:357 msgid "stdin streaming input plugin" msgstr "stdin yayın girdi eklentisi" -#: src/input/input_v4l.c:379 +#: src/input/input_v4l.c:385 msgid "Buffer underrun..." msgstr "Tampon bellek zayıfladı..." -#: src/input/input_v4l.c:383 +#: src/input/input_v4l.c:389 msgid "Buffer overrun..." msgstr "Tampon bellek aşımı..." -#: src/input/input_v4l.c:386 +#: src/input/input_v4l.c:392 msgid "Adjusting..." msgstr "Ayarlanıyor..." -#: src/input/input_v4l.c:658 +#: src/input/input_v4l.c:671 +#, c-format msgid "Tuner name not found\n" msgstr "Tuner adı bulunamadı\n" -#: src/input/input_v4l.c:1874 +#: src/input/input_v4l.c:1870 msgid "v4l tv input plugin" msgstr "v4l tv girdi eklentisi" -#: src/input/input_v4l.c:1878 +#: src/input/input_v4l.c:1874 msgid "v4l radio input plugin" msgstr "v4l radyo girdi eklentisi" -#: src/input/input_v4l.c:1910 +#: src/input/input_v4l.c:1906 msgid "v4l video device" msgstr "v4l görüntü aygıtı" -#: src/input/input_v4l.c:1911 +#: src/input/input_v4l.c:1907 msgid "The path to your Video4Linux video device." msgstr "Video4Linux görüntü aygıtının yolu." -#: src/input/input_v4l.c:1936 +#: src/input/input_v4l.c:1912 +#, fuzzy +msgid "v4l ALSA audio input device" +msgstr "v4l radyo aygıtı" + +#: src/input/input_v4l.c:1913 +#, fuzzy +msgid "" +"The name of the audio device which corresponds to your Video4Linux video " +"device." +msgstr "Video4Linux görüntü aygıtının yolu." + +#: src/input/input_v4l.c:1918 +msgid "v4l TV standard" +msgstr "" + +#: src/input/input_v4l.c:1919 +msgid "" +"Selects the TV standard of the input signals. Either: AUTO, PAL, NTSC or " +"SECAM. " +msgstr "" + +#: src/input/input_v4l.c:1944 msgid "v4l radio device" msgstr "v4l radyo aygıtı" -#: src/input/input_v4l.c:1937 +#: src/input/input_v4l.c:1945 msgid "The path to your Video4Linux radio device." msgstr "Video4Linux radyo aygıtının yolu." #: src/input/input_vcd.c:847 +#, c-format msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n" msgstr "input_vcd: bozuk MRL. vcdo:/<track #> kullanın\n" @@ -2140,32 +2602,34 @@ msgstr "input_vcd: geçersiz iz %d (geçerli oran: 0 .. %d)\n" msgid "Video CD input plugin" msgstr "Video CD girdi eklentisi" -#: src/input/input_vcd.c:965 +#: src/input/input_vcd.c:974 #, c-format msgid "unable to open %s: %s.\n" msgstr "%s açılamadı: %s.\n" -#: src/input/input_vcd.c:1041 +#: src/input/input_vcd.c:1036 #, c-format msgid "input_vcd: unable to open %s: %s.\n" msgstr "input_vcd: %s açılamadı: %s.\n" -#: src/input/input_vcd.c:1095 +#: src/input/input_vcd.c:1084 msgid "device used for VCD playback" msgstr "VCD oynatmak için kullanılan aygıt" -#: src/input/input_vcd.c:1096 +#: src/input/input_vcd.c:1085 msgid "" "The path to the device, usually a CD or DVD drive, you intend to play your " "VideoCDs with." -msgstr "Video CD'lerinizi çalmak istediÄŸiniz ve genellikle CD veya DVD sürücü olarak bilinen aygıta giden yol." +msgstr "" +"Video CD'lerinizi çalmak istediÄŸiniz ve genellikle CD veya DVD sürücü " +"olarak bilinen aygıta giden yol." -#: src/input/librtsp/rtsp.c:448 +#: src/input/librtsp/rtsp.c:438 #, c-format msgid "rtsp: bad mrl: %s\n" msgstr "rtsp: bozuk mrl: %s\n" -#: src/input/librtsp/rtsp.c:508 +#: src/input/librtsp/rtsp.c:496 #, c-format msgid "rtsp: failed to connect to '%s'\n" msgstr "rtsp: '%s' konumuna baÄŸlanılamadı\n" @@ -2176,10 +2640,18 @@ msgid "rtsp_session: failed to connect to server %s\n" msgstr "rtsp_session: %s sunucusuna baÄŸlanılamadı\n" #: src/input/librtsp/rtsp_session.c:141 +#, c-format msgid "rtsp_session: session can not be established.\n" msgstr "rtsp_session: oturuma eriÅŸilemedi.\n" -#: src/input/librtsp/rtsp_session.c:159 +#: src/input/librtsp/rtsp_session.c:153 +#, fuzzy, c-format +msgid "" +"rtsp_session: rtsp server returned overly-large headers, session can not be " +"established.\n" +msgstr "rtsp_session: oturuma eriÅŸilemedi.\n" + +#: src/input/librtsp/rtsp_session.c:164 #, c-format msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n" msgstr "rtsp_session: rtsp sunucu tipi '%s' henüz desteklenmiyor. üzgünüm.\n" @@ -2189,44 +2661,45 @@ msgstr "rtsp_session: rtsp sunucu tipi '%s' henüz desteklenmiyor. üzgünüm.\n msgid "input_dvd: Device %s failed to open during eject calls\n" msgstr "input_dvd: eject çaÄŸrıları sırasında %s aygıtı açılamadı\n" -#: src/input/mms.c:559 +#: src/input/mms.c:561 msgid "Connecting MMS server (over tcp)..." msgstr "MMS sunucusuna baÄŸlanılıyor (tcp üzerinden)..." -#: src/input/mmsh.c:199 +#: src/input/mmsh.c:197 +#, c-format msgid "libmmsh: send error\n" msgstr "libmmsh: gönderme hatası\n" -#: src/input/mmsh.c:244 +#: src/input/mmsh.c:242 #, c-format msgid "libmmsh: bad response format\n" msgstr "libmmsh: kötü yanıt biçimi\n" -#: src/input/mmsh.c:250 +#: src/input/mmsh.c:248 #, c-format msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n" msgstr "libmmsh: 3xx yeniden yönlendirme uygulamaya eklenmedi: >%d %s<\n" -#: src/input/mmsh.c:257 +#: src/input/mmsh.c:255 #, c-format msgid "libmmsh: http status not 2xx: >%d %s<\n" msgstr "libmmsh: http durumu 2xx deÄŸil: >%d %s<\n" -#: src/input/mmsh.c:265 +#: src/input/mmsh.c:263 #, c-format msgid "libmmsh: Location redirection not implemented\n" msgstr "libmmsh: Konum yeniden yönlendirmesi uygulamaya eklenmedi\n" -#: src/input/mmsh.c:474 +#: src/input/mmsh.c:472 msgid "Connecting MMS server (over http)..." msgstr "MMS sunucuya baÄŸlanılıyor (http üzerinden)..." -#: src/input/mmsh.c:655 +#: src/input/mmsh.c:653 #, c-format msgid "invalid url\n" msgstr "geçersiz adres\n" -#: src/input/mmsh.c:660 +#: src/input/mmsh.c:658 #, c-format msgid "unsupported protocol\n" msgstr "desteklenmeyen protokol\n" @@ -2235,7 +2708,7 @@ msgstr "desteklenmeyen protokol\n" msgid "Buffering..." msgstr "ÖnbelleÄŸe alınıyor..." -#: src/input/pnm.c:615 +#: src/input/pnm.c:619 #, c-format msgid "" "input_pnm: got message from server while reading stream:\n" @@ -2244,12 +2717,13 @@ msgstr "" "input_pnm: yayın akışıniı okurken sunucdan mesaj geldi:\n" "%s\n" -#: src/input/pnm.c:753 +#: src/input/pnm.c:752 #, c-format msgid "input_pnm: failed to connect '%s'\n" msgstr "input_pnm: '%s' konumuna baÄŸlanılamadı\n" -#: src/input/pnm.c:764 +#: src/input/pnm.c:763 +#, c-format msgid "input_pnm: failed to set up stream\n" msgstr "input_pnm: akış ayarlaması baÅŸarısız oldu\n" @@ -2289,106 +2763,118 @@ msgstr "Bunun yukarıdakine dönüştürülmesi gerekirdi" msgid "failed to find a device with a VCD" msgstr "VCD içeren aygıt bulunamadı" -#: src/input/vcd/xineplug_inp_vcd.c:328 +#: src/input/vcd/xineplug_inp_vcd.c:326 msgid "was passed a null class parameter" msgstr "geçersiz sınıf parametresi atlandı" -#: src/input/vcd/xineplug_inp_vcd.c:990 +#: src/input/vcd/xineplug_inp_vcd.c:988 msgid "Invalid current entry type" msgstr "Geçersiz güncel girdi tipi" -#: src/input/vcd/xineplug_inp_vcd.c:1014 -msgid "Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " -msgstr "Åžunlar için PBC ile Video CD eklentisi ve desteÄŸi: (X)VCD, (X)SVCD, HQVCD, CVD ... " +#: src/input/vcd/xineplug_inp_vcd.c:1012 +msgid "" +"Video CD plugin with PBC and support for: (X)VCD, (X)SVCD, HQVCD, CVD ... " +msgstr "" +"Åžunlar için PBC ile Video CD eklentisi ve desteÄŸi: (X)VCD, (X)SVCD, HQVCD, " +"CVD ... " -#: src/input/vcd/xineplug_inp_vcd.c:1115 +#: src/input/vcd/xineplug_inp_vcd.c:1113 msgid "selection has no RETURN entry" msgstr "seçim hiç RETURN giriÅŸe sahip deÄŸil" -#: src/input/vcd/xineplug_inp_vcd.c:1144 +#: src/input/vcd/xineplug_inp_vcd.c:1142 msgid "DEFAULT selected, but PBC is not on." msgstr "DEFAULT seçili, fakat PBC açık deÄŸil." -#: src/input/vcd/xineplug_inp_vcd.c:1149 +#: src/input/vcd/xineplug_inp_vcd.c:1147 msgid "selection has no NEXT entry" msgstr "seçim hiç NEXT giriÅŸe sahip deÄŸil" -#: src/input/vcd/xineplug_inp_vcd.c:1157 +#: src/input/vcd/xineplug_inp_vcd.c:1155 msgid "selection has no PREVIOUS entry" msgstr "seçim hiç PREVIOUS giriÅŸe sahip deÄŸil" -#: src/input/vcd/xineplug_inp_vcd.c:1164 +#: src/input/vcd/xineplug_inp_vcd.c:1162 msgid "Unknown event type: " msgstr "Bilinmeyen olay tipi: " -#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507 +#: src/input/vcd/xineplug_inp_vcd.c:1458 src/input/vcd/xineplug_inp_vcd.c:1505 msgid "The above message had unknown vcdimager log level" msgstr "Yukarıdaki ileti bilinmeyen vcdimager günlük seviyesine sahip" -#: src/input/vcd/xineplug_inp_vcd.c:1838 +#: src/input/vcd/xineplug_inp_vcd.c:1836 msgid "VCD default type to use on autoplay" msgstr "Otomatik çalmayı kullanmak için VCD öntanımlı türü" -#: src/input/vcd/xineplug_inp_vcd.c:1839 +#: src/input/vcd/xineplug_inp_vcd.c:1837 msgid "" "The VCD play unit to use when none is specified in an MRL, e.g. vcd:// or " "vcd:///dev/dvd:" msgstr "" -"Bir MRL'de hiçbirinin belirtilmediÄŸi konumu kullanan VCD çalma birimi, örn. vcd:// veya " -"vcd:///dev/dvd:" +"Bir MRL'de hiçbirinin belirtilmediÄŸi konumu kullanan VCD çalma birimi, örn. " +"vcd:// veya vcd:///dev/dvd:" -#: src/input/vcd/xineplug_inp_vcd.c:1849 +#: src/input/vcd/xineplug_inp_vcd.c:1847 msgid "CD-ROM drive used for VCD when none given" msgstr "Aksi belirtilmedikçe CD-ROM sürücüsü VCD için kullanılanacak" -#: src/input/vcd/xineplug_inp_vcd.c:1850 +#: src/input/vcd/xineplug_inp_vcd.c:1848 msgid "" "What to use if no drive specified. If the setting is empty, xine will scan " "for CD drives." -msgstr "EÄŸer hiç sürücü belirtilmemiÅŸse ne kullanmalı. EÄŸer ayarlar boÅŸ ise, xine CD sürücülerini bulmak üzere taramaya baÅŸlayacak." +msgstr "" +"EÄŸer hiç sürücü belirtilmemiÅŸse ne kullanmalı. EÄŸer ayarlar boÅŸ ise, xine CD " +"sürücülerini bulmak üzere taramaya baÅŸlayacak." -#: src/input/vcd/xineplug_inp_vcd.c:1860 +#: src/input/vcd/xineplug_inp_vcd.c:1858 msgid "VCD position slider range" msgstr "VCD konumu kaydırma alanı" -#: src/input/vcd/xineplug_inp_vcd.c:1861 -msgid "range that the stream playback position slider represents playing a VCD." -msgstr "akış çalma konumu kaydırma alanının bir VCD çalmakta olduÄŸunu belirten bölge." +#: src/input/vcd/xineplug_inp_vcd.c:1859 +msgid "" +"range that the stream playback position slider represents playing a VCD." +msgstr "" +"akış çalma konumu kaydırma alanının bir VCD çalmakta olduÄŸunu belirten bölge." -#: src/input/vcd/xineplug_inp_vcd.c:1869 +#: src/input/vcd/xineplug_inp_vcd.c:1867 msgid "VCD read-ahead caching?" msgstr "Bellekleme yerine doÄŸrudan VCD'yi okusun mu?" -#: src/input/vcd/xineplug_inp_vcd.c:1870 +#: src/input/vcd/xineplug_inp_vcd.c:1868 msgid "Class may lead to jerky playback on low-end machines." msgstr "Son-kullanıcı cihazlarında sınıf, kötü çalma sonuçlarına sebep olur." -#: src/input/vcd/xineplug_inp_vcd.c:1880 +#: src/input/vcd/xineplug_inp_vcd.c:1878 msgid "automatically advance VCD track/entry" msgstr "VCD iz/giriÅŸ yapılarında otomatik ilerleme" -#: src/input/vcd/xineplug_inp_vcd.c:1881 +#: src/input/vcd/xineplug_inp_vcd.c:1879 msgid "" "If enabled, we should automatically advance to the next entry or track. Used " "only when playback control (PBC) is disabled." -msgstr "EÄŸer etkinleÅŸtirilmiÅŸse, otomatik olarak sonraki giriÅŸ veya ize geçebiliriz. Bu özellik, sadece eÄŸer çalma denetimi (PBC) devre dışı ise kullanılır." +msgstr "" +"EÄŸer etkinleÅŸtirilmiÅŸse, otomatik olarak sonraki giriÅŸ veya ize geçebiliriz. " +"Bu özellik, sadece eÄŸer çalma denetimi (PBC) devre dışı ise kullanılır." -#: src/input/vcd/xineplug_inp_vcd.c:1890 +#: src/input/vcd/xineplug_inp_vcd.c:1888 msgid "show 'rejected' VCD LIDs" msgstr "reddedilen VCD'leri göster" -#: src/input/vcd/xineplug_inp_vcd.c:1891 +#: src/input/vcd/xineplug_inp_vcd.c:1889 msgid "" "Some playback list IDs (LIDs) are marked not showable, but you can see them " "in the MRL list if this is set. Rejected entries are marked with an asterisk " "(*) appended to the MRL." -msgstr "Bazı çalma listeleri gösterilemez olarak iÅŸaretlenmiÅŸtir, fakat onları eÄŸer ayarlanmışsa MRL listesinde görebilirsiniz. Reddedilen girdiler yıldız (*) ile iÅŸaretlenmiÅŸ olup MRL'ye eklenmiÅŸtir." +msgstr "" +"Bazı çalma listeleri gösterilemez olarak iÅŸaretlenmiÅŸtir, fakat onları eÄŸer " +"ayarlanmışsa MRL listesinde görebilirsiniz. Reddedilen girdiler yıldız (*) " +"ile iÅŸaretlenmiÅŸ olup MRL'ye eklenmiÅŸtir." -#: src/input/vcd/xineplug_inp_vcd.c:1902 +#: src/input/vcd/xineplug_inp_vcd.c:1900 msgid "VCD format string for display banner" msgstr "BaÅŸlığı görüntülemen için VCD kipi dizgesi" -#: src/input/vcd/xineplug_inp_vcd.c:1903 +#: src/input/vcd/xineplug_inp_vcd.c:1901 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are:\n" @@ -2408,8 +2894,8 @@ msgid "" " A number between 1 and the volume count.\n" " %% : a %\n" msgstr "" -"GUI BaÅŸlığı'nda kullanılan VCD kipi. Unix tarih komutuna benzer. Kip belirteci yüzde iÅŸaretiyle baÅŸlar. Belirteçler şöyledir: " -"\n" +"GUI BaÅŸlığı'nda kullanılan VCD kipi. Unix tarih komutuna benzer. Kip " +"belirteci yüzde iÅŸaretiyle baÅŸlar. Belirteçler şöyledir: \n" " %A : Albüm bilgisi\n" " %C : VCD ses seviyesi sayacı - seçimdeki CD'lerin numarası.\n" " %c : VCD ses seviyesi numarası - seçimdeki CD'nin sayısı.\n" @@ -2420,31 +2906,31 @@ msgstr "" " %p : Hazırlayıcı kimliÄŸi\n" " %S : eÄŸer bir kesitte isek (menüdeysek), kesitin türü\n" " %T : İz numarası\n" -" %V : Ses ayarı kimliÄŸi\\ " -" %v : Ses kimliÄŸi\n" +" %V : Ses ayarı kimliÄŸi\\ %v : Ses kimliÄŸi\n" ".......Ses ayarı sayısı ile 1 arası bir sayı.\n" " %% : a %\n" -#: src/input/vcd/xineplug_inp_vcd.c:1928 +#: src/input/vcd/xineplug_inp_vcd.c:1926 msgid "VCD format string for stream comment field" msgstr "Yayın akışı yorum alanı için VCD kipi dizgesi" -#: src/input/vcd/xineplug_inp_vcd.c:1929 +#: src/input/vcd/xineplug_inp_vcd.c:1927 msgid "" "VCD format used in the GUI Title. Similar to the Unix date command. Format " "specifiers start with a percent sign. Specifiers are %A, %C, %c, %F, %I, %L, " "%N, %P, %p, %S, %T, %V, %v, and %%.\n" "See the help for the title_format for the meanings of these." msgstr "" -"GUI BaÅŸlığı'nda kullanılan VCD kipi. Unix tarih komutuna benzer. Kip belirteci yüzde iÅŸaretiyle baÅŸlar. Belirteçler şöyledir: %A, %C, %c, %F, %I, %L, " -"%N, %P, %p, %S, %T, %V, %v, and %%.\n" +"GUI BaÅŸlığı'nda kullanılan VCD kipi. Unix tarih komutuna benzer. Kip " +"belirteci yüzde iÅŸaretiyle baÅŸlar. Belirteçler şöyledir: %A, %C, %c, %F, %I, " +"%L, %N, %P, %p, %S, %T, %V, %v, and %%.\n" "Bunların anlamları için baÅŸlık_kipi yardım dosyasına bakınız." -#: src/input/vcd/xineplug_inp_vcd.c:1941 +#: src/input/vcd/xineplug_inp_vcd.c:1939 msgid "VCD debug flag mask" msgstr "VCD hata ayıklaması bayrak maskesi" -#: src/input/vcd/xineplug_inp_vcd.c:1942 +#: src/input/vcd/xineplug_inp_vcd.c:1940 msgid "" "For tracking down bugs in the VCD plugin. Mask values are:\n" " 1: Meta information\n" @@ -2460,7 +2946,8 @@ msgid "" "1024: Still-frame\n" "2048: Debugging from VCDINFO\n" msgstr "" -"VCD eklentilerindeki hataların izlerini sürmek için, Maske deÄŸerleri ÅŸunlardır:\n" +"VCD eklentilerindeki hataların izlerini sürmek için, Maske deÄŸerleri " +"ÅŸunlardır:\n" "...1: Meta bilgisi\n" "...2: giriÅŸ (klavye/fare) olayları\n" "...4: MRL incelemesi\n" @@ -2474,7 +2961,8 @@ msgstr "" "1024: DonmuÅŸ kare\n" "2048: VCDINFO'dan hata ayıklama\n" -#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:548 +#: src/liba52/xine_a52_decoder.c:757 src/libdts/xine_dts_decoder.c:556 +#, c-format msgid "HELP! a mono-only audio driver?!\n" msgstr "YARDIM! sadece mono olan bir ses sürücüsü mü?!\n" @@ -2488,7 +2976,11 @@ msgid "" "the advantage of the audio being already decoded for the specified volume, " "so later operations like channel downmixing will work on an audio stream of " "the given volume." -msgstr "A/52 ses ile, sesi kodlama seviyesinde deÄŸiÅŸtirebilirsiniz. Bu özel bir ses ÅŸiddeti için ayarlanmış olan ses kaynakları açısından bir avantajdır, böylece daha sonra yapacağınız kanalın ses yayın akışlarının ses dengelerinin ayarlanması sırasında bu iÅŸinize yarayacaktır." +msgstr "" +"A/52 ses ile, sesi kodlama seviyesinde deÄŸiÅŸtirebilirsiniz. Bu özel bir ses " +"ÅŸiddeti için ayarlanmış olan ses kaynakları açısından bir avantajdır, " +"böylece daha sonra yapacağınız kanalın ses yayın akışlarının ses " +"dengelerinin ayarlanması sırasında bu iÅŸinize yarayacaktır." #: src/liba52/xine_a52_decoder.c:829 msgid "use A/52 dynamic range compression" @@ -2499,7 +2991,10 @@ msgid "" "Dynamic range compression limits the dynamic range of the audio. This means " "making the loud sounds softer, and the soft sounds louder, so you can more " "easily listen to the audio in a noisy environment without disturbing anyone." -msgstr "Dinamik alan sıkıştırma sesin dinamik boyunu sınırlar. Bu yüksek seslerin yumuÅŸak ve yumuÅŸak seslerin yüksek olması demektir ki, bu sayede müziÄŸi kimseyi rahatsız etmeden gürültülü bir ortamda rahatlıkla dinleyebilirsiniz." +msgstr "" +"Dinamik alan sıkıştırma sesin dinamik boyunu sınırlar. Bu yüksek seslerin " +"yumuÅŸak ve yumuÅŸak seslerin yüksek olması demektir ki, bu sayede müziÄŸi " +"kimseyi rahatsız etmeden gürültülü bir ortamda rahatlıkla dinleyebilirsiniz." #: src/liba52/xine_a52_decoder.c:837 msgid "downmix audio to 2 channel surround stereo" @@ -2511,149 +3006,39 @@ msgid "" "two speakers or a surround decoder or amplifier which does some sort of " "matrix surround decoding like prologic, you should enable this option so " "that the additional channels are mixed into the stereo signal." -msgstr "Çokkanallı surround bir ses dinlemek isteyip de, sadece iki hoparlörünüz veya surround kod çözücünüz veya prologic gibi bir matrix surround kod çözümleme imkanınız varsa, bu ek kanalların stereo sinyale çevrilebilmesi için bu seçeneÄŸi etkin hale getirmelisiniz" +msgstr "" +"Çokkanallı surround bir ses dinlemek isteyip de, sadece iki hoparlörünüz " +"veya surround kod çözücünüz veya prologic gibi bir matrix surround kod " +"çözümleme imkanınız varsa, bu ek kanalların stereo sinyale çevrilebilmesi " +"için bu seçeneÄŸi etkin hale getirmelisiniz" -#: src/libfaad/xine_faad_decoder.c:128 +#: src/libfaad/xine_faad_decoder.c:132 +#, c-format msgid "libfaad: libfaad NeAACDecOpen() failed.\n" msgstr "libfaad: libfaad NeAACDecOpen() baÅŸarılamadı.\n" -#: src/libfaad/xine_faad_decoder.c:137 +#: src/libfaad/xine_faad_decoder.c:141 +#, c-format msgid "libfaad: libfaad NeAACDecInit2 failed.\n" msgstr "libfaad: libfaad NeAACDecInit2 baÅŸarılamadı.\n" -#: src/libfaad/xine_faad_decoder.c:148 +#: src/libfaad/xine_faad_decoder.c:152 +#, c-format msgid "libfaad: libfaad NeAACDecInit failed.\n" msgstr "libfaad: libfaad NeAACDecInit baÅŸarılamadı.\n" -#: src/libffmpeg/ff_audio_decoder.c:117 -#, c-format -msgid "ffmpeg_audio_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_audio_dec: tampon belleÄŸi %d seviyesine taÅŸmayı önlemek için arttırıyor.\n" - -#: src/libffmpeg/ff_audio_decoder.c:161 -#, c-format -msgid "ffmpeg_audio_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "ffmpeg_audio_dec: 0x%X türü dışında ffmpeg kod çözücü bulamıyor\n" - -#: src/libffmpeg/ff_audio_decoder.c:253 -msgid "ffmpeg_audio_dec: trying to open null codec\n" -msgstr "ffmpeg_audio_dec: boÅŸ kodu açmaya çalışıyor\n" - -#: src/libffmpeg/ff_audio_decoder.c:262 -msgid "ffmpeg_audio_dec: couldn't open decoder\n" -msgstr "ffmpeg_audio_dec: kod çözücüyü açamıyor\n" - -#: src/libffmpeg/ff_dvaudio_decoder.c:283 -#, c-format -msgid "dvaudio: increasing buffer to %d to avoid overflow.\n" -msgstr "dvaudio: taÅŸmayı önlemek için tampon belleÄŸi %d seviyesine çıkartıyor.\n" - -#: src/libffmpeg/ff_video_decoder.c:156 -msgid "ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: desteklenmeyen çerçeve kipi, DR1 devre dışı.\n" - -#: src/libffmpeg/ff_video_decoder.c:174 -msgid "ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n" -msgstr "ffmpeg_video_dec: desteklenmeyen çerçeve boyutları, DR1 devre dışı.\n" - -#: src/libffmpeg/ff_video_decoder.c:338 -#, c-format -msgid "ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n" -msgstr "ffmpeg_video_dec: 0x%Xtürü için ffmpeg kod çözücüyü bulamıyor\n" - -#: src/libffmpeg/ff_video_decoder.c:367 -msgid "ffmpeg_video_dec: couldn't open decoder\n" -msgstr "ffmpeg_video_dec: kod çözücüyü açamıyor\n" - -#: src/libffmpeg/ff_video_decoder.c:408 -msgid "ffmpeg_video_dec: direct rendering enabled\n" -msgstr "ffmpeg_video_dec: doÄŸrudan iÅŸleme etkin\n" - -#: src/libffmpeg/ff_video_decoder.c:836 -#, c-format -msgid "ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n" -msgstr "ffmpeg_video_dec: taÅŸmayı önlemek için tampon belleÄŸi %d seviyesine yükseltiyor.\n" - -#: src/libffmpeg/ff_video_decoder.c:1562 -msgid "MPEG-4 postprocessing quality" -msgstr "MPEG 4 iÅŸleme kalitesi" - -#: src/libffmpeg/ff_video_decoder.c:1563 -msgid "" -"You can adjust the amount of post processing applied to MPEG-4 video.\n" -"Higher values result in better quality, but need more CPU. Lower values may " -"result in image defects like block artifacts. For high quality content, too " -"heavy post processing can actually make the image worse by blurring it too " -"much." -msgstr "" -"MPEG 4 görüntüye uygulanan iÅŸlemenin oranını ayarlayabilirsiniz.\n" -"Yüksek deÄŸerler daha iyi sonuç verir, fakat daha çok iÅŸlemci gücü gerektirir. Düşük deÄŸerler görüntü bozulmalarınına sebebiyet verir. Yüksek kalite içeriÄŸi için, ağır iÅŸleme iÅŸlemleri doÄŸal olarak onun netliÄŸinin bozulmasına neden olabilir ve görüntünün kötüleÅŸmesi sonucunu doÄŸurabilir." - -#: src/libffmpeg/ff_video_decoder.c:1571 -msgid "FFmpeg video decoding thread count" -msgstr "FFmpeg görüntü kodlaması iÅŸ sayısı" - -#: src/libffmpeg/ff_video_decoder.c:1572 -msgid "" -"You can adjust the number of video decoding threads which FFmpeg may use.\n" -"Higher values should speed up decoding but it depends on the codec used " -"whether parallel decoding is supported. A rule of thumb is to have one " -"decoding thread per logical CPU (typically 1 to 4). A change will take " -"effect with playing the next stream." -msgstr "" -"FFmpeg'nin kullanabileceÄŸi görüntü kodlama iÅŸlerinin sayılarını ayarlayabilirsiniz.\n" -"Yüksek deÄŸerler kodlama iÅŸleminin hızını yükseltir fakat bu kodlamada paralel kodlamanın yapılıp yapılmadığıyla da baÄŸlantılıdır. Mimari kuralına göre mantıksal iÅŸlemci başına bir adet kodlama iÅŸlemi yapılmalıdır (tipik olarak 1den14'e kadar). Bu deÄŸiÅŸim sonraki yayın akışında etkili olacaktır." - -#: src/libffmpeg/ffmpeg_encoder.c:165 -msgid "libavcodec mpeg output bitrate (kbit/s)" -msgstr "libavcodec mpeg çıkış bit oranı (kbit/s)" - -#: src/libffmpeg/ffmpeg_encoder.c:166 -msgid "" -"The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode. " -"Higher values will increase quality and CPU usage.\n" -"This setting is only considered, when constant quality mode is disabled." -msgstr "" -"libavcodec mpeg çıkış bit oranı, DXR3 kodlama kipini kullanmalıdır. Yüksek deÄŸerler kaliteyi ve iÅŸlemci kullanımını yükseltir.\n" -"Bu ayar sadece sabit kalite kipi devre dışı ise etkilidir." - -#: src/libffmpeg/ffmpeg_encoder.c:173 -msgid "constant quality mode" -msgstr "sabit kalite kipi" - -#: src/libffmpeg/ffmpeg_encoder.c:174 -msgid "" -"When enabled, libavcodec will use a constant quality mode by dynamically " -"compressing the images based on their complexity. When disabled, libavcodec " -"will use constant bitrate mode." -msgstr "EtkinleÅŸtirildiÄŸinde libavcodec, görüntünün karmaşık yapısına göre dinamik olarak sıkıştırılmış sabit kalite kipini kullanacaktır " - -#: src/libffmpeg/ffmpeg_encoder.c:181 -msgid "minimum compression" -msgstr "en düşük sıkıştırma" - -#: src/libffmpeg/ffmpeg_encoder.c:182 -msgid "The minimum compression to apply to an image in constant quality mode." -msgstr "Sabit kalite kipindeki bir resme uygulanacak ola en düşük sıkıştırma." - -#: src/libffmpeg/ffmpeg_encoder.c:187 -msgid "maximum quantizer" -msgstr "en yüksek nicelikler" - -#: src/libffmpeg/ffmpeg_encoder.c:188 -msgid "The maximum compression to apply to an image in constant quality mode." -msgstr "Sabit kalite kipindeki bir resme uygulanacak ola en yüksek sıkıştırma." - #: src/libmusepack/xine_musepack_decoder.c:239 #, c-format msgid "libmusepack: mpc_streaminfo_read failed: %d\n" msgstr "libmusepack: mpc_streaminfo_read baÅŸarılamadı: %d\n" #: src/libmusepack/xine_musepack_decoder.c:313 +#, c-format msgid "libmusepack: data after last frame ignored\n" msgstr "libmusepack: son çerçeveden sonraki veri görmezden gelindi\n" #: src/libmusepack/xine_musepack_decoder.c:324 +#, c-format msgid "libmusepack: mpc_decoder_initialise failed\n" msgstr "libmusepack: mpc_decoder_initialise baÅŸarılamadı\n" @@ -2674,165 +3059,194 @@ msgid "" "\"drvc.so\" in it. If xine can find the RealPlayer codecs, it will use them " "to decode RealPlayer content for you. Consult the xine FAQ for more " "information on how to install the codecs." -msgstr "EÄŸer RealPlayer yüklüyse, buraya onun kod dizinini belirtiniz. Kod dizinini \"drvc.so\" dosyasını arayarak kolayca bulabilirisiniz. EÄŸer xine, RealPlayer kodlarını bulursa, onu RealPlayer kodlarını sizin için çözmek üzere kullanacaktır. Kodların yüklenmesi hakkında daha fazla bilgi için SSS baÅŸvrunuz." +msgstr "" +"EÄŸer RealPlayer yüklüyse, buraya onun kod dizinini belirtiniz. Kod dizinini " +"\"drvc.so\" dosyasını arayarak kolayca bulabilirisiniz. EÄŸer xine, " +"RealPlayer kodlarını bulursa, onu RealPlayer kodlarını sizin için çözmek " +"üzere kullanacaktır. Kodların yüklenmesi hakkında daha fazla bilgi için SSS " +"baÅŸvrunuz." -#: src/libreal/xine_real_video_decoder.c:162 +#: src/libreal/xine_real_video_decoder.c:170 +#, c-format msgid "libreal: Error resolving symbols! (version incompatibility?)\n" msgstr "libreal: Simgeleri çözmede hata! (sürüm uyumu?)\n" -#: src/libreal/xine_real_audio_decoder.c:128 +#: src/libreal/xine_real_audio_decoder.c:130 #, c-format msgid "libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n" msgstr "libareal: (ses) Simgeleri çözümleyemiyor - uyumsuz dll: %s\n" -#: src/libreal/xine_real_audio_decoder.c:285 +#: src/libreal/xine_real_audio_decoder.c:288 #, c-format msgid "libareal: decoder init failed, error code: 0x%x\n" msgstr "libareal: kod çözücü init baÅŸarılamadı, hata kodu: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:299 +#: src/libreal/xine_real_audio_decoder.c:302 #, c-format msgid "libareal: decoder flavor setup failed, error code: 0x%x\n" msgstr "libareal: kod çözücü yapısal ayarı baÅŸarılamadı, hata kodu: 0x%x\n" -#: src/libreal/xine_real_audio_decoder.c:336 +#: src/libreal/xine_real_audio_decoder.c:339 +#, c-format msgid "libareal: oups, real can do more than 2 channels ?\n" msgstr "libareal: ops, real 2 kanaldan daha fazlasıyla baÅŸ edebilir ?\n" -#: src/libspucc/xine_cc_decoder.c:189 +#: src/libspucc/xine_cc_decoder.c:195 msgid "display closed captions in MPEG-2 streams" msgstr "MPEG yayın akışlarında kapalı baÅŸlıkları görüntüle" -#: src/libspucc/xine_cc_decoder.c:190 -msgid "Closed Captions are subtitles mostly meant to help the hearing impaired." -msgstr "Kapalı BaÅŸlıklar daha çok duyma özürlülere yardımcı olmayı amaçlayan altyazılardır." +#: src/libspucc/xine_cc_decoder.c:196 +msgid "" +"Closed Captions are subtitles mostly meant to help the hearing impaired." +msgstr "" +"Kapalı BaÅŸlıklar daha çok duyma özürlülere yardımcı olmayı amaçlayan " +"altyazılardır." -#: src/libspucc/xine_cc_decoder.c:197 +#: src/libspucc/xine_cc_decoder.c:203 msgid "closed-captioning foreground/background scheme" msgstr "kapalı baÅŸlık ön/arka ÅŸeması" -#: src/libspucc/xine_cc_decoder.c:198 +#: src/libspucc/xine_cc_decoder.c:204 msgid "Choose your favourite rendering of the closed captions." msgstr "Sık kullandığınız kapalı baÅŸlık iÅŸlemini seçin." -#: src/libspucc/xine_cc_decoder.c:204 +#: src/libspucc/xine_cc_decoder.c:210 msgid "standard closed captioning font" msgstr "standart kapalı baÅŸlık yazı tipi" -#: src/libspucc/xine_cc_decoder.c:205 +#: src/libspucc/xine_cc_decoder.c:211 msgid "Choose the font for standard closed captions text." msgstr "Standart kapalı baÅŸlık metni için yazı tipini seçin." -#: src/libspucc/xine_cc_decoder.c:211 +#: src/libspucc/xine_cc_decoder.c:217 msgid "italic closed captioning font" msgstr "italik kapalı baÅŸlık yazı tipi" -#: src/libspucc/xine_cc_decoder.c:212 +#: src/libspucc/xine_cc_decoder.c:218 msgid "Choose the font for italic closed captions text." msgstr "İtalik kapalı baÅŸlık metni için yazı tipini seçin." -#: src/libspucc/xine_cc_decoder.c:218 +#: src/libspucc/xine_cc_decoder.c:224 msgid "closed captioning font size" msgstr "Kapalı baÅŸlık yazı tipi boyutu" -#: src/libspucc/xine_cc_decoder.c:219 +#: src/libspucc/xine_cc_decoder.c:225 msgid "Choose the font size for closed captions text." msgstr "Kapalı baÅŸlık metni için yazı tipini boyutunu seçin." -#: src/libspucc/xine_cc_decoder.c:223 +#: src/libspucc/xine_cc_decoder.c:229 msgid "center-adjust closed captions" msgstr "Ortalanmış kapalı baÅŸlıklar" -#: src/libspucc/xine_cc_decoder.c:224 +#: src/libspucc/xine_cc_decoder.c:230 msgid "" "When enabled, closed captions will be positioned by the center of the " "individual lines." msgstr "EtkinleÅŸtirildiÄŸinde, bireysel satırlar ortalanacaktır." -#: src/libspucmml/xine_cmml_decoder.c:477 +#: src/libspucmml/xine_cmml_decoder.c:463 msgid "font for external subtitles" msgstr "dış altyazılar için yazı tipi" -#: src/libspucmml/xine_cmml_decoder.c:483 +#: src/libspucmml/xine_cmml_decoder.c:469 msgid "subtitle vertical offset (relative window size)" msgstr "altyazı dikey konumu (pencere boyutuna göre deÄŸiÅŸir)" -#: src/libspucmml/xine_cmml_decoder.c:529 +#: src/libspucmml/xine_cmml_decoder.c:512 msgid "encoding of subtitles" msgstr "altyazıların kodlanması" -#: src/libsputext/demux_sputext.c:1504 +#: src/libsputext/demux_sputext.c:1479 msgid "default duration of subtitle display in seconds" msgstr "altyazı görünümünün saniye bazında ön tanımlı süresi" -#: src/libsputext/demux_sputext.c:1505 +#: src/libsputext/demux_sputext.c:1480 msgid "" "Some subtitle formats do not explicitly give a duration for each subtitle. " "For these, you can set a default duration here. Setting to zero will result " "in the subtitle being shown until the next one takes over." -msgstr "Bazı altyazı kipleri her altyazı için kesin süre vermez. Bunun için, buradan kesin bir süre ayarlayabilirsiniz. Ayarı sıfır yapmak bir sonraki altyazı gelene kadar altyazının gösterilmesi sonucunu doÄŸurur." +msgstr "" +"Bazı altyazı kipleri her altyazı için kesin süre vermez. Bunun için, buradan " +"kesin bir süre ayarlayabilirsiniz. Ayarı sıfır yapmak bir sonraki altyazı " +"gelene kadar altyazının gösterilmesi sonucunu doÄŸurur." -#: src/libsputext/xine_sputext_decoder.c:928 +#: src/libsputext/xine_sputext_decoder.c:1140 msgid "subtitle size" msgstr "altyazı büyüklüğü" -#: src/libsputext/xine_sputext_decoder.c:929 +#: src/libsputext/xine_sputext_decoder.c:1141 msgid "" "You can adjust the subtitle size here. The setting will be evaluated " "relative to the window size." -msgstr "Altyazı büyüklüğünü buradan ayarlayabilirsiniz. Bu ayar pencere boyutunuza göre yeniden deÄŸerlendirilecektir." +msgstr "" +"Altyazı büyüklüğünü buradan ayarlayabilirsiniz. Bu ayar pencere boyutunuza " +"göre yeniden deÄŸerlendirilecektir." -#: src/libsputext/xine_sputext_decoder.c:935 +#: src/libsputext/xine_sputext_decoder.c:1147 msgid "subtitle vertical offset" msgstr "altyazı dikey konumu" -#: src/libsputext/xine_sputext_decoder.c:936 +#: src/libsputext/xine_sputext_decoder.c:1148 msgid "" "You can adjust the vertical position of the subtitle. The setting will be " "evaluated relative to the window size." -msgstr "Altyazı dikey konumunu buradan ayarlayabilirsiniz. Bu ayar pencere boyutunuza göre yeniden deÄŸerlendirilecektir." +msgstr "" +"Altyazı dikey konumunu buradan ayarlayabilirsiniz. Bu ayar pencere " +"boyutunuza göre yeniden deÄŸerlendirilecektir." -#: src/libsputext/xine_sputext_decoder.c:942 -#: src/libsputext/xine_sputext_decoder.c:951 +#: src/libsputext/xine_sputext_decoder.c:1154 +#: src/libsputext/xine_sputext_decoder.c:1163 msgid "font for subtitles" msgstr "altyazılar için yazı tipi" -#: src/libsputext/xine_sputext_decoder.c:943 +#: src/libsputext/xine_sputext_decoder.c:1155 msgid "A font from the xine font directory to be used for the subtitle text." -msgstr "Altyazı metni olarak xine yazı tipi dizininden bir yazı tipi kullanılacaktır." +msgstr "" +"Altyazı metni olarak xine yazı tipi dizininden bir yazı tipi kullanılacaktır." -#: src/libsputext/xine_sputext_decoder.c:952 +#: src/libsputext/xine_sputext_decoder.c:1164 msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text." -msgstr "Altyazı metni olarak kullanılacak olan bir çerçeve yazı tipi dosyası (örn. bir .ttf)" +msgstr "" +"Altyazı metni olarak kullanılacak olan bir çerçeve yazı tipi dosyası (örn. " +"bir .ttf)" -#: src/libsputext/xine_sputext_decoder.c:958 +#: src/libsputext/xine_sputext_decoder.c:1170 msgid "whether to use a freetype font" msgstr "bir freetype yazı tipinin kullanılıp kullanılmayacağı" -#: src/libsputext/xine_sputext_decoder.c:965 +#: src/libsputext/xine_sputext_decoder.c:1177 msgid "encoding of the subtitles" msgstr "alt yazılar kodlanıyor" -#: src/libsputext/xine_sputext_decoder.c:966 +#: src/libsputext/xine_sputext_decoder.c:1178 msgid "" "The encoding of the subtitle text in the stream. This setting is used to " "render non-ASCII characters correctly. If non-ASCII characters are not " "displayed as you expect, ask the creator of the subtitles what encoding was " "used." -msgstr "Yayın akışındaki altyazı metninin kod çözümü. Bu ayar, ASCII-dışı karakterlerin doÄŸru görüntülenmesi için kullanılır. EÄŸer ASCII-dışı karakterler beklediÄŸiniz gibi görüntülenmezse, bunu oluÅŸturan kiÅŸiye altyazılarda kullanılan kodlamanın ne olduÄŸunu sormalısınız." +msgstr "" +"Yayın akışındaki altyazı metninin kod çözümü. Bu ayar, ASCII-dışı " +"karakterlerin doÄŸru görüntülenmesi için kullanılır. EÄŸer ASCII-dışı " +"karakterler beklediÄŸiniz gibi görüntülenmezse, bunu oluÅŸturan kiÅŸiye " +"altyazılarda kullanılan kodlamanın ne olduÄŸunu sormalısınız." -#: src/libsputext/xine_sputext_decoder.c:974 +#: src/libsputext/xine_sputext_decoder.c:1186 msgid "use unscaled OSD if possible" msgstr "eÄŸer mümkünse hesaplanmamış OSD kullanın" -#: src/libsputext/xine_sputext_decoder.c:975 +#: src/libsputext/xine_sputext_decoder.c:1187 msgid "" "The unscaled OSD will be rendered independently of the video frame and will " "always be sharp, even if the video is magnified. This will look better, but " "does not work with all graphics hardware. The alternative is the scaled OSD, " "which will become blurry, if you enlarge a low resolution video to " "fullscreen, but it works with all graphics cards." -msgstr "Hesaplanmamış OSD görüntü çerçevesinden bağımsız olarak iÅŸlenecek ve görüntü büyütülmüş olsa bile daima keskin olacaktır. Bu daha iyi görünecek, fakat tüm grafik donanımla çalışamayabilecektir. Bunun çözümü ise hesaplanmış OSD'dir, fakat eÄŸer düşük çözünürlüğe sahip bir görüntüyü tam ekran yaparsanız bulanık gözükecektir, buna raÄŸmen tüm grafik kartlarla çalışır." +msgstr "" +"Hesaplanmamış OSD görüntü çerçevesinden bağımsız olarak iÅŸlenecek ve görüntü " +"büyütülmüş olsa bile daima keskin olacaktır. Bu daha iyi görünecek, fakat " +"tüm grafik donanımla çalışamayabilecektir. Bunun çözümü ise hesaplanmış " +"OSD'dir, fakat eÄŸer düşük çözünürlüğe sahip bir görüntüyü tam ekran " +"yaparsanız bulanık gözükecektir, buna raÄŸmen tüm grafik kartlarla çalışır." #: src/libw32dll/common.c:17 msgid "path to Win32 codecs" @@ -2845,17 +3259,24 @@ msgid "" "Quicktime codecs, it will use them to decode various Windows Media and " "Quicktime streams for you. Consult the xine FAQ for more information on how " "to install the codecs." -msgstr "EÄŸer Windows veya Apple Quicktime kod paketleri kuruluysa, burada kod dizini yolunu belirtiniz. EÄŸer xine Windows veya Apple Quicktime kodlarını bulursa, bunu sizin için farklı Windows veya Apple Quicktime yayın akışlarının kodlarını çözümlemede kullanacaktır. Kodların kurulması konusundaki daha fazla bilgiye ulaÅŸmak için xine SSS'ye baÅŸvurun." +msgstr "" +"EÄŸer Windows veya Apple Quicktime kod paketleri kuruluysa, burada kod dizini " +"yolunu belirtiniz. EÄŸer xine Windows veya Apple Quicktime kodlarını bulursa, " +"bunu sizin için farklı Windows veya Apple Quicktime yayın akışlarının " +"kodlarını çözümlemede kullanacaktır. Kodların kurulması konusundaki daha " +"fazla bilgiye ulaÅŸmak için xine SSS'ye baÅŸvurun." #: src/libw32dll/w32codec.c:585 #, c-format msgid "w32codec: ICOpen failed! unknown codec %08lx / wrong parameters?\n" -msgstr "w32codec: ICOpen baÅŸarılamadı! bilinmeyen kod %08lx / parametreler yanlış?\n" +msgstr "" +"w32codec: ICOpen baÅŸarılamadı! bilinmeyen kod %08lx / parametreler yanlış?\n" #: src/libw32dll/w32codec.c:594 #, c-format msgid "w32codec: ICDecompressGetFormat (%.4s %08lx/%d) failed: Error %ld\n" -msgstr "w32codec: ICDecompressGetFormat (%.4s %08lx/%d) baÅŸarılamadı: Hata %ld\n" +msgstr "" +"w32codec: ICDecompressGetFormat (%.4s %08lx/%d) baÅŸarılamadı: Hata %ld\n" #: src/libw32dll/w32codec.c:627 #, c-format @@ -2869,13 +3290,19 @@ msgstr "w32codec: ICDecompressBegin baÅŸarılamadı: Error %ld\n" #: src/libw32dll/w32codec.c:684 #, c-format -msgid "w32codec: DS_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" -msgstr "w32codec: DS_VideoDecoder baÅŸarılamadı! bilinmeyen kod %08lx / parametreler yanlış?\n" +msgid "" +"w32codec: DS_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" +msgstr "" +"w32codec: DS_VideoDecoder baÅŸarılamadı! bilinmeyen kod %08lx / parametreler " +"yanlış?\n" #: src/libw32dll/w32codec.c:695 #, c-format -msgid "w32codec: DMO_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" -msgstr "w32codec: DMO_VideoDecoder baÅŸarılamadı! bilinmeyen kod %08lx / parametreler yanlış?\n" +msgid "" +"w32codec: DMO_VideoDecoder failed! unknown codec %08lx / wrong parameters?\n" +msgstr "" +"w32codec: DMO_VideoDecoder baÅŸarılamadı! bilinmeyen kod %08lx / parametreler " +"yanlış?\n" #: src/libw32dll/w32codec.c:815 src/libw32dll/w32codec.c:1484 #, c-format @@ -2907,22 +3334,22 @@ msgstr "w32codec: DMO Audio sıfırlamada hata\n" msgid "bitplane: error doing ByteRun1 decompression\n" msgstr "bitplane: ByteRun1 sıkıştırmasında hata\n" -#: src/libxinevdec/bitplane.c:1329 +#: src/libxinevdec/bitplane.c:1321 #, c-format msgid "bitplane: Anim Opt 1 is not supported at the moment\n" msgstr "bitplane: Anim Opt 1 ÅŸu anda desteklenmiyor\n" -#: src/libxinevdec/bitplane.c:1336 +#: src/libxinevdec/bitplane.c:1328 #, c-format msgid "bitplane: Anim Opt 2 is not supported at the moment\n" msgstr "bitplane: Anim Opt 2 ÅŸu anda desteklenmiyor\n" -#: src/libxinevdec/bitplane.c:1386 +#: src/libxinevdec/bitplane.c:1378 #, c-format msgid "bitplane: Anim ASCIIJ is not supported at the moment\n" msgstr "bitplane: Anim ASCIIJ ÅŸu anda desteklenmiyor\n" -#: src/libxinevdec/bitplane.c:1392 +#: src/libxinevdec/bitplane.c:1384 #, c-format msgid "bitplane: This anim-type is not supported at the moment\n" msgstr "bitplane: Bu hareket türü ÅŸu anda desteklenmiyor\n" @@ -2932,7 +3359,11 @@ msgid "" "This filter will perform a time stretch, playing the stream faster or slower " "by a factor. Pitch is optionally preserved, so it is possible, for example, " "to use it to watch a movie in less time than it was originaly shot.\n" -msgstr "Bu süzgeç bir etmenden dolayı yayın akışını daha hızlı veya daha yavaÅŸ oynatılmasına yol açan zaman uzamasına etki edecektir. Oran büyük olasılıkla korunacaktır, böylece bir filmi gerçek süresine göre daha az zamanda izlemek için kullanılabilir.\n" +msgstr "" +"Bu süzgeç bir etmenden dolayı yayın akışını daha hızlı veya daha yavaÅŸ " +"oynatılmasına yol açan zaman uzamasına etki edecektir. Oran büyük olasılıkla " +"korunacaktır, böylece bir filmi gerçek süresine göre daha az zamanda izlemek " +"için kullanılabilir.\n" #: src/post/audio/upmix.c:134 msgid "" @@ -2944,7 +3375,8 @@ msgid "" "parameters.\n" "\n" msgstr "" -"ÇoÄŸaltma fonksiyonları. örn. Stereo giriÅŸ alın ve Surround 5.1 çıkışa dönüştürün.\n" +"ÇoÄŸaltma fonksiyonları. örn. Stereo giriÅŸ alın ve Surround 5.1 çıkışa " +"dönüştürün.\n" "Parametreler\n" " cut_off_freq\n" "\n" @@ -2955,9 +3387,13 @@ msgid "" "This filter will upmix a mono stream to stereo, by duplicating channels. " "Alternatively, one may use this plugin to listen just one channel of a given " "stream.\n" -msgstr "Bu süzgeç, mono akışı kanalları çiftleyerek stereo'ya dönüştürecektir. Alternatif olarak, bu eklenti sadece bir kanalın ya da verilen yayın akışının dinlenmesi için de kullanılabilir.\n" +msgstr "" +"Bu süzgeç, mono akışı kanalları çiftleyerek stereo'ya dönüştürecektir. " +"Alternatif olarak, bu eklenti sadece bir kanalın ya da verilen yayın " +"akışının dinlenmesi için de kullanılabilir.\n" #: src/post/audio/upmix_mono.c:144 +#, c-format msgid ": upmixing Mono to Stereo.\n" msgstr ": Mono'dan Stereo'ya dönüştürme.\n" @@ -2969,6 +3405,7 @@ msgstr[0] ": tek kanalı özgün %d kanal yayın akışlarına dönüştürme.\n msgstr[1] "" #: src/post/audio/upmix_mono.c:154 +#, c-format msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n" msgstr ": ses aygıtının AO_CAP_MODE_STEREO özelliÄŸi yok.\n" @@ -2984,10 +3421,12 @@ msgstr "" "Sesin bozmadan sesi yükselterek ses kaynağını normalleÅŸtiriyor.\n" "\n" "Parametreler:\n" -" yöntem: 1: çeÅŸitlemeleri yumuÅŸatmak ya da eski ses örneklerini temel alarak tek bir örnek kullanınız (varsayılan); 2: çeÅŸitlemeleri yumuÅŸatmak " +" yöntem: 1: çeÅŸitlemeleri yumuÅŸatmak ya da eski ses örneklerini temel " +"alarak tek bir örnek kullanınız (varsayılan); 2: çeÅŸitlemeleri yumuÅŸatmak " "ya da eski ses örneklerini temel alarak farklı örnekler kullanınız.\n" -#: src/post/deinterlace/xine_plugin.c:202 +#: src/post/deinterlace/xine_plugin.c:207 +#, fuzzy msgid "" "Advanced tvtime/deinterlacer plugin with pulldown detection\n" "This plugin aims to provide deinterlacing mechanisms comparable to high " @@ -3001,6 +3440,9 @@ msgid "" "\n" " Enabled: Enable/disable the plugin.\n" "\n" +" Pulldown_error_wait: Ensures that the telecine pattern has been locked for " +"this many frames before changing to filmmode.\n" +"\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films that " "have being converted to NTSC can be detected and intelligently reconstructed " "to their original (non-interlaced) frames.\n" @@ -3023,7 +3465,7 @@ msgid "" "\n" " Chroma_filter: DVD/MPEG2 use an interlaced image format that has a very " "poor vertical chroma resolution. Upsampling the chroma for purposes of " -"deinterlacing may cause some artifacts to occur (eg. color stripes). Use " +"deinterlacing may cause some artifacts to occur (eg. colour stripes). Use " "this option to blur the chroma vertically after deinterlacing to remove the " "artifacts. Warning: cpu intensive.\n" "\n" @@ -3040,35 +3482,61 @@ msgid "" "\n" msgstr "" "GeliÅŸmiÅŸ seçenek tanımalı tvtime/dönüştürücü eklentisi \n" -"Bu eklentinin amacı dönüştürme mekanizmasına yüksek kaliteli DVD çalarlarla yarışacak bir ortam saÄŸlamaktır ve buna bilgisayar ekranları, yansıtıcılar ve diÄŸer ileri seviyede görüntü cihazlarıyla kullanılması için çizgi çiftleyici denir.\n" +"Bu eklentinin amacı dönüştürme mekanizmasına yüksek kaliteli DVD çalarlarla " +"yarışacak bir ortam saÄŸlamaktır ve buna bilgisayar ekranları, yansıtıcılar " +"ve diÄŸer ileri seviyede görüntü cihazlarıyla kullanılması için çizgi " +"çiftleyici denir.\n" "\n" "Parametreler\n" "\n" -"Method: Kullanılacak dönüştürme yöntemini/algoritmasını seçer, her yöntemin açıklaması için aÅŸağıda bakınız.\n" +"Method: Kullanılacak dönüştürme yöntemini/algoritmasını seçer, her yöntemin " +"açıklaması için aÅŸağıda bakınız.\n" "\n" "Etkin: Eklenti etkin/etkisiz\n" "\n" -" Pulldown: 2-3 indirme tanıma algoritmasını seçin, 24 fps NTSC kipine dönüştürülmüşlerdir ve rahatlıkla algılanabilir ve eski hallerine döndürülebilirler (dönüştürülmemiÅŸ).\n" -"\n" -" Framerate_mode: Tam'ı seçmek her alanı televizyon ve ötesi kalitede bir noktaya dönüştürecektir. Bu özellik yumuÅŸaklığı arttırarak çerçeve oranını ikiye katlayacaktır. Yalnız, düz 2.4 Linux çekirdeÄŸi ile tam 59.94 FPS olanaklı deÄŸildir (zaman kesme oranı olarak 100Hz'i kullanan. Daha yeni Red Hat veya 2.6 çekirdekleri daha yüksek HZ ayarları kullanırlar (büyük olasılıkla 512 veya 1000) ve daha güzel çalışır.\n" -"\n" -" Judder_correction: Bir kez 2-3 indirme etkinleÅŸtirilirse ve film malzemesi tanınırsa çerçeve oranını kullanılan özgün orana (24 FPS) indirmek mümkün olabilir. Bu çerçevelerin düzgün görüntülenmesine ve titreme etkisini eleyerek hızının normalleÅŸmesine imkan tanıyacaktır.\n" -"\n" -" Use_progressive_frame_flag: İyi master edilmiÅŸ MPEG2 yayın akışları ilerleyen malzemeyi belirten bir bayrak kullanırlar. Bu ayar, bu bayraÄŸa güvenip güvenemeyeceÄŸimizi denetler (bazı ender ve böcekli! mpeg yayın akışlarında bu yanlış ayarlanmıştır).\n" -" Chroma-filter: DVD/MPEG2, çok zayıf bir kroma çözünürlüğe sahip dönüştürülmüş resim kipi kullanır. Dönüşüm amacıyla kromayı deÄŸiÅŸtirmek bazı hatalara sebep olabilir (renk karışımı gibi...). Bu seçeneÄŸi yapılanları silip dönüştürdükten sonra renk parlaklığını dikey olarak bulanıklaÅŸtırmak için kullanın. Uyarı: iÅŸlemci yoÄŸunluÄŸu\n" -"\n" -" Cheap-mode. " -"Bu geniÅŸ YV12->YUY2 görüntü çevrimini tvtime/dscaler yordamlarını sanki onlar hala YUY2 görüntüleriyle uÄŸraşıyormuÅŸ gibi kandırarak atlayacaktır, Tabii ki, bu doÄŸru deÄŸildir, saptanan algoritmalar tarafından dönüştürme ve renk parlaklığının ayrı ayrı iÅŸlem görüp görmeyeceÄŸine baÄŸlı olarak tüm pikseller deÄŸerlendirilmeyecektir. Ne yazık ki, sistemi yavaÅŸ olan makinalarda kalite ve iÅŸlemci rekabetine a göre algoritmaları dönüştürme iÅŸlemleri yapılmaya çalışılacaktır.\n" +" Pulldown: 2-3 indirme tanıma algoritmasını seçin, 24 fps NTSC kipine " +"dönüştürülmüşlerdir ve rahatlıkla algılanabilir ve eski hallerine " +"döndürülebilirler (dönüştürülmemiÅŸ).\n" +"\n" +" Framerate_mode: Tam'ı seçmek her alanı televizyon ve ötesi kalitede bir " +"noktaya dönüştürecektir. Bu özellik yumuÅŸaklığı arttırarak çerçeve oranını " +"ikiye katlayacaktır. Yalnız, düz 2.4 Linux çekirdeÄŸi ile tam 59.94 FPS " +"olanaklı deÄŸildir (zaman kesme oranı olarak 100Hz'i kullanan. Daha yeni Red " +"Hat veya 2.6 çekirdekleri daha yüksek HZ ayarları kullanırlar (büyük " +"olasılıkla 512 veya 1000) ve daha güzel çalışır.\n" +"\n" +" Judder_correction: Bir kez 2-3 indirme etkinleÅŸtirilirse ve film malzemesi " +"tanınırsa çerçeve oranını kullanılan özgün orana (24 FPS) indirmek mümkün " +"olabilir. Bu çerçevelerin düzgün görüntülenmesine ve titreme etkisini " +"eleyerek hızının normalleÅŸmesine imkan tanıyacaktır.\n" +"\n" +" Use_progressive_frame_flag: İyi master edilmiÅŸ MPEG2 yayın akışları " +"ilerleyen malzemeyi belirten bir bayrak kullanırlar. Bu ayar, bu bayraÄŸa " +"güvenip güvenemeyeceÄŸimizi denetler (bazı ender ve böcekli! mpeg yayın " +"akışlarında bu yanlış ayarlanmıştır).\n" +" Chroma-filter: DVD/MPEG2, çok zayıf bir kroma çözünürlüğe sahip " +"dönüştürülmüş resim kipi kullanır. Dönüşüm amacıyla kromayı deÄŸiÅŸtirmek bazı " +"hatalara sebep olabilir (renk karışımı gibi...). Bu seçeneÄŸi yapılanları " +"silip dönüştürdükten sonra renk parlaklığını dikey olarak bulanıklaÅŸtırmak " +"için kullanın. Uyarı: iÅŸlemci yoÄŸunluÄŸu\n" +"\n" +" Cheap-mode. Bu geniÅŸ YV12->YUY2 görüntü çevrimini tvtime/dscaler " +"yordamlarını sanki onlar hala YUY2 görüntüleriyle uÄŸraşıyormuÅŸ gibi " +"kandırarak atlayacaktır, Tabii ki, bu doÄŸru deÄŸildir, saptanan algoritmalar " +"tarafından dönüştürme ve renk parlaklığının ayrı ayrı iÅŸlem görüp " +"görmeyeceÄŸine baÄŸlı olarak tüm pikseller deÄŸerlendirilmeyecektir. Ne yazık " +"ki, sistemi yavaÅŸ olan makinalarda kalite ve iÅŸlemci rekabetine a göre " +"algoritmaları dönüştürme iÅŸlemleri yapılmaya çalışılacaktır.\n" "\n" "* tvtime ve dscaler projeleri için farklı algoritmalar kullanır.\n" -"Dönüştürme yöntemleri: (Tüm yöntemler tüm platformlar için geçerli olmayabilir)\n" +"Dönüştürme yöntemleri: (Tüm yöntemler tüm platformlar için geçerli " +"olmayabilir)\n" "\n" -#: src/post/deinterlace/xine_plugin.c:323 +#: src/post/deinterlace/xine_plugin.c:331 +#, c-format msgid "tvtime: No deinterlacing methods available, exiting.\n" -msgstr "" -"tvtime: Hiç bir dönüştürme yöntemi uygun deÄŸil. Kapatılıyor. " -"\n" +msgstr "tvtime: Hiç bir dönüştürme yöntemi uygun deÄŸil. Kapatılıyor. \n" #: src/post/goom/xine_goom.c:206 msgid "frames per second to generate" @@ -3078,7 +3546,9 @@ msgstr "oluÅŸturulmak üzere saniye başına kareler" msgid "" "With more frames per second, the animation will get smoother and faster, but " "will also require more CPU power." -msgstr "Saniye başına daha çok kareler için, hareket daha yumuÅŸayacak ve hızlanacak, fakat aynı zamanda daha çok iÅŸlemci gücü gerektirecek." +msgstr "" +"Saniye başına daha çok kareler için, hareket daha yumuÅŸayacak ve hızlanacak, " +"fakat aynı zamanda daha çok iÅŸlemci gücü gerektirecek." #: src/post/goom/xine_goom.c:212 msgid "goom image width" @@ -3097,18 +3567,21 @@ msgid "The height in pixels of the image to be generated." msgstr "İşlenecek olan resmin piksel olarak yüksekliÄŸi." #: src/post/goom/xine_goom.c:224 -msgid "colorspace conversion method" +#, fuzzy +msgid "colour space conversion method" msgstr "renk dizgesi dönüştürme yöntemi " #: src/post/goom/xine_goom.c:225 +#, fuzzy msgid "" -"You can choose the colorspace conversion method used by goom.\n" +"You can choose the colour space conversion method used by goom.\n" "The available selections should be self-explaining." msgstr "" -"Goom tarafından kullanılan renk dizgesi dönüştürme yöntemini seçebilirsiniz.\n" +"Goom tarafından kullanılan renk dizgesi dönüştürme yöntemini " +"seçebilirsiniz.\n" "Uygun seçimler açıklamalılar olabilir. " -#: src/post/mosaico/mosaico.c:271 +#: src/post/mosaico/mosaico.c:274 msgid "" "Mosaico does simple picture in picture effects.\n" "\n" @@ -3172,7 +3645,9 @@ msgid "" "\n" "* mplayer's denoise3d (C) 2003 Daniel Moreno\n" msgstr "" -"Bu süzgeç, düz ve donmuÅŸ resimler üreten resim gürültüsünü azaltmayı amaçlar (Bu sıkıştırmayı azaltır). 0 ile 3 parametleri verilmiÅŸ olabilir. EÄŸer bir parametreyi atlarsanız, önemli bir deÄŸer kaybolmuÅŸ olur.\n" +"Bu süzgeç, düz ve donmuÅŸ resimler üreten resim gürültüsünü azaltmayı amaçlar " +"(Bu sıkıştırmayı azaltır). 0 ile 3 parametleri verilmiÅŸ olabilir. EÄŸer bir " +"parametreyi atlarsanız, önemli bir deÄŸer kaybolmuÅŸ olur.\n" "\n" "Parametreler\n" " Luma: Uzamsal luma kuvveti (öntanımlı = 4)\n" @@ -3196,13 +3671,16 @@ msgid "" "\n" "* mplayer's eq (C) Richard Felker\n" msgstr "" -"Aynen donanım eÅŸitleyicisi gibi olan etkileÅŸimli denetimlere sahip yazılım eÅŸitleyicisi, bu, kartlar/sürücüler için donanımdaki parlaklık ve zıtlığı desteklemez.\n" +"Aynen donanım eÅŸitleyicisi gibi olan etkileÅŸimli denetimlere sahip yazılım " +"eÅŸitleyicisi, bu, kartlar/sürücüler için donanımdaki parlaklık ve zıtlığı " +"desteklemez.\n" "\n" "Parametreler\n" " parlaklık\n" " zıtlık\n" "\n" -"Dikkat: Bu parametreleri kullanmak için ön pencere denetimleri kullanabilir.\n" +"Dikkat: Bu parametreleri kullanmak için ön pencere denetimleri " +"kullanabilir.\n" "\n" "* mplayer's eq (C) Richard Felker\n" @@ -3229,8 +3707,11 @@ msgid "" "\n" "* mplayer's eq2 (C) Hampa Hug, Daniel Moreno, Richard Felker\n" msgstr "" -"Tabloları kullanan (çok yavaÅŸ) alternatif yazılım eÅŸitleyicisi, gamma düzeltmesine ve ek olarak basit parlaklık, zıtlık ve doyum ayarlarına izin veriyor.\n" -"EÄŸer gamma deÄŸerleri 1.0 ise Eq olarak aynı MMX iyileÅŸtirilmiÅŸ kodun kullanıldığına dikkat ediniz.\n" +"Tabloları kullanan (çok yavaÅŸ) alternatif yazılım eÅŸitleyicisi, gamma " +"düzeltmesine ve ek olarak basit parlaklık, zıtlık ve doyum ayarlarına izin " +"veriyor.\n" +"EÄŸer gamma deÄŸerleri 1.0 ise Eq olarak aynı MMX iyileÅŸtirilmiÅŸ kodun " +"kullanıldığına dikkat ediniz.\n" "\n" "Parametreler\n" " gamma\n" @@ -3241,7 +3722,9 @@ msgstr "" " ggamma (yeÅŸil bileÅŸen için gamma)\n" " bgamma (mavi bileÅŸen için gamma)\n" "\n" -"Gammalar için deÄŸerler 0.1 - 10 arasındadır, -2 - 2 zıtlık için (negative deÄŸerler negatif resim sonucu doÄŸururlar), -1 - 1 parlaklık için ve 0 - 3 doyum için.\n" +"Gammalar için deÄŸerler 0.1 - 10 arasındadır, -2 - 2 zıtlık için (negative " +"deÄŸerler negatif resim sonucu doÄŸururlar), -1 - 1 parlaklık için ve 0 - 3 " +"doyum için.\n" "\n" "* mplayer's eq2 (C) Hampa Hug, Daniel Moreno, Richard Felker\n" @@ -3259,11 +3742,13 @@ msgid "" " Centre_cut_out_mode: extracts 4:3 image contained in 16:9 frame\n" "\n" msgstr "" -"Eklenti büyümesi, keyfi durum oranının karelerini almak ve onları çerçevenin üst ve altlarına siyah çizgiler ekleyerek farklı görünüme çevirmek (4:3 öntanımlı'dır) anlamına gelmektedir. Bu bize katmanları siyaha alana döndürme olanağı tanır böylece onlar resmi kaplamazlar.\n" +"Eklenti büyümesi, keyfi durum oranının karelerini almak ve onları çerçevenin " +"üst ve altlarına siyah çizgiler ekleyerek farklı görünüme çevirmek (4:3 " +"öntanımlı'dır) anlamına gelmektedir. Bu bize katmanları siyaha alana " +"döndürme olanağı tanır böylece onlar resmi kaplamazlar.\n" "\n" "Parametreler (FIXME: daha çok yardım)\n" -" " -"Enable_automatic_shift: Katman deÄŸiÅŸimini otomatik olarak etkinleÅŸtirir\n" +" Enable_automatic_shift: Katman deÄŸiÅŸimini otomatik olarak etkinleÅŸtirir\n" " Overlay_y_offset: Elle tabakayı dikey olarak deÄŸiÅŸtirir\n" " aspect: The hedef görünüm oranı (öntanımlı 4:3)\n" " Centre_cut_out_mode: 16:9 çerçevesindekileri 4:3 oranına çıkarır\n" @@ -3294,13 +3779,15 @@ msgstr "" " chroma_strength: chroma kanalına eklenen gürültünün gücü (0-100, " "öntanımlı: 5)\n" " quality: gürültünün kalite seviyesi. düzeltilmiÅŸ: sürekli gürültü modeli; " -"temporal: gürültü modeli kareler arasında deÄŸiÅŸir; ortalama zaman: kareler arasında deÄŸiÅŸen daha düz gürültü modeli. (öntanımlı: ortalama zaman)\n" +"temporal: gürültü modeli kareler arasında deÄŸiÅŸir; ortalama zaman: kareler " +"arasında deÄŸiÅŸen daha düz gürültü modeli. (öntanımlı: ortalama zaman)\n" " type: Gürltü türü: birörnek veya veya gaussian. (öntanımlı: gaussian)\n" -" pattern: Rastgele gürültünün bir (yarı) düzenli model ile karışımı. (öntanımlı: False)\n" +" pattern: Rastgele gürültünün bir (yarı) düzenli model ile karışımı. " +"(öntanımlı: False)\n" "\n" "* mplayer's noise (C) Michael Niedermayer\n" -#: src/post/planar/pp.c:106 +#: src/post/planar/pp.c:115 msgid "" "FFmpeg libpostprocess plugin.\n" "\n" @@ -3312,7 +3799,7 @@ msgstr "" "Parametreler\n" "\n" -#: src/post/planar/pp.c:112 +#: src/post/planar/pp.c:121 msgid "" "\n" "* libpostprocess (C) Michael Niedermayer\n" @@ -3320,7 +3807,7 @@ msgstr "" "\n" "* libpostprocess (C) Michael Niedermayer\n" -#: src/post/planar/unsharp.c:218 +#: src/post/planar/unsharp.c:211 msgid "" "Unsharp mask / gaussian blur\n" "It is possible to set the width and height of the matrix, odd sized in both " @@ -3348,7 +3835,11 @@ msgid "" "* mplayer's unsharp (C) 2002 Remi Guyomarch\n" msgstr "" "YumuÅŸak maske / gaussian blur\n" -"Dizey'in geniÅŸlik ve yüksekliÄŸini ayarlamak mümkündür, tek sayılı ayarlar her iki yönde de ayarlanmıştır (min = 3x3, max = 13x11 or 11x13, genellikle 3x3 ve 7x7 arasında bir ÅŸey olabilir.) ve keskinlik/bulanıklığın resme eklenecek olan ilgili büyüklüğü de ayarlanmıştır (makul bir oran -1.5 - 1.5 olabilir).\n" +"Dizey'in geniÅŸlik ve yüksekliÄŸini ayarlamak mümkündür, tek sayılı ayarlar " +"her iki yönde de ayarlanmıştır (min = 3x3, max = 13x11 or 11x13, genellikle " +"3x3 ve 7x7 arasında bir ÅŸey olabilir.) ve keskinlik/bulanıklığın resme " +"eklenecek olan ilgili büyüklüğü de ayarlanmıştır (makul bir oran -1.5 - 1.5 " +"olabilir).\n" "\n" "Parametreler\n" "\n" @@ -3356,15 +3847,15 @@ msgstr "" "\n" " Luma_matrix_height: Dizey'in yüksekliÄŸi (tek sayı olmalı)\n" "\n" -" Luma_amount: Keskinlik/bulanıklığın iliÅŸkili oranı (=0 devre dışı bırak, <0 bulanıklaÅŸtır, >0 " -"keskinleÅŸtir)\n" +" Luma_amount: Keskinlik/bulanıklığın iliÅŸkili oranı (=0 devre dışı bırak, " +"<0 bulanıklaÅŸtır, >0 keskinleÅŸtir)\n" "\n" " Chroma_matrix_width: Dizey'in geniÅŸliÄŸi (tek sayı olmalı)\n" "\n" " Chroma_matrix_height: Dizey'in yüksekliÄŸi (tek sayı olmalı)\n" "\n" -" Chroma_amount: Keskinlik/bulanıklığın iliÅŸkili oranı (=0 devre dışı bırak, <0 bulanıklaÅŸtır, >0 " -"keskinleÅŸtir)\n" +" Chroma_amount: Keskinlik/bulanıklığın iliÅŸkili oranı (=0 devre dışı bırak, " +"<0 bulanıklaÅŸtır, >0 keskinleÅŸtir)\n" "\n" "\n" "* mplayer's unsharp (C) 2002 Remi Guyomarch\n" @@ -3373,63 +3864,79 @@ msgstr "" msgid "xine video output plugin using the ascii-art library" msgstr "ascii-art kütüphanesinin kullanan xine görüntü çıkış eklentisi" -#: src/video_out/video_out_caca.c:315 +#: src/video_out/video_out_caca.c:321 msgid "xine video output plugin using the Color AsCii Art library" msgstr "Color AsCii Art kütüphanesinin kullanan xine görüntü çıkış eklentisi" -#: src/video_out/video_out_directfb.c:1341 +#: src/video_out/video_out_directfb.c:1337 msgid "video layer buffering mode" msgstr "görüntü katmanı tamponlama kipi" -#: src/video_out/video_out_directfb.c:1342 +#: src/video_out/video_out_directfb.c:1338 msgid "" "Select the buffering mode of the output layer. Double or triple buffering " "give a smoother playback, but consume more video memory." -msgstr "Çıkış katmanının tamponlama kipini seçin. İkili veya üçlü tamponlama, daha yumuÅŸak bir çalma sonucu doÄŸurur, fakat daha çok görüntü belleÄŸi tüketir." +msgstr "" +"Çıkış katmanının tamponlama kipini seçin. İkili veya üçlü tamponlama, daha " +"yumuÅŸak bir çalma sonucu doÄŸurur, fakat daha çok görüntü belleÄŸi tüketir." -#: src/video_out/video_out_directfb.c:1349 +#: src/video_out/video_out_directfb.c:1345 msgid "wait for vertical retrace" msgstr "dikey takip için bekleyiniz" -#: src/video_out/video_out_directfb.c:1350 +#: src/video_out/video_out_directfb.c:1346 msgid "" "Enable synchronizing the update of the video image to the repainting of the " "entire screen (\"vertical retrace\")." -msgstr "Tüm ekranın yeniden oluÅŸturulması amacıyla video görüntüsünün güncellenmesi için senkronizasyonu etkinleÅŸtiriniz. (\"dikey takip\")." +msgstr "" +"Tüm ekranın yeniden oluÅŸturulması amacıyla video görüntüsünün güncellenmesi " +"için senkronizasyonu etkinleÅŸtiriniz. (\"dikey takip\")." -#: src/video_out/video_out_directfb.c:1357 -msgid "enable video color key" +#: src/video_out/video_out_directfb.c:1353 +#, fuzzy +msgid "enable video colour key" msgstr "görüntü renk anahtarını etkinleÅŸtirin" -#: src/video_out/video_out_directfb.c:1358 +#: src/video_out/video_out_directfb.c:1354 +#, fuzzy msgid "" -"Enable using a color key to tell the graphics card where to overlay the " +"Enable using a colour key to tell the graphics card where to overlay the " "video image." -msgstr "Görüntü renk anahtarını etkinleÅŸtirme kullanımı, video görüntüsünün nerede ekranı kaplayacağını ekran kartına bildirir." +msgstr "" +"Görüntü renk anahtarını etkinleÅŸtirme kullanımı, video görüntüsünün nerede " +"ekranı kaplayacağını ekran kartına bildirir." -#: src/video_out/video_out_directfb.c:1364 -msgid "video color key" +#: src/video_out/video_out_directfb.c:1360 +#, fuzzy +msgid "video colour key" msgstr "görüntü renk anahtarı" -#: src/video_out/video_out_directfb.c:1365 +#: src/video_out/video_out_directfb.c:1361 +#: src/video_out/video_out_vidix.c:1168 src/video_out/video_out_vidix.c:1175 +#: src/video_out/video_out_vidix.c:1182 src/video_out/xv_common.h:25 msgid "" -"The color key is used to tell the graphics card where to overlay the video " +"The colour key is used to tell the graphics card where to overlay the video " "image. Try different values, if you experience windows becoming transparent." -msgstr "Renk anahtarı, video görüntüsünün nerede ekranı kaplayacağını ekran kartına bildirmek için kullanılır. EÄŸer pencereleriniz ÅŸeffaf hale geliyorsa deÄŸiÅŸik deÄŸerler deneyin." +msgstr "" +"Renk anahtarı, video görüntüsünün nerede ekranı kaplayacağını ekran kartına " +"bildirmek için kullanılır. EÄŸer pencereleriniz ÅŸeffaf hale geliyorsa deÄŸiÅŸik " +"deÄŸerler deneyin." -#: src/video_out/video_out_directfb.c:1374 +#: src/video_out/video_out_directfb.c:1370 msgid "flicker filtering" msgstr "titreme filtreleme" -#: src/video_out/video_out_directfb.c:1375 +#: src/video_out/video_out_directfb.c:1371 msgid "Enable Flicker Filetring for a smooth output on an interlaced display." -msgstr "Titreme Filtreleme, karmaşık görünümün daha düz bir çıkış haline dönüşmesine olanak tanır." +msgstr "" +"Titreme Filtreleme, karmaşık görünümün daha düz bir çıkış haline dönüşmesine " +"olanak tanır." -#: src/video_out/video_out_directfb.c:1382 +#: src/video_out/video_out_directfb.c:1378 msgid "field parity" msgstr "alan eÅŸliÄŸi" -#: src/video_out/video_out_directfb.c:1383 +#: src/video_out/video_out_directfb.c:1379 msgid "" "For an interlaced display, enable controlling the field parity (\"none" "\"=disabled)." @@ -3437,90 +3944,107 @@ msgstr "" "Görüntü karmaÅŸası için, alan eÅŸliÄŸi denetimini etkinleÅŸtirin (\"hiçbiri" "\"=devre dışı)." -#: src/video_out/video_out_directfb.c:1516 +#: src/video_out/video_out_directfb.c:1512 +#, c-format msgid "video_out_directfb: using hardware subpicture acceleration.\n" msgstr "video_out_directfb: donanım altresim hızlandırmasını kullanıyor.\n" -#: src/video_out/video_out_directfb.c:1530 +#: src/video_out/video_out_directfb.c:1526 +#, c-format msgid "video_out_directfb: layer supports video output.\n" msgstr "video_out_directfb: katman görüntü çıktısını destekler.\n" -#: src/video_out/video_out_directfb.c:1539 +#: src/video_out/video_out_directfb.c:1535 +#, c-format msgid "video_out_directfb: layer doesn't support YV12!\n" msgstr "video_out_directfb: katman YV12 desteÄŸi vermez!\n" -#: src/video_out/video_out_directfb.c:1546 +#: src/video_out/video_out_directfb.c:1542 +#, c-format msgid "video_out_directfb: layer doesn't support YUY2!\n" msgstr "video_out_directfb: katman YUY2 desteÄŸi vermez!\n" -#: src/video_out/video_out_directfb.c:1557 -msgid "video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" -msgstr "video_out_directfb:bu katmanda çalmak için en az DirectFB 0.9.25 desteÄŸi gereklidir!\n" +#: src/video_out/video_out_directfb.c:1553 +#, c-format +msgid "" +"video_out_directfb:need at least DirectFB 0.9.25 to play on this layer!\n" +msgstr "" +"video_out_directfb:bu katmanda çalmak için en az DirectFB 0.9.25 desteÄŸi " +"gereklidir!\n" -#: src/video_out/video_out_directfb.c:1592 +#: src/video_out/video_out_directfb.c:1588 #, c-format msgid "video_out_directfb: layer doesn't support buffermode %d!\n" msgstr "video_out_directfb: katman tampon bellek kipini %d desteklemez !\n" -#: src/video_out/video_out_directfb.c:1598 +#: src/video_out/video_out_directfb.c:1594 #, c-format msgid "video_out_directfb: layer doesn't support options 0x%08x!\n" msgstr "video_out_directfb: katmanın desteklemediÄŸi seçenekler 0x%08x!\n" -#: src/video_out/video_out_directfb.c:1692 +#: src/video_out/video_out_directfb.c:1688 +#, c-format msgid "video_out_directfb: using hardware accelerated image scaling.\n" -msgstr "video_out_directfb: donanım tarafından hızlandırılan resim ölçeklemesini kullanıyor.\n" +msgstr "" +"video_out_directfb: donanım tarafından hızlandırılan resim ölçeklemesini " +"kullanıyor.\n" -#: src/video_out/video_out_directfb.c:1704 +#: src/video_out/video_out_directfb.c:1700 +#, c-format msgid "" "video_out_directfb: image scaling with deinterlacing is hardware " "accelerated.\n" -msgstr "video_out_directfb: dönüştürme destekli resim ölçekleme donanım hızlandırmalıdır.\n" +msgstr "" +"video_out_directfb: dönüştürme destekli resim ölçekleme donanım " +"hızlandırmalıdır.\n" -#: src/video_out/video_out_directfb.c:1782 +#: src/video_out/video_out_directfb.c:1778 msgid "video layer id (auto: -1)" msgstr "görüntü katman kimliÄŸi (otomatik: -1)" -#: src/video_out/video_out_directfb.c:1783 +#: src/video_out/video_out_directfb.c:1779 msgid "Select the video output layer by its id." msgstr "Görüntü çıkış katmanını kendi kimliÄŸiyle birlikte seçiniz." -#: src/video_out/video_out_directfb.c:1804 -#: src/video_out/video_out_directfb.c:2014 +#: src/video_out/video_out_directfb.c:1800 +#: src/video_out/video_out_directfb.c:2010 #, c-format msgid "video_out_directfb: using display layer #%d.\n" msgstr "video_out_directfb: kullanılan görüntü katmanı #%d.\n" -#: src/video_out/video_out_directfb.c:1888 +#: src/video_out/video_out_directfb.c:1884 msgid "xine video output plugin using DirectFB." msgstr "xine görüntü çıkış eklentisi DirectFB kullanıyor." -#: src/video_out/video_out_directfb.c:2007 +#: src/video_out/video_out_directfb.c:2003 +#, c-format msgid "video_out_directfb: no usable display layer was found!\n" msgstr "video_out_directfb: kullanılabilecek görüntü katmanı bulunamadı!\n" -#: src/video_out/video_out_directfb.c:2096 +#: src/video_out/video_out_directfb.c:2092 msgid "xine video output plugin using DirectFB under XDirectFB." -msgstr "xine video çıkış eklentisi XDirectFB altında yer alan DirectFB kullanıyor." +msgstr "" +"xine video çıkış eklentisi XDirectFB altında yer alan DirectFB kullanıyor." -#: src/video_out/video_out_directx.c:1236 +#: src/video_out/video_out_directx.c:1291 msgid "xine video output plugin for win32 using directx" msgstr "directx kullanan win32 için xine video çıkış eklentisi" #: src/video_out/video_out_fb.c:758 -#, c-format +#, fuzzy, c-format msgid "" -"video_out_fb: only packed truecolor/directcolor is supported (%d).\n" +"video_out_fb: only packed truecolour/directcolour is supported (%d).\n" " Check 'fbset -i' or try 'fbset -depth 16'.\n" msgstr "" -"video_out_fb: sadece paketlenmiÅŸ truecolor/directcolor desteklenmektedir (%d).\n" +"video_out_fb: sadece paketlenmiÅŸ truecolor/directcolor desteklenmektedir (%" +"d).\n" " Åžu komutu 'fbset -i' veya 'fbset -depth 16' seçeneÄŸini deneyin.\n" -#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1236 +#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1248 msgid "framebuffer device name" msgstr "çerçevearabellek aygıtı ismi" -#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1237 +#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1249 msgid "" "Specifies the file name for the framebuffer device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3528,9 +4052,13 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" "Kullanılacak olan çerçevearabellek aygıtı ismi için dosya adını belirler.\n" -"Bu ayarlar güvenlik açısından kritiktir, çünkü dosya deÄŸiÅŸtirildiÄŸinde, xine bu dosyayı ilgisiz içerikle doldurmak için kullanılabilir. Bu yüzden, bu yüzden girdiÄŸiniz deÄŸerin çerçevearabellek aygıtı için uygun olmasına özen göstermelisiniz." +"Bu ayarlar güvenlik açısından kritiktir, çünkü dosya deÄŸiÅŸtirildiÄŸinde, xine " +"bu dosyayı ilgisiz içerikle doldurmak için kullanılabilir. Bu yüzden, bu " +"yüzden girdiÄŸiniz deÄŸerin çerçevearabellek aygıtı için uygun olmasına özen " +"göstermelisiniz." #: src/video_out/video_out_fb.c:893 +#, c-format msgid "video_out_fb: Your video mode was not recognized, sorry.\n" msgstr "video_out_fb: Video kipiniz tanınamadı, üzgünüm.\n" @@ -3547,16 +4075,19 @@ msgid "" " are available which is less than the recommended %d buffers. Lowering\n" " the frame buffer resolution might help.\n" msgstr "" -"UYARI: video_out_fb: Tampon belleÄŸin sıfır kopyası DEVRE DIÅžI çünkü sadece %d ara belleÄŸe alır\n" +"UYARI: video_out_fb: Tampon belleÄŸin sıfır kopyası DEVRE DIÅžI çünkü sadece %" +"d ara belleÄŸe alır\n" " önerilen %d tampon belleÄŸe göre daha düşük seviyededir. Düşürüyor\n" " çerçeve tampon bellek çözünürlüğü yardımcı olabilir.\n" #: src/video_out/video_out_fb.c:967 +#, c-format msgid "" "WARNING: video_out_fb: Zero copy buffers are DISABLED because kernel driver\n" " do not support screen panning (used for frame flips).\n" msgstr "" -"UYARI: video_out_fb: Tampon belleÄŸin sıfır kopyası DEVRE DIÅžI sorun çekirdek sürücüsündedir\n" +"UYARI: video_out_fb: Tampon belleÄŸin sıfır kopyası DEVRE DIÅžI sorun çekirdek " +"sürücüsündedir\n" " ekran panlamasını desteklemez (çerçeve hareketleri için kullanılır.).\n" #: src/video_out/video_out_fb.c:1036 @@ -3578,11 +4109,11 @@ msgstr "Linux çerçeve ara bellek aygıtı için Xine video çıkış eklentisi msgid "xine video output plugin which displays nothing" msgstr "hiçbir ÅŸey göstermeyen xine video çıkış eklentisi" -#: src/video_out/video_out_opengl.c:1886 +#: src/video_out/video_out_opengl.c:1884 msgid "OpenGL renderer" msgstr "OpenGL uygulayıcısı" -#: src/video_out/video_out_opengl.c:1887 +#: src/video_out/video_out_opengl.c:1885 msgid "" "The OpenGL plugin provides several render modules:\n" "\n" @@ -3613,15 +4144,18 @@ msgstr "" "OpenGL eklentisi pek çok iÅŸleme modülü saÄŸlar:\n" "\n" "2D_Tex_Fragprog\n" -"Bu modül resimleri YUV 2D dokuları olarak indirir ve dokulanmış dilim olarak iÅŸler\n" +"Bu modül resimleri YUV 2D dokuları olarak indirir ve dokulanmış dilim olarak " +"iÅŸler\n" "ve RGB'yi yeniden oluÅŸturmak için dilimlere programları kullanır.\n" "Bu, modern grafik kartları için en iyi ve en hızlı yöntemdir.\n" "\n" "2D_Tex\n" -"Bu modül resimleri 2D dokular olarak indirir ve dokulanmış dilim olarak iÅŸler.\n" +"Bu modül resimleri 2D dokular olarak indirir ve dokulanmış dilim olarak " +"iÅŸler.\n" "2D_Tex_Tiled\n" "Bu modül resimleri çoklu 2D dokular olarak indirir ve dokulanmış\n" -"dilim olarak iÅŸler. Böylece, daha küçük oranda ama en büyük doku boyutlarıyla çalışılmış olur.\n" +"dilim olarak iÅŸler. Böylece, daha küçük oranda ama en büyük doku " +"boyutlarıyla çalışılmış olur.\n" "Image_Pipeline\n" "Bu modül resimleri iÅŸlemek için glDraw() kullanır.\n" "Ancak, birkaç hızlandırılmış sürücülerle bu mümkündür.\n" @@ -3633,11 +4167,11 @@ msgstr "" "Environment_Mapped_Torus\n" "Resimleri eÄŸilip bükülen halkada yansıtarak gösterir. Harika =)" -#: src/video_out/video_out_opengl.c:1909 +#: src/video_out/video_out_opengl.c:1907 msgid "OpenGL minimum framerate" msgstr "OpenGL en az çerçeve oranı" -#: src/video_out/video_out_opengl.c:1910 +#: src/video_out/video_out_opengl.c:1908 msgid "" "Minimum framerate for animated render routines.\n" "Ignored for static render routines.\n" @@ -3645,27 +4179,28 @@ msgstr "" "Hareketli iÅŸleme yolları için en az çerçeve oranı\n" "DuraÄŸan iÅŸleme yolları göz ardı edilmiÅŸtir.\n" -#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1012 -#: src/video_out/video_out_xcbxv.c:1470 src/video_out/video_out_xv.c:1523 -#: src/video_out/video_out_xvmc.c:1459 src/video_out/video_out_xxmc.c:2561 +#: src/video_out/video_out_opengl.c:1913 src/video_out/video_out_vidix.c:1024 +#: src/video_out/xv_common.h:46 msgid "enable double buffering" msgstr "çift ara belleÄŸe almayı etkinleÅŸtir" -#: src/video_out/video_out_opengl.c:1916 +#: src/video_out/video_out_opengl.c:1914 msgid "" "For OpenGL double buffering does not only remove tearing artifacts,\n" "it also reduces flickering a lot.\n" "It should not have any performance impact." msgstr "" -"OpenGL çift ara belleÄŸe alma iÅŸlemi için sadece parçalanan görüntüleri kaldırmakla kalmaz,\n" +"OpenGL çift ara belleÄŸe alma iÅŸlemi için sadece parçalanan görüntüleri " +"kaldırmakla kalmaz,\n" "aynı zamanda titremeyi de oldukça azaltır.\n" "Bunun performansa herhangi bir etkisi olmaz." -#: src/video_out/video_out_opengl.c:1963 +#: src/video_out/video_out_opengl.c:2007 msgid "xine video output plugin using the OpenGL 3D graphics API" msgstr "OpenGL 3D grafikleri API'sini kullanan xine video çıkış eklentisi" #: src/video_out/video_out_pgx32.c:187 +#, c-format msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n" msgstr "video_out_pgx32: Hata: video penceresi için DGA yakalanamıyor\n" @@ -3677,9 +4212,11 @@ msgstr "video_out_pgx32: Hata: ioctl baÅŸarılamadı, kötü aygıt (%s)\n" #: src/video_out/video_out_pgx32.c:213 #, c-format msgid "video_out_pgx32: Error: '%s' is not a pgx32 framebuffer device\n" -msgstr "video_out_pgx32: Hata: '%s' bir pgx32 çerçeve ara belleÄŸi aygıtı deÄŸildir\n" +msgstr "" +"video_out_pgx32: Hata: '%s' bir pgx32 çerçeve ara belleÄŸi aygıtı deÄŸildir\n" #: src/video_out/video_out_pgx64.c:278 +#, c-format msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n" msgstr "video_out_pgx64: Hata: video penceresi için DGA yakalanamıyor\n" @@ -3690,41 +4227,57 @@ msgstr "video_out_pgx64: Hata: çerçeve ara belleÄŸi aygıtını açamıyor '%s #: src/video_out/video_out_pgx64.c:303 #, c-format -msgid "video_out_pgx64: Error: ioctl failed (VIS_GETIDENTIFIER), bad device (%s)\n" -msgstr "video_out_pgx64: Hata: Hata: ioctl baÅŸarılamadı (VIS_GETIDENTIFIER), kötü aygıt (%s)\n" +msgid "" +"video_out_pgx64: Error: ioctl failed (VIS_GETIDENTIFIER), bad device (%s)\n" +msgstr "" +"video_out_pgx64: Hata: Hata: ioctl baÅŸarılamadı (VIS_GETIDENTIFIER), kötü " +"aygıt (%s)\n" #: src/video_out/video_out_pgx64.c:316 #, c-format -msgid "video_out_pgx64: Error: '%s' is not a xvr100/pgx64/pgx24 framebuffer device\n" -msgstr "video_out_pgx64: Hata: '%s' bir xvr100/pgx64/pgx24 çerçeve ara belleÄŸi aygıtı deÄŸildir\n" +msgid "" +"video_out_pgx64: Error: '%s' is not a xvr100/pgx64/pgx24 framebuffer device\n" +msgstr "" +"video_out_pgx64: Hata: '%s' bir xvr100/pgx64/pgx24 çerçeve ara belleÄŸi " +"aygıtı deÄŸildir\n" #: src/video_out/video_out_pgx64.c:337 -msgid "video_out_pgx64: Error: video overlay on this screen is already in use\n" -msgstr "video_out_pgx64: Hata: bu ekrandaki video üstyazım halen kullanımdadır\n" +#, c-format +msgid "" +"video_out_pgx64: Error: video overlay on this screen is already in use\n" +msgstr "" +"video_out_pgx64: Hata: bu ekrandaki video üstyazım halen kullanımdadır\n" #: src/video_out/video_out_pgx64.c:352 +#, c-format msgid "video_out_pgx64: Error: unable to set window properties\n" msgstr "video_out_pgx64: Hata: pencere özellikleri ayarlanamıyor\n" #: src/video_out/video_out_pgx64.c:808 +#, c-format msgid "video_out_pgx64: Warning: low video memory, multi-buffering disabled\n" -msgstr "video_out_pgx64: Uyarı: düşük görüntü hafızası, çift-ara bellekleme devre dışı\n" +msgstr "" +"video_out_pgx64: Uyarı: düşük görüntü hafızası, çift-ara bellekleme devre " +"dışı\n" #: src/video_out/video_out_pgx64.c:840 +#, c-format msgid "video_out_pgx64: Error: insuffucient video memory\n" msgstr "video_out_pgx64: Hata: yetersiz video hafızası\n" #: src/video_out/video_out_pgx64.c:856 +#, c-format msgid "video_out_pgx64: Warning: low video memory, double-buffering disabled\n" -msgstr "video_out_pgx64: Uyarı: düşük video hafızası, çift-ara bellekleme devre dışı\n" +msgstr "" +"video_out_pgx64: Uyarı: düşük video hafızası, çift-ara bellekleme devre " +"dışı\n" #: src/video_out/video_out_pgx64.c:1394 +#, c-format msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n" msgstr "video_out_pgx64: Hata: ioctl baÅŸarılamadı (FBIOGATTR)\n" -#: src/video_out/video_out_pgx64.c:1461 src/video_out/video_out_xcbxv.c:1437 -#: src/video_out/video_out_xv.c:1490 src/video_out/video_out_xvmc.c:1444 -#: src/video_out/video_out_xxmc.c:2528 +#: src/video_out/video_out_pgx64.c:1461 src/video_out/xv_common.h:24 msgid "video overlay colour key" msgstr "görüntü üstyazım renk anahtarı" @@ -3733,7 +4286,10 @@ msgid "" "The colour key is used to tell the graphics card where it can overlay the " "video image. Try using different values if you see the video showing through " "other windows." -msgstr "Renk anahtarı, video görüntüsünün nerede ekranı kaplayacağını ekran kartına bildirmek için kullanılır. EÄŸer videonun farklı pencerelerde gösterdiÄŸini saptarsanız deÄŸiÅŸik deÄŸerler deneyin." +msgstr "" +"Renk anahtarı, video görüntüsünün nerede ekranı kaplayacağını ekran kartına " +"bildirmek için kullanılır. EÄŸer videonun farklı pencerelerde gösterdiÄŸini " +"saptarsanız deÄŸiÅŸik deÄŸerler deneyin." #: src/video_out/video_out_pgx64.c:1469 msgid "enable chroma keying" @@ -3743,7 +4299,9 @@ msgstr "renk berraklığı anahtarlamayı etkinleÅŸtir" msgid "" "Draw OSD graphics on top of the overlay colour key rather than blend them " "into each frame." -msgstr "OSD grafiklerini her çerçevede harmanlamak yerine üstyazım renk anahtarının üzerine çizin." +msgstr "" +"OSD grafiklerini her çerçevede harmanlamak yerine üstyazım renk anahtarının " +"üzerine çizin." #: src/video_out/video_out_pgx64.c:1473 msgid "enable multi-buffering" @@ -3755,98 +4313,130 @@ msgid "" "memory." msgstr "Çoklu Tamponlama, daha fazla görüntü hafızası kullanılmasına yol açar." -#: src/video_out/video_out_sdl.c:480 +#: src/video_out/video_out_sdl.c:490 msgid "use hardware acceleration if available" msgstr "olanaklı ise donanım hızlandırması kullan" -#: src/video_out/video_out_sdl.c:481 +#: src/video_out/video_out_sdl.c:491 msgid "" "When your system supports it, hardware acceleration provided by your " "graphics hardware will be used. This might not work, so you can disable it, " "if things go wrong." -msgstr "Sisteminiz desteklediÄŸinde, grafik donanımız tarafından saÄŸlanan donanım hızlandırması kullanılacaktır. EÄŸer bir ÅŸeyler yanlış giderse, bu çalışmayabilir, o zaman devre dışı bırakabilirsiniz." +msgstr "" +"Sisteminiz desteklediÄŸinde, grafik donanımız tarafından saÄŸlanan donanım " +"hızlandırması kullanılacaktır. EÄŸer bir ÅŸeyler yanlış giderse, bu " +"çalışmayabilir, o zaman devre dışı bırakabilirsiniz." -#: src/video_out/video_out_sdl.c:523 +#: src/video_out/video_out_sdl.c:537 +#, c-format msgid "sdl has to emulate a 16 bit surfaces, that will slow things down.\n" -msgstr "sdl 16 bit yüzeylerine öykünmek zorundadır, ki bu da iÅŸleri yavaÅŸlatır.\n" +msgstr "" +"sdl 16 bit yüzeylerine öykünmek zorundadır, ki bu da iÅŸleri yavaÅŸlatır.\n" -#: src/video_out/video_out_sdl.c:560 +#: src/video_out/video_out_sdl.c:574 +#, c-format msgid "video_out_sdl: fullscreen mode is NOT supported\n" msgstr "video_out_sdl: tam ekran kipi desteklenmiyor\n" -#: src/video_out/video_out_sdl.c:571 +#: src/video_out/video_out_sdl.c:585 msgid "xine video output plugin using the Simple Direct Media Layer" -msgstr "Simple Direct Media Layer özelliÄŸini kullanan xine görüntü çıkışı eklentisi" +msgstr "" +"Simple Direct Media Layer özelliÄŸini kullanan xine görüntü çıkışı eklentisi" #: src/video_out/video_out_stk.c:452 msgid "xine video output plugin using the Libstk Surface Set-top Toolkit" -msgstr "Libstk Surface Set-top Toolkit özelliÄŸini kullanan xine görüntü çıkışı eklentisi" +msgstr "" +"Libstk Surface Set-top Toolkit özelliÄŸini kullanan xine görüntü çıkışı " +"eklentisi" #: src/video_out/video_out_syncfb.c:280 +#, c-format msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n" -msgstr "video_out_syncfb: hata. (YUY2 ekran kartını tarafından desteklenmiyor)\n" +msgstr "" +"video_out_syncfb: hata. (YUY2 ekran kartını tarafından desteklenmiyor)\n" #: src/video_out/video_out_syncfb.c:296 +#, c-format msgid "video_out_syncfb: error. (YV12 not supported by your graphic card)\n" -msgstr "video_out_syncfb: hata. (YV12 ekran kartınız tarafından desteklenmiyor)\n" +msgstr "" +"video_out_syncfb: hata. (YV12 ekran kartınız tarafından desteklenmiyor)\n" -#: src/video_out/video_out_syncfb.c:938 +#: src/video_out/video_out_syncfb.c:950 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n" -msgstr "video_out_syncfb: bilgi. (SyncFB modülü YUV 4:2:0 (3 plane)) parametresini destekler\n" +msgstr "" +"video_out_syncfb: bilgi. (SyncFB modülü YUV 4:2:0 (3 plane)) parametresini " +"destekler\n" -#: src/video_out/video_out_syncfb.c:943 +#: src/video_out/video_out_syncfb.c:955 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n" -msgstr "video_out_syncfb: bilgi. (SyncFB modülü YUV 4:2:0 (2 plane)) parametresini destekler\n" +msgstr "" +"video_out_syncfb: bilgi. (SyncFB modülü YUV 4:2:0 (2 plane)) parametresini " +"destekler\n" -#: src/video_out/video_out_syncfb.c:948 +#: src/video_out/video_out_syncfb.c:960 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n" -msgstr "video_out_syncfb: bilgi. (SyncFB modülü YUV 4:2:2) parametresini destekler\n" +msgstr "" +"video_out_syncfb: bilgi. (SyncFB modülü YUV 4:2:2) parametresini destekler\n" -#: src/video_out/video_out_syncfb.c:954 +#: src/video_out/video_out_syncfb.c:966 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n" -msgstr "video_out_syncfb: bilgi. (SyncFB modülü YUY2) parametresini destekler\n" +msgstr "" +"video_out_syncfb: bilgi. (SyncFB modülü YUY2) parametresini destekler\n" -#: src/video_out/video_out_syncfb.c:961 +#: src/video_out/video_out_syncfb.c:973 +#, c-format msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n" -msgstr "video_out_syncfb: bilgi. (SyncFB modülü RGB565) parametresini destekler\n" +msgstr "" +"video_out_syncfb: bilgi. (SyncFB modülü RGB565) parametresini destekler\n" -#: src/video_out/video_out_syncfb.c:966 +#: src/video_out/video_out_syncfb.c:978 +#, c-format msgid "" "video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor " "RGB565)\n" msgstr "" -"video_out_syncfb: durduruyor. (SyncFB modülü, ne YV12 ve YUY2 parametrelerini, ne de " -"RGB565) parametresini destekler\n" +"video_out_syncfb: durduruyor. (SyncFB modülü, ne YV12 ve YUY2 " +"parametrelerini, ne de RGB565) parametresini destekler\n" -#: src/video_out/video_out_syncfb.c:985 +#: src/video_out/video_out_syncfb.c:997 +#, c-format msgid "" "video_out_syncfb: info. (brightness/contrast control won't be available " "because your SyncFB kernel module seems to be outdated. Please refer to " "README.syncfb for informations on how to update it.)\n" msgstr "" -"video_out_syncfb: bilgi. (parlaklık/zıtlık denetimi uygun olmayacak " -"çünkü SyncFB çekirdek modülünüz güncelliÄŸini yitirmiÅŸ gözüküyor. Onu nasıl güncelleyeceÄŸinizi öğrenmek için " -"README.syncfb belgesine bakınız.)\n" +"video_out_syncfb: bilgi. (parlaklık/zıtlık denetimi uygun olmayacak çünkü " +"SyncFB çekirdek modülünüz güncelliÄŸini yitirmiÅŸ gözüküyor. Onu nasıl " +"güncelleyeceÄŸinizi öğrenmek için README.syncfb belgesine bakınız.)\n" -#: src/video_out/video_out_syncfb.c:1009 +#: src/video_out/video_out_syncfb.c:1021 msgid "default number of frame repetitions" msgstr "çerçeve tekrarlarının öntanımlı numarası" -#: src/video_out/video_out_syncfb.c:1010 +#: src/video_out/video_out_syncfb.c:1022 msgid "" "This specifies how many times a single video frame will be displayed " "consecutively." -msgstr "Bu, tek video çerçevenizin ardışık olarak kaç defa görüntülenebileceÄŸini belirler." +msgstr "" +"Bu, tek video çerçevenizin ardışık olarak kaç defa görüntülenebileceÄŸini " +"belirler." -#: src/video_out/video_out_syncfb.c:1058 -msgid "xine video output plugin using the SyncFB module for Matrox G200/G400 cards" -msgstr "Matrox G200/G400 kartları için SyncFB modülünü kullanan xine görüntü çıkışı eklentisi" +#: src/video_out/video_out_syncfb.c:1070 +msgid "" +"xine video output plugin using the SyncFB module for Matrox G200/G400 cards" +msgstr "" +"Matrox G200/G400 kartları için SyncFB modülünü kullanan xine görüntü çıkışı " +"eklentisi" -#: src/video_out/video_out_syncfb.c:1076 +#: src/video_out/video_out_syncfb.c:1088 msgid "SyncFB device name" msgstr "SyncFB aygıt ismi" -#: src/video_out/video_out_syncfb.c:1077 +#: src/video_out/video_out_syncfb.c:1089 msgid "" "Specifies the file name for the SyncFB (TeleTux) device to be used.\n" "This setting is security critical, because when changed to a different file, " @@ -3854,92 +4444,94 @@ msgid "" "careful that the value you enter really is a proper framebuffer device." msgstr "" "Kullanılacak olan SyncFB (TeleTux) aygıtı için dosya ismini belirler.\n" -"Bu güvenlik açısından kritiktir, çünkü dosya adı deÄŸiÅŸtirildiÄŸinde, xine bu dosyanın içini ilgisiz içerikle doldurması için kullanılabilir.bu yüzden çerçeve belleÄŸi aygıtı için gerçekten uygun bir deÄŸer girmeye dikkat etmelisiniz." +"Bu güvenlik açısından kritiktir, çünkü dosya adı deÄŸiÅŸtirildiÄŸinde, xine bu " +"dosyanın içini ilgisiz içerikle doldurması için kullanılabilir.bu yüzden " +"çerçeve belleÄŸi aygıtı için gerçekten uygun bir deÄŸer girmeye dikkat " +"etmelisiniz." -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "red intensity" msgstr "kırmızı yoÄŸunluÄŸu" -#: src/video_out/video_out_vidix.c:990 +#: src/video_out/video_out_vidix.c:1002 msgid "The intensity of the red colour components." msgstr "Kırmızı renk bileÅŸenlerinin yoÄŸunluÄŸu." -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "green intensity" msgstr "yeÅŸil yoÄŸunluÄŸu" -#: src/video_out/video_out_vidix.c:995 +#: src/video_out/video_out_vidix.c:1007 msgid "The intensity of the green colour components." msgstr "YeÅŸil renk bileÅŸenlerinin yoÄŸunluÄŸu." -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "blue intensity" msgstr "mavi yoÄŸunluÄŸu" -#: src/video_out/video_out_vidix.c:1000 +#: src/video_out/video_out_vidix.c:1012 msgid "The intensity of the blue colour components." msgstr "Mavi renk bileÅŸenlerinin yoÄŸunluÄŸu." -#: src/video_out/video_out_vidix.c:1013 src/video_out/video_out_xcbxv.c:1471 -#: src/video_out/video_out_xv.c:1524 src/video_out/video_out_xvmc.c:1460 -#: src/video_out/video_out_xxmc.c:2562 +#: src/video_out/video_out_vidix.c:1025 src/video_out/xv_common.h:47 msgid "" "Double buffering will synchronize the update of the video image to the " "repainting of the entire screen (\"vertical retrace\"). This eliminates " "flickering and tearing artifacts, but will use more graphics memory." -msgstr "Çift ara bellekleme tüm ekranı yeniden oluÅŸturan görüntünün güncellenmesi için senkron çalışacaktır (\"dikey takip\"). Bu, görüntüde titreme ve parçalanmayı önler, fakat bu iÅŸlem daha çok ekran kartı hafızası kullanımına sebebiyet verecektr." +msgstr "" +"Çift ara bellekleme tüm ekranı yeniden oluÅŸturan görüntünün güncellenmesi " +"için senkron çalışacaktır (\"dikey takip\"). Bu, görüntüde titreme ve " +"parçalanmayı önler, fakat bu iÅŸlem daha çok ekran kartı hafızası kullanımına " +"sebebiyet verecektr." -#: src/video_out/video_out_vidix.c:1060 +#: src/video_out/video_out_vidix.c:1072 +#, c-format msgid "video_out_vidix: adaptor supports the yuy2 format\n" msgstr "video_out_vidix: çevirici yuy2 kipini destekler\n" -#: src/video_out/video_out_vidix.c:1071 +#: src/video_out/video_out_vidix.c:1083 +#, c-format msgid "video_out_vidix: adaptor supports the yv12 format\n" msgstr "video_out_vidix: paralel bilgisayar yv12 kipini destekler\n" -#: src/video_out/video_out_vidix.c:1087 +#: src/video_out/video_out_vidix.c:1099 +#, c-format msgid "video_out_vidix: You have wrong version of VIDIX library\n" msgstr "video_out_vidix: VIDIX kütüphanesinin hatalı sürümüne sahipsiniz\n" -#: src/video_out/video_out_vidix.c:1095 +#: src/video_out/video_out_vidix.c:1107 +#, c-format msgid "video_out_vidix: Couldn't find working VIDIX driver\n" msgstr "video_out_vidix: Çalışan VIDIX sürücünü bulamıyor\n" -#: src/video_out/video_out_vidix.c:1108 +#: src/video_out/video_out_vidix.c:1120 #, c-format msgid "video_out_vidix: using driver: %s by %s\n" msgstr "video_out_vidix: kullanılan sürücü: %s by %s\n" -#: src/video_out/video_out_vidix.c:1155 +#: src/video_out/video_out_vidix.c:1167 msgid "video overlay colour key red component" msgstr "görüntü üstyazım renk anahtarı kırmızı bileÅŸeni" -#: src/video_out/video_out_vidix.c:1156 src/video_out/video_out_vidix.c:1163 -#: src/video_out/video_out_vidix.c:1170 src/video_out/video_out_xcbxv.c:1438 -#: src/video_out/video_out_xv.c:1491 src/video_out/video_out_xvmc.c:1445 -#: src/video_out/video_out_xxmc.c:2529 -msgid "" -"The colour key is used to tell the graphics card where to overlay the video " -"image. Try different values, if you experience windows becoming transparent." -msgstr "Renk anahtarı, video görüntüsünün nerede ekranı kaplayacağını ekran kartına bildirmek için kullanılır. EÄŸer pencereleriniz ÅŸeffaf hale geliyorsa deÄŸiÅŸik deÄŸerler deneyin." - -#: src/video_out/video_out_vidix.c:1162 +#: src/video_out/video_out_vidix.c:1174 msgid "video overlay colour key green component" msgstr "görüntü üstyazım renk anahtarı yeÅŸil bileÅŸeni" -#: src/video_out/video_out_vidix.c:1169 +#: src/video_out/video_out_vidix.c:1181 msgid "video overlay colour key blue component" msgstr "görüntü üstyazım renk anahtarı mavi bileÅŸeni" -#: src/video_out/video_out_vidix.c:1201 +#: src/video_out/video_out_vidix.c:1213 msgid "xine video output plugin using libvidix for x11" msgstr "x11 için libvidix kullanan xine görüntü çıkışı eklentisi" -#: src/video_out/video_out_vidix.c:1283 +#: src/video_out/video_out_vidix.c:1295 msgid "xine video output plugin using libvidix for linux frame buffer" -msgstr "linux çerçeve ara belleÄŸi için libvidix kullanan xine görüntü çıkışı eklentisi" +msgstr "" +"linux çerçeve ara belleÄŸi için libvidix kullanan xine görüntü çıkışı " +"eklentisi" -#: src/video_out/video_out_xcbshm.c:155 +#: src/video_out/video_out_xcbshm.c:150 #, c-format msgid "" "video_out_xcbshm: %s: allocating image\n" @@ -3948,16 +4540,19 @@ msgstr "" "video_out_xcbshm: %s: resmin yerini alıyor\n" "video_out_xcbshm: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xcbshm.c:164 +#: src/video_out/video_out_xcbshm.c:159 +#, c-format msgid "" "video_out_xcbshm: shared memory error (address error) when allocating " "image \n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xcbshm: resmin yerini geçerken paylaşılan bellek hatası (adres hatası ) \n" +"video_out_xcbshm: resmin yerini geçerken paylaşılan bellek hatası (adres " +"hatası ) \n" "video_out_xcbshm: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xcbshm.c:175 +#: src/video_out/video_out_xcbshm.c:170 +#, c-format msgid "" "video_out_xcbshm: x11 error during shared memory XImage creation\n" "video_out_xcbshm: => not using MIT Shared Memory extension.\n" @@ -3965,7 +4560,7 @@ msgstr "" "video_out_xcbshm: paylaşılan bellek XImage oluÅŸturma boyunca x11 hatası\n" "video_out_xcbshm: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xcbshm.c:1098 src/video_out/video_out_xshm.c:1154 +#: src/video_out/video_out_xcbshm.c:1101 src/video_out/video_out_xshm.c:1157 #, c-format msgid "" "\n" @@ -3980,19 +4575,23 @@ msgstr "" "16 bpp derinliÄŸi önerilir!\n" "\n" -#: src/video_out/video_out_xcbshm.c:1111 +#: src/video_out/video_out_xcbshm.c:1114 +#, c-format msgid "video_out_xcbshm: MIT shared memory extension not present on display.\n" -msgstr "video_out_xcbshm: MIT Paylaşılan Bellek uzantısı ÅŸu and ekranda deÄŸildir.\n" +msgstr "" +"video_out_xcbshm: MIT Paylaşılan Bellek uzantısı ÅŸu and ekranda deÄŸildir.\n" -#: src/video_out/video_out_xcbshm.c:1210 +#: src/video_out/video_out_xcbshm.c:1213 +#, c-format msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xcbshm: görüntü kipiniz algılanamadı, üzgünüm :-(\n" -#: src/video_out/video_out_xcbshm.c:1240 src/video_out/video_out_xshm.c:1300 +#: src/video_out/video_out_xcbshm.c:1243 src/video_out/video_out_xshm.c:1303 msgid "xine video output plugin using the MIT X shared memory extension" msgstr "MIT X paylaşılan bellek uzantısını kullanan xine görüntü eklentisi" -#: src/video_out/video_out_xcbxv.c:268 +#: src/video_out/video_out_xcbxv.c:270 +#, c-format msgid "" "video_out_xcbxv: XvShmCreateImage returned a zero size\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4000,7 +4599,7 @@ msgstr "" "video_out_xcbxv: XvShmCreateImage sıfır boyutuna dönüştü\n" "video_out_xcbxv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xcbxv.c:277 +#: src/video_out/video_out_xcbxv.c:279 #, c-format msgid "" "video_out_xcbxv: shared memory error in shmget: %s\n" @@ -4009,7 +4608,8 @@ msgstr "" "video_out_xcbxv: shmget'de paylaşılan bellek hatası: %s\n" "video_out_xcbxv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xcbxv.c:296 +#: src/video_out/video_out_xcbxv.c:298 +#, c-format msgid "" "video_out_xcbxv: x11 error during shared memory XImage creation\n" "video_out_xcbxv: => not using MIT Shared Memory extension.\n" @@ -4017,94 +4617,78 @@ msgstr "" "video_out_xcbxv: XImage oluÅŸturması boyunca x11 hatası\n" "video_out_xcbxv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xcbxv.c:1289 +#: src/video_out/video_out_xcbxv.c:1354 +#, c-format msgid "video_out_xcbxv: Xv extension not present.\n" msgstr "video_out_xcbxv: Xv uzantısı ÅŸu anda hazır deÄŸil.\n" -#: src/video_out/video_out_xcbxv.c:1331 +#: src/video_out/video_out_xcbxv.c:1381 src/video_out/video_out_xxmc.c:2457 +#, c-format +msgid "%s: could not open Xv port %d - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1397 src/video_out/video_out_xv.c:1440 +#: src/video_out/video_out_xxmc.c:2469 +#, c-format +msgid "%s: no available ports of type \"%s\", defaulting...\n" +msgstr "" + +#: src/video_out/video_out_xcbxv.c:1405 +#, c-format msgid "" "video_out_xcbxv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support " "Xv?!\n" msgstr "" -"video_out_xcbxv: Xv extension ÅŸu anda hazır fakat kullanılabilir yuv12 portunu bulamıyorum" -".\n" -" Ekran donanım sürücünüz Xv desteÄŸi vermiyor gibi gözüküyor?!\n" +"video_out_xcbxv: Xv extension ÅŸu anda hazır fakat kullanılabilir yuv12 " +"portunu bulamıyorum.\n" +" Ekran donanım sürücünüz Xv desteÄŸi vermiyor gibi " +"gözüküyor?!\n" -#: src/video_out/video_out_xcbxv.c:1339 -#, c-format +#: src/video_out/video_out_xcbxv.c:1413 +#, fuzzy, c-format msgid "" -"video_out_xcbxv: using Xv port %d from adaptor %s for hardware colorspace " +"video_out_xcbxv: using Xv port %d from adaptor %s for hardware colour space " "conversion and scaling.\n" -msgstr "video_out_xcbxv: Xv portunu %d çeviriciden %s for donanım renk modeli çevrimi ve yükseltmesi için kullanıyor.\n" - -#: src/video_out/video_out_xcbxv.c:1446 src/video_out/video_out_xv.c:1499 -#: src/video_out/video_out_xvmc.c:1453 src/video_out/video_out_xxmc.c:2537 -msgid "autopaint colour key" -msgstr "otomatik boyama renk anahtarı" - -#: src/video_out/video_out_xcbxv.c:1447 src/video_out/video_out_xv.c:1500 -#: src/video_out/video_out_xvmc.c:1454 src/video_out/video_out_xxmc.c:2538 -msgid "Make Xv autopaint its colorkey." -msgstr "XV'yi onun otomatik boyama renk anahtarı yap." +msgstr "" +"video_out_xcbxv: Xv portunu %d çeviriciden %s for donanım renk modeli " +"çevrimi ve yükseltmesi için kullanıyor.\n" -#: src/video_out/video_out_xcbxv.c:1454 src/video_out/video_out_xv.c:1507 -#: src/video_out/video_out_xxmc.c:2545 -msgid "bilinear scaling mode" -msgstr "çift çizgili arıtma kipi" +#: src/video_out/video_out_xcbxv.c:1534 src/video_out/video_out_xv.c:1587 +msgid "enable vblank sync" +msgstr "" -#: src/video_out/video_out_xcbxv.c:1455 src/video_out/video_out_xv.c:1508 -#: src/video_out/video_out_xxmc.c:2546 +#: src/video_out/video_out_xcbxv.c:1535 src/video_out/video_out_xv.c:1588 +#, fuzzy msgid "" -"Selects the bilinear scaling mode for Permedia cards. The individual values " -"are:\n" -"\n" -"Permedia 2\n" -"0 - disable bilinear filtering\n" -"1 - enable bilinear filtering\n" -"\n" -"Permedia 3\n" -"0 - disable bilinear filtering\n" -"1 - horizontal linear filtering\n" -"2 - enable full bilinear filtering" +"This option will synchronize the update of the video image to the repainting " +"of the entire screen (\"vertical retrace\"). This eliminates flickering and " +"tearing artifacts. On nvidia cards one may also need to run \"nvidia-settings" +"\" and choose which display device to sync to under the XVideo Settings tab" msgstr "" -"Çift çizgili arıtma kipini, Permedia kartlar için seçer. Bireysel deÄŸerler ÅŸunlardır:\n" -"\n" -"Permedia 2\n" -"0 - çift çizgili filtrelemeyi devre dışı bırak\n" -"1 - çift çizgili filtrelemeyi etkinleÅŸtir\n" -"\n" -"Permedia 3\n" -"0 - çift çizgili filtrelemeyi devre dışı bırak\n" -"1 - yatay doÄŸrusal filtreleme\n" -"2 - tam çift çizgili filtrelemeyi etkinleÅŸtir" +"Çift ara bellekleme tüm ekranı yeniden oluÅŸturan görüntünün güncellenmesi " +"için senkron çalışacaktır (\"dikey takip\"). Bu, görüntüde titreme ve " +"parçalanmayı önler, fakat bu iÅŸlem daha çok ekran kartı hafızası kullanımına " +"sebebiyet verecektr." -#: src/video_out/video_out_xcbxv.c:1507 +#: src/video_out/video_out_xcbxv.c:1579 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n" msgstr "video_out_xcbxv: bu çevirici yv12 kipini destekler.\n" -#: src/video_out/video_out_xcbxv.c:1512 +#: src/video_out/video_out_xcbxv.c:1584 +#, c-format msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xcbxv: bu çevirici yuy2 kipini destekler.\n" -#: src/video_out/video_out_xcbxv.c:1520 src/video_out/video_out_xv.c:1584 -#: src/video_out/video_out_xxmc.c:2630 -msgid "pitch alignment workaround" -msgstr "karakter hizalama düzeltmesi" - -#: src/video_out/video_out_xcbxv.c:1521 src/video_out/video_out_xv.c:1585 -#: src/video_out/video_out_xxmc.c:2631 -msgid "Some buggy video drivers need a workaround to function properly." -msgstr "Bazı sorunlu video sürücüleri doÄŸru çalışmaları için bazı düzeltmelere ihtiyaç duyarlar." - -#: src/video_out/video_out_xcbxv.c:1527 src/video_out/video_out_xv.c:1591 -#: src/video_out/video_out_xvmc.c:1522 +#: src/video_out/video_out_xcbxv.c:1598 src/video_out/video_out_xv.c:1662 +#: src/video_out/video_out_xvmc.c:1531 msgid "deinterlace method (deprecated)" msgstr "dönüştürme yöntemi (arındırılmış)" -#: src/video_out/video_out_xcbxv.c:1528 src/video_out/video_out_xv.c:1592 -#: src/video_out/video_out_xvmc.c:1523 +#: src/video_out/video_out_xcbxv.c:1599 src/video_out/video_out_xv.c:1663 +#: src/video_out/video_out_xvmc.c:1532 msgid "" "This config setting is deprecated. You should use the new deinterlacing post " "processing settings instead.\n" @@ -4141,9 +4725,18 @@ msgid "" "Applies a slight vertical blur to remove the comb artifacts. Good results " "with medium CPU usage." msgstr "" -"Bu yapılandırma ayarı arındırılmıştır. Bunun yerine yeni bir son iÅŸleme dönümünü kullanabilirsiniz.\n" +"Bu yapılandırma ayarı arındırılmıştır. Bunun yerine yeni bir son iÅŸleme " +"dönümünü kullanabilirsiniz.\n" "\n" -"Eski analog televizyon günlerinde, tek ve çift sayılı video çerçeveleri çizgileri farklı zamanlarda görüntülenebilirdi. Bir fikir olarak bu çizgileri hareket düzlüğünü arttırmak için farklı zamanlarda kaydetme düşüncesi ortaya çıktı. Buna \"dönüştürme\" denildi. Fakat ne yazık ki, bugün ekranlar, tek ve çift sayılara sahip olan çizgileri tek bir zamanda, tek bir çerçeve olarak gösterebilmektedirler (buna da \"geliÅŸmiÅŸ ekran \" denilmektedir), fakat bunlar tepe sonuçları olarak bilinen çirkin çerçeve hatalarına sebep olmaktadırlar. Yazılım dönüştürmesi bu sonuçları azaltmayı amaçlayan bir yaklaşımdır. Bireysel deÄŸerler ÅŸunlardır:\n" +"Eski analog televizyon günlerinde, tek ve çift sayılı video çerçeveleri " +"çizgileri farklı zamanlarda görüntülenebilirdi. Bir fikir olarak bu " +"çizgileri hareket düzlüğünü arttırmak için farklı zamanlarda kaydetme " +"düşüncesi ortaya çıktı. Buna \"dönüştürme\" denildi. Fakat ne yazık ki, " +"bugün ekranlar, tek ve çift sayılara sahip olan çizgileri tek bir zamanda, " +"tek bir çerçeve olarak gösterebilmektedirler (buna da \"geliÅŸmiÅŸ ekran \" " +"denilmektedir), fakat bunlar tepe sonuçları olarak bilinen çirkin çerçeve " +"hatalarına sebep olmaktadırlar. Yazılım dönüştürmesi bu sonuçları azaltmayı " +"amaçlayan bir yaklaşımdır. Bireysel deÄŸerler ÅŸunlardır:\n" "\n" "none\n" "Yazılım dönüştürmesine devre dışı bırakır.\n" @@ -4152,10 +4745,12 @@ msgstr "" "Resmin hareketleri kısımlarını atmak için çizgiler arasında gider gelir.\n" "\n" "weave\n" -"Bob'a benzer ÅŸekilde, fakat tüm çözünürlüğü koruma eÄŸilimiyle, yavaÅŸ hareketli sahnelerde çok detay daha iyidir.\n" +"Bob'a benzer ÅŸekilde, fakat tüm çözünürlüğü koruma eÄŸilimiyle, yavaÅŸ " +"hareketli sahnelerde çok detay daha iyidir.\n" "\n" "greedy\n" -"Çok iyi uyarlanabilir döünÅŸtürücü, fakat daha fazla iÅŸlemci gücü gerektirir.\n" +"Çok iyi uyarlanabilir döünÅŸtürücü, fakat daha fazla iÅŸlemci gücü " +"gerektirir.\n" "\n" "onefield\n" "Daima karıştırı ve dikey çözünürlüğü azaltır.\n" @@ -4164,15 +4759,16 @@ msgstr "" "Onefield ile aynıdır, fakat karışımı donanımda gerçekleÅŸtirir.\n" "\n" "linearblend\n" -"Tarak sonuçlarını kaldırmak için hafif bir dikey bulandırma uygular. Ortalama bir iÅŸlemci hızıyla " -"iyi sonuçlar alınabilir." +"Tarak sonuçlarını kaldırmak için hafif bir dikey bulandırma uygular. " +"Ortalama bir iÅŸlemci hızıyla iyi sonuçlar alınabilir." -#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665 -#: src/video_out/video_out_xxmc.c:2725 +#: src/video_out/video_out_xcbxv.c:1653 src/video_out/video_out_xv.c:1736 +#: src/video_out/video_out_xxmc.c:2771 msgid "xine video output plugin using the MIT X video extension" msgstr "MIT X görüntü geniÅŸlemesini kullanmak için xine görüntü eklentisi" -#: src/video_out/video_out_xshm.c:199 +#: src/video_out/video_out_xshm.c:194 +#, c-format msgid "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4180,7 +4776,7 @@ msgstr "" "video_out_xshm: shared memory error when allocating image\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" -#: src/video_out/video_out_xshm.c:215 +#: src/video_out/video_out_xshm.c:210 #, c-format msgid "" "video_out_xshm: %s: allocating image\n" @@ -4189,15 +4785,18 @@ msgstr "" "video_out_xshm: %s: resmin yerine geçiyor\n" "video_out_xshm: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xshm.c:225 +#: src/video_out/video_out_xshm.c:220 +#, c-format msgid "" "video_out_xshm: shared memory error (address error) when allocating image \n" "video_out_xshm: => not using MIT Shared Memory extension.\n" msgstr "" -"video_out_xshm: resmin yerini geçerken paylaşılan bellek hatası (adres hatası ) \n" +"video_out_xshm: resmin yerini geçerken paylaşılan bellek hatası (adres " +"hatası ) \n" "video_out_xshm: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xshm.c:242 +#: src/video_out/video_out_xshm.c:237 +#, c-format msgid "" "video_out_xshm: x11 error during shared memory XImage creation\n" "video_out_xshm: => not using MIT Shared Memory extension.\n" @@ -4205,15 +4804,19 @@ msgstr "" "video_out_xshm: paylaşılan bellek XImage oluÅŸturma boyunca x11 hatası\n" "video_out_xshm: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xshm.c:1167 +#: src/video_out/video_out_xshm.c:1170 +#, c-format msgid "video_out_xshm: MIT shared memory extension not present on display.\n" -msgstr "video_out_xshm: MIT Paylaşılan Bellek uzantısı ÅŸu and ekranda deÄŸildir.\n" +msgstr "" +"video_out_xshm: MIT Paylaşılan Bellek uzantısı ÅŸu and ekranda deÄŸildir.\n" -#: src/video_out/video_out_xshm.c:1251 +#: src/video_out/video_out_xshm.c:1254 +#, c-format msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n" msgstr "video_out_xshm: görüntü kipiniz algılanamadı, üzgünüm :-(\n" -#: src/video_out/video_out_xv.c:291 +#: src/video_out/video_out_xv.c:298 +#, c-format msgid "" "video_out_xv: XvShmCreateImage failed\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4221,7 +4824,8 @@ msgstr "" "video_out_xv: XvShmCreateImage baÅŸarılamadı\n" "video_out_xv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xv.c:317 +#: src/video_out/video_out_xv.c:324 +#, c-format msgid "" "video_out_xv: XvShmCreateImage returned a zero size\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4229,7 +4833,7 @@ msgstr "" "video_out_xv: XvShmCreateImage bir sıfır boyutuna dönüştü\n" "video_out_xv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xv.c:325 +#: src/video_out/video_out_xv.c:332 #, c-format msgid "" "video_out_xv: shared memory error in shmget: %s\n" @@ -4238,7 +4842,8 @@ msgstr "" "video_out_xv: shmget: %s de paylaşılan bellek hatası\n" "video_out_xv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xv.c:357 +#: src/video_out/video_out_xv.c:364 +#, c-format msgid "" "video_out_xv: x11 error during shared memory XImage creation\n" "video_out_xv: => not using MIT Shared Memory extension.\n" @@ -4246,75 +4851,95 @@ msgstr "" "video_out_xv: paylaşılan bellek XImage oluÅŸturma boyunca x11 hatası\n" "video_out_xv: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xv.c:1336 +#: src/video_out/video_out_xv.c:1403 +#, c-format msgid "video_out_xv: Xv extension not present.\n" msgstr "video_out_xv: Xv uzantısı hazır deÄŸil.\n" -#: src/video_out/video_out_xv.c:1373 +#: src/video_out/video_out_xv.c:1428 +#, c-format +msgid "%s: could not open Xv port %<PRId32> - autodetecting\n" +msgstr "" + +#: src/video_out/video_out_xv.c:1447 +#, c-format msgid "" "video_out_xv: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -"video_out_xv: Xv extension ÅŸu anda hazır fakat kullanılabilir yuv12 portunu bulamıyorum.\n" +"video_out_xv: Xv extension ÅŸu anda hazır fakat kullanılabilir yuv12 portunu " +"bulamıyorum.\n" " Ekran donanım sürücünüz Xv desteÄŸi vermiyor gibi gözüküyor?!\n" -#: src/video_out/video_out_xv.c:1382 -#, c-format +#: src/video_out/video_out_xv.c:1456 +#, fuzzy, c-format msgid "" -"video_out_xv: using Xv port %ld from adaptor %s for hardware colorspace " +"video_out_xv: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" -msgstr "video_out_xv: Xv portunu %ld çeviriciden %s donanım renk modeli çevrimi ve yükseltmesi için kullanıyor.\n" +msgstr "" +"video_out_xv: Xv portunu %ld çeviriciden %s donanım renk modeli çevrimi ve " +"yükseltmesi için kullanıyor.\n" -#: src/video_out/video_out_xv.c:1557 +#: src/video_out/video_out_xv.c:1629 +#, c-format msgid "video_out_xv: this adaptor supports the yv12 format.\n" msgstr "video_out_xv: bu çevirici yv12 kipini destekler.\n" -#: src/video_out/video_out_xv.c:1562 +#: src/video_out/video_out_xv.c:1634 +#, c-format msgid "video_out_xv: this adaptor supports the yuy2 format.\n" msgstr "video_out_xv: bu çevirici yuy2 kipini destekler.\n" -#: src/video_out/video_out_xvmc.c:1591 +#: src/video_out/video_out_xvmc.c:1600 msgid "xine video output plugin using the XvMC X video extension" msgstr "XvMC X görüntü uzantısını kullanması için xine görüntü eklentisi" -#: src/video_out/video_out_xvmc.c:1637 +#: src/video_out/video_out_xvmc.c:1642 +#, c-format msgid "video_out_xvmc: XvMC extension not present.\n" msgstr "video_out_xvmc: XvMC uzantısı ÅŸu an hazır deÄŸil.\n" -#: src/video_out/video_out_xvmc.c:1735 +#: src/video_out/video_out_xvmc.c:1740 +#, c-format msgid "" "video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" -msgstr "video_out_xvmc: Xv uzantısı hazır fakat kullanılabilir durumda bir yuv12 portu bulamıyorum.\n" +msgstr "" +"video_out_xvmc: Xv uzantısı hazır fakat kullanılabilir durumda bir yuv12 " +"portu bulamıyorum.\n" -#: src/video_out/video_out_xvmc.c:1744 -#, c-format +#: src/video_out/video_out_xvmc.c:1749 +#, fuzzy, c-format msgid "" "video_out_xvmc: using Xv port %ld from adaptor %s\n" -" for hardware colorspace conversion and scaling\n" +" for hardware colour space conversion and scaling\n" msgstr "" "video_out_xvmc: Xv portunu %ld çeviriciden %s kullanıyor\n" " donanım renk modeli çevrimi ve yükselmesi için\n" -#: src/video_out/video_out_xvmc.c:1749 +#: src/video_out/video_out_xvmc.c:1754 +#, c-format msgid " idct and motion compensation acceleration \n" msgstr " idct ve hareket bedeli hızlandırılması \n" -#: src/video_out/video_out_xvmc.c:1751 +#: src/video_out/video_out_xvmc.c:1756 +#, c-format msgid " motion compensation acceleration only\n" msgstr " sadece hareket bedeli hızlandırılması\n" -#: src/video_out/video_out_xvmc.c:1753 +#: src/video_out/video_out_xvmc.c:1758 +#, c-format msgid " no XvMC support \n" msgstr " hiçbir XvMC desteÄŸi yok \n" -#: src/video_out/video_out_xvmc.c:1754 +#: src/video_out/video_out_xvmc.c:1759 #, c-format msgid " With Overlay = %d; UnsignedIntra = %d.\n" msgstr " Üstyazımlı = %d; İmzalanmamış Intra = %d.\n" -#: src/video_out/video_out_xxmc.c:642 +#: src/video_out/video_out_xxmc.c:639 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage failed\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4322,7 +4947,8 @@ msgstr "" "video_out_xxmc: XvShmCreateImage baÅŸarılamadı\n" "video_out_xxmc: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xxmc.c:652 +#: src/video_out/video_out_xxmc.c:649 +#, c-format msgid "" "video_out_xxmc: XvShmCreateImage returned a zero size\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4330,7 +4956,7 @@ msgstr "" "video_out_xxmc: XvShmCreateImage sıfır boyutuna dönüştü\n" "video_out_xxmc: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xxmc.c:660 +#: src/video_out/video_out_xxmc.c:657 #, c-format msgid "" "video_out_xxmc: shared memory error in shmget: %s\n" @@ -4339,7 +4965,8 @@ msgstr "" "video_out_xxmc: shmget'de paylaşılan bellek hatası: %s\n" "video_out_xxmc: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xxmc.c:692 +#: src/video_out/video_out_xxmc.c:689 +#, c-format msgid "" "video_out_xxmc: x11 error during shared memory XImage creation\n" "video_out_xxmc: => not using MIT Shared Memory extension.\n" @@ -4347,40 +4974,47 @@ msgstr "" "video_out_xxmc: XImage oluÅŸturması boyunca x11 hatası\n" "video_out_xxmc: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n" -#: src/video_out/video_out_xxmc.c:2380 +#: src/video_out/video_out_xxmc.c:2432 +#, c-format msgid "video_out_xxmc: Xv extension not present.\n" msgstr "video_out_xxmc: Xv uzantısı ÅŸu anda hazır deÄŸil.\n" -#: src/video_out/video_out_xxmc.c:2417 +#: src/video_out/video_out_xxmc.c:2476 +#, c-format msgid "" "video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 " "port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n" msgstr "" -"video_out_xxmc: Xv extension ÅŸu anda hazır fakat kullanılabilir yuv12 portunu bulamıyorum" -".\n" +"video_out_xxmc: Xv extension ÅŸu anda hazır fakat kullanılabilir yuv12 " +"portunu bulamıyorum.\n" " Ekran donanım sürücünüz Xv desteÄŸi vermiyor gibi gözüküyor?!\n" -#: src/video_out/video_out_xxmc.c:2426 -#, c-format +#: src/video_out/video_out_xxmc.c:2485 +#, fuzzy, c-format msgid "" -"video_out_xxmc: using Xv port %ld from adaptor %s for hardware colorspace " +"video_out_xxmc: using Xv port %ld from adaptor %s for hardware colour space " "conversion and scaling.\n" -msgstr "video_out_xxmc: donanım renk modeli çevrimi ve yükselmesi için Xv portunu %ld çevirividen %s kullanıyor\n" +msgstr "" +"video_out_xxmc: donanım renk modeli çevrimi ve yükselmesi için Xv portunu %" +"ld çevirividen %s kullanıyor\n" -#: src/video_out/video_out_xxmc.c:2602 +#: src/video_out/video_out_xxmc.c:2649 +#, c-format msgid "video_out_xxmc: this adaptor supports the yv12 format.\n" msgstr "video_out_xxmc: bu çevirici yv12 kipini destekler.\n" -#: src/video_out/video_out_xxmc.c:2607 +#: src/video_out/video_out_xxmc.c:2654 +#, c-format msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n" msgstr "video_out_xxmc: bu çevirici yuy2 kipini destekler.\n" -#: src/video_out/video_out_xxmc.c:2636 +#: src/video_out/video_out_xxmc.c:2682 msgid "Make XvMC allocate more frames for better buffering." -msgstr "Daha iyi tamponlama için XvMC belirlemesini daha fazla çerçeveye atayın." +msgstr "" +"Daha iyi tamponlama için XvMC belirlemesini daha fazla çerçeveye atayın." -#: src/video_out/video_out_xxmc.c:2637 +#: src/video_out/video_out_xxmc.c:2683 msgid "" "Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" @@ -4388,40 +5022,43 @@ msgid "" msgstr "" "Bazı XvMC yürütmeleri 8 kareden daha fazlasına izin verir..\n" "Bu seçenek, açıldığında, sürücülerin\n" -"15 kareyi denemesine izin verir. BirleÅŸik renk berraklığı ve canlı VDR için bu yapılmalıdır.\n" +"15 kareyi denemesine izin verir. BirleÅŸik renk berraklığı ve canlı VDR için " +"bu yapılmalıdır.\n" -#: src/video_out/video_out_xxmc.c:2643 +#: src/video_out/video_out_xxmc.c:2689 msgid "Unichrome cpu save" msgstr "BirleÅŸik Renk Berraklığı iÅŸlemci koruması" -#: src/video_out/video_out_xxmc.c:2644 +#: src/video_out/video_out_xxmc.c:2690 msgid "" "Saves CPU time by sleeping while decoder works.\n" "Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n" "Experimental.\n" msgstr "" "Kod çözücü çalışırken iÅŸlemci zamanını uyuyarak korur.\n" -"Sadece 2.6 veya 2.4 serisi Linux çekirdeÄŸi için ve çokluortam yamasıyla birlikte.\n" +"Sadece 2.6 veya 2.4 serisi Linux çekirdeÄŸi için ve çokluortam yamasıyla " +"birlikte.\n" "Deneysel.\n" -#: src/video_out/video_out_xxmc.c:2650 -msgid "Fix buggy NVIDIA XvMC subpicture colors" +#: src/video_out/video_out_xxmc.c:2696 +#, fuzzy +msgid "Fix buggy NVIDIA XvMC subpicture colours" msgstr "Sorunlu NVIDIA XvMC altresim renklerini düzeltin." -#: src/video_out/video_out_xxmc.c:2651 +#: src/video_out/video_out_xxmc.c:2697 +#, fuzzy msgid "" -"There's a bug in NVIDIA's XvMC lib that makes red OSD colors\n" +"There's a bug in NVIDIA's XvMC lib that makes red OSD colours\n" "look blue and vice versa. This option provides a workaround.\n" msgstr "" "NVIDIA'nın XvMC kütüphanesinde kırmızı OSD renklerinin mavi veya baÅŸka\n" -"gözükmelerine sebep olanen bir hata vardır." -"Bu seçenek temizleme gerektir.\n" +"gözükmelerine sebep olanen bir hata vardır.Bu seçenek temizleme gerektir.\n" -#: src/video_out/video_out_xxmc.c:2656 +#: src/video_out/video_out_xxmc.c:2702 msgid "Use bob as accelerated deinterlace method." msgstr "Hızlandırılmış dönüştürme yöntemi olarak bob'u kullanın." -#: src/video_out/video_out_xxmc.c:2657 +#: src/video_out/video_out_xxmc.c:2703 msgid "" "When interlacing is enabled for hardware accelerated frames,\n" "alternate between top and bottom field at double the frame rate.\n" @@ -4429,23 +5066,24 @@ msgstr "" "Donanımca hızlandırılmış kareler için dönüştürme devrede olduÄŸunda,\n" "çerçeve oranındaki üst ve alt alanlara göz atmalı.\n" -#: src/video_out/video_out_xxmc.c:2663 +#: src/video_out/video_out_xxmc.c:2709 msgid "Don't use bob deinterlacing for progressive frames." msgstr "İlerleyen kareler için bob dönüştürmeyi kullanmayın." -#: src/video_out/video_out_xxmc.c:2664 +#: src/video_out/video_out_xxmc.c:2710 msgid "" "Progressive frames don't need deinterlacing, so disabling it on\n" "demand should result in a better picture.\n" msgstr "" -"İlerleyen karelerin dönüştürmeye ihtiyaçları yoktur, bu yüzden onu devre dışı bırakmak\n" +"İlerleyen karelerin dönüştürmeye ihtiyaçları yoktur, bu yüzden onu devre " +"dışı bırakmak\n" "daha iyi bir görüntü elde etmenizi saÄŸlayabilir.\n" -#: src/video_out/video_out_xxmc.c:2670 +#: src/video_out/video_out_xxmc.c:2716 msgid "Don't use bob deinterlacing while a scaled OSD is active." msgstr "Ayarlanmış OSD etkin olduÄŸunda bob dönüştürmesini kullanmayın." -#: src/video_out/video_out_xxmc.c:2671 +#: src/video_out/video_out_xxmc.c:2717 msgid "" "Bob deinterlacing adds some noise to horizontal lines, so disabling it\n" "on demand should result in a better OSD picture.\n" @@ -4454,23 +5092,112 @@ msgstr "" "onu devre dışı bırakırsanız daha iyi bir OSD resmi elde edebilirsiniz.\n" #: src/video_out/x11osd.c:274 src/video_out/xcbosd.c:268 +#, c-format msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n" -msgstr "x11osd: XShape uzantısı uygun deÄŸildir. ayarlanmamış üstyazım devre dışı bırakıldı.\n" +msgstr "" +"x11osd: XShape uzantısı uygun deÄŸildir. ayarlanmamış üstyazım devre dışı " +"bırakıldı.\n" #: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281 +#, c-format msgid "x11osd: error creating window. unscaled overlay disabled.\n" -msgstr "x11osd: pencere oluÅŸturmakta hata, ayarlanmamış üstyazım devre dışı bırakıldı.\n" +msgstr "" +"x11osd: pencere oluÅŸturmakta hata, ayarlanmamış üstyazım devre dışı " +"bırakıldı.\n" #: src/video_out/x11osd.c:295 src/video_out/x11osd.c:336 #: src/video_out/xcbosd.c:291 +#, c-format msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n" -msgstr "x11osd: piksel harıtası oluÅŸturmada hata. ayarlanmamış üstyazım devre dışı bırakıldı.\n" +msgstr "" +"x11osd: piksel harıtası oluÅŸturmada hata. ayarlanmamış üstyazım devre dışı " +"bırakıldı.\n" #: src/video_out/x11osd.c:346 src/video_out/xcbosd.c:330 #, c-format msgid "x11osd: unscaled overlay created (%s mode).\n" msgstr "x11osd: ayarlanmamış üstyazım oluÅŸturuldu (%s kipi).\n" +#: src/video_out/xv_common.h:30 +msgid "autopaint colour key" +msgstr "otomatik boyama renk anahtarı" + +#: src/video_out/xv_common.h:31 +#, fuzzy +msgid "Make Xv autopaint its colour key." +msgstr "XV'yi onun otomatik boyama renk anahtarı yap." + +#: src/video_out/xv_common.h:34 +msgid "bilinear scaling mode" +msgstr "çift çizgili arıtma kipi" + +#: src/video_out/xv_common.h:35 +msgid "" +"Selects the bilinear scaling mode for Permedia cards. The individual values " +"are:\n" +"\n" +"Permedia 2\n" +"0 - disable bilinear filtering\n" +"1 - enable bilinear filtering\n" +"\n" +"Permedia 3\n" +"0 - disable bilinear filtering\n" +"1 - horizontal linear filtering\n" +"2 - enable full bilinear filtering" +msgstr "" +"Çift çizgili arıtma kipini, Permedia kartlar için seçer. Bireysel deÄŸerler " +"ÅŸunlardır:\n" +"\n" +"Permedia 2\n" +"0 - çift çizgili filtrelemeyi devre dışı bırak\n" +"1 - çift çizgili filtrelemeyi etkinleÅŸtir\n" +"\n" +"Permedia 3\n" +"0 - çift çizgili filtrelemeyi devre dışı bırak\n" +"1 - yatay doÄŸrusal filtreleme\n" +"2 - tam çift çizgili filtrelemeyi etkinleÅŸtir" + +#: src/video_out/xv_common.h:53 +#, fuzzy +msgid "Xv port number" +msgstr "hatalı girdi numarası" + +#: src/video_out/xv_common.h:54 +msgid "Selects the Xv port number to use (0 to autodetect)." +msgstr "" + +#: src/video_out/xv_common.h:57 +msgid "pitch alignment workaround" +msgstr "karakter hizalama düzeltmesi" + +#: src/video_out/xv_common.h:58 +msgid "Some buggy video drivers need a workaround to function properly." +msgstr "" +"Bazı sorunlu video sürücüleri doÄŸru çalışmaları için bazı düzeltmelere " +"ihtiyaç duyarlar." + +#: src/video_out/xv_common.h:73 +msgid "video display method preference" +msgstr "" + +#: src/video_out/xv_common.h:74 +msgid "" +"Selects which video output method is preferred. Detection is done using the " +"reported Xv adaptor names.\n" +"(Only applies when auto-detecting which Xv port to use.)" +msgstr "" + +#: src/video_out/xv_common.h:81 +#, fuzzy +msgid "bicubic filtering" +msgstr "titreme filtreleme" + +#: src/video_out/xv_common.h:82 +msgid "" +"This option controls bicubic filtering of the video image. It may be used " +"instead of, or as well as, xine's deinterlacers." +msgstr "" + #: src/xine-engine/alphablend.c:2146 msgid "disable exact alpha blending of overlays" msgstr "üstyazımların tam alfa karışımını devre dışı bırak" @@ -4483,8 +5210,10 @@ msgid "" "The result is that alpha blending of overlays is less accurate than before, " "but the CPU usage will be decreased as well." msgstr "" -"EÄŸer Ekran Ayarları veya DVD altyazıları gibi üstyazımlar etkin olup da bir performans kaybı yaÅŸarsanız, bu seçeneÄŸi etkinleÅŸtirmek isteyebilirsiniz.\n" -"Sonuç olarak, üstyazımların alfa karışımı eskisine oranla daha iyidir fakat iÅŸlemci kullanımı da buna baÄŸlı olarak azalmıştır." +"EÄŸer Ekran Ayarları veya DVD altyazıları gibi üstyazımlar etkin olup da bir " +"performans kaybı yaÅŸarsanız, bu seçeneÄŸi etkinleÅŸtirmek isteyebilirsiniz.\n" +"Sonuç olarak, üstyazımların alfa karışımı eskisine oranla daha iyidir fakat " +"iÅŸlemci kullanımı da buna baÄŸlı olarak azalmıştır." #: src/xine-engine/audio_decoder.c:365 #, c-format @@ -4505,33 +5234,44 @@ msgid "" "The number of audio buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." -msgstr "Ses ön belleklerinin sayısı (her biri 8k büyüklüğünde) kendi iç kuyruÄŸunu kullanır. Daha yüksek deÄŸerler uyumsuz giriÅŸler için daha düz bir çalma sonucu doÄŸuracağı anlamına gelir, fakat aynı zamanda da gecikme ve bellek tüketiminin artması anlamına da gelir." +msgstr "" +"Ses ön belleklerinin sayısı (her biri 8k büyüklüğünde) kendi iç kuyruÄŸunu " +"kullanır. Daha yüksek deÄŸerler uyumsuz giriÅŸler için daha düz bir çalma " +"sonucu doÄŸuracağı anlamına gelir, fakat aynı zamanda da gecikme ve bellek " +"tüketiminin artması anlamına da gelir." -#: src/xine-engine/audio_out.c:1109 -msgid "audio_out: delay calculation impossible with an unavailable audio device\n" -msgstr "audio_out: uyumsuz ses aygıtıyla gecikme hesaplaması yapmak olanaksızdır.\n" +#: src/xine-engine/audio_out.c:1110 +#, c-format +msgid "" +"audio_out: delay calculation impossible with an unavailable audio device\n" +msgstr "" +"audio_out: uyumsuz ses aygıtıyla gecikme hesaplaması yapmak olanaksızdır.\n" -#: src/xine-engine/audio_out.c:1248 +#: src/xine-engine/audio_out.c:1249 +#, c-format msgid "write to sound card failed. Assuming the device was unplugged.\n" msgstr "ses kartına yazma baÅŸarılamadı. Aygıtın baÄŸlı olmadığı varsayılıyor.\n" -#: src/xine-engine/audio_out.c:1420 +#: src/xine-engine/audio_out.c:1421 +#, c-format msgid "8 bits not supported by driver, converting to 16 bits.\n" msgstr "8 bit sürücü tarafından desteklenmiyor, onu 16 bit'e çeviriyor.\n" -#: src/xine-engine/audio_out.c:1428 +#: src/xine-engine/audio_out.c:1429 +#, c-format msgid "mono not supported by driver, converting to stereo.\n" msgstr "mono sürücü tarafından desteklenmiyor, stereo'ya dönüştürülüyor.\n" -#: src/xine-engine/audio_out.c:1434 +#: src/xine-engine/audio_out.c:1435 +#, c-format msgid "stereo not supported by driver, converting to mono.\n" msgstr "stereo sürücü tarafından desteklenmiyor, mono'ya dönüştürülüyor.\n" -#: src/xine-engine/audio_out.c:2093 +#: src/xine-engine/audio_out.c:2098 msgid "method to sync audio and video" msgstr "ses ve görüntü arasındaki senkronu saÄŸlama yöntemi" -#: src/xine-engine/audio_out.c:2094 +#: src/xine-engine/audio_out.c:2099 msgid "" "When playing audio and video, there are at least two clocks involved: The " "system clock, to which video frames are synchronized and the clock in your " @@ -4553,129 +5293,167 @@ msgid "" "passthrough, where audio data is passed to an external decoder in digital " "form." msgstr "" -"Ses ve video çalarken, en az iki saat çalışmaktadır: Sistem saati, görüntü karelerinin senkronize olduÄŸu ve ses çalımının hızını belirleyen ses donanımındaki saat. Bu saatler, hiç bir zaman aynı hızda çalışmazlar, bazı fiziksel koÅŸullar haricinde. Genel olarak, bir süre sonra iki saat kendi baÅŸlarına çalışmaya baÅŸlayacaktır, xine bu durumda ses ve görüntü arasındaki senkronizasyonu saÄŸlamak için iki yol önerecektir:\n" +"Ses ve video çalarken, en az iki saat çalışmaktadır: Sistem saati, görüntü " +"karelerinin senkronize olduÄŸu ve ses çalımının hızını belirleyen ses " +"donanımındaki saat. Bu saatler, hiç bir zaman aynı hızda çalışmazlar, bazı " +"fiziksel koÅŸullar haricinde. Genel olarak, bir süre sonra iki saat kendi " +"baÅŸlarına çalışmaya baÅŸlayacaktır, xine bu durumda ses ve görüntü arasındaki " +"senkronizasyonu saÄŸlamak için iki yol önerecektir:\n" "\n" "metronom geri bildirimi\n" -"bu görüntü sürüklenmesinin etkisini azaltırken, bir yandan da ses sürklenmesini bir sınıra dayayan standart bir yoldur,\n" +"bu görüntü sürüklenmesinin etkisini azaltırken, bir yandan da ses " +"sürklenmesini bir sınıra dayayan standart bir yoldur,\n" "\n" -"yeniden örnekleme\\ " -"SabitlenmiÅŸ kare oranlarında sahip (DXR3 veya diÄŸer kod çözücü kartlar gibi) bazı görüntü donanımları için yukarıdaki çözüm bir iÅŸe yaramaz, çünkü görüntü hareket edemez. Bu yüzden, ses hareket hatasını dengelemek için onu kısaltıp uzatarak ses akışını yeniden örnekleriz. Bu, ses verisinin harici kod çözücü aracılığıyla sayısal biçimlere dönüştürülen sayısal ürünlerde iÅŸe yaramaz." +"yeniden örnekleme\\ SabitlenmiÅŸ kare oranlarında sahip (DXR3 veya diÄŸer kod " +"çözücü kartlar gibi) bazı görüntü donanımları için yukarıdaki çözüm bir iÅŸe " +"yaramaz, çünkü görüntü hareket edemez. Bu yüzden, ses hareket hatasını " +"dengelemek için onu kısaltıp uzatarak ses akışını yeniden örnekleriz. Bu, " +"ses verisinin harici kod çözücü aracılığıyla sayısal biçimlere dönüştürülen " +"sayısal ürünlerde iÅŸe yaramaz." -#: src/xine-engine/audio_out.c:2122 +#: src/xine-engine/audio_out.c:2127 msgid "enable resampling" msgstr "yeniden örneklemeyi etkinleÅŸtir " -#: src/xine-engine/audio_out.c:2123 +#: src/xine-engine/audio_out.c:2128 msgid "" "When the sample rate of the decoded audio does not match the capabilities of " "your sound hardware, an adaptation called \"resampling\" is required. Here " "you can select, whether resampling is enabled, disabled or used " "automatically when necessary." -msgstr "Kodlanmış sesin örnekleme oranı ses donanımınızın olanaklarına uymuyorsa, bu noktada \"yeniden örnekleme\" yapmak gereklidir. Burada, yeniden örneklemenin devrede olması veya olmamasını ya da gerektiÄŸinde otomatik olarak devreye girip girmeyeceÄŸini siz seçebilirsiniz." +msgstr "" +"Kodlanmış sesin örnekleme oranı ses donanımınızın olanaklarına uymuyorsa, bu " +"noktada \"yeniden örnekleme\" yapmak gereklidir. Burada, yeniden " +"örneklemenin devrede olması veya olmamasını ya da gerektiÄŸinde otomatik " +"olarak devreye girip girmeyeceÄŸini siz seçebilirsiniz." -#: src/xine-engine/audio_out.c:2130 +#: src/xine-engine/audio_out.c:2135 msgid "always resample to this rate (0 to disable)" msgstr "daima bu orada yeniden örnekle (devre dışı için 0)" -#: src/xine-engine/audio_out.c:2131 +#: src/xine-engine/audio_out.c:2136 msgid "" "Some audio drivers do not correctly announce the capabilities of the audio " "hardware. By setting a value other than zero here, you can force the audio " "stream to be resampled to the given rate." -msgstr "Bazı ses sürücüleri, o ses donanımının olanaklarını tam olarak bildiremezler. DeÄŸeri burada sıfırdan baÅŸka bir yere ayarlayarak, ses akışının verilmiÅŸ orana yeniden örneklenmesini saÄŸlayabilirsiniz." +msgstr "" +"Bazı ses sürücüleri, o ses donanımının olanaklarını tam olarak " +"bildiremezler. DeÄŸeri burada sıfırdan baÅŸka bir yere ayarlayarak, ses " +"akışının verilmiÅŸ orana yeniden örneklenmesini saÄŸlayabilirsiniz." -#: src/xine-engine/audio_out.c:2140 +#: src/xine-engine/audio_out.c:2145 msgid "offset for digital passthrough" msgstr "sayısal dönüşüm için eÅŸitleme" -#: src/xine-engine/audio_out.c:2141 +#: src/xine-engine/audio_out.c:2146 msgid "" "If you use an external surround decoder and audio is ahead or behind video, " "you can enter a fixed offset here to compensate.\n" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" -"EÄŸer harici bir surround kod çözücü kullanırsanız ve ses görüntünün önünde veya gerisinde ise, dengelemek için buraya sabit bir deÄŸer girebilirsiniz.\n" +"EÄŸer harici bir surround kod çözücü kullanırsanız ve ses görüntünün önünde " +"veya gerisinde ise, dengelemek için buraya sabit bir deÄŸer girebilirsiniz.\n" "DeÄŸerin birimi bir PTS tıklamasıdır, ki bu da saniyenin 90000de biridir." -#: src/xine-engine/audio_out.c:2150 +#: src/xine-engine/audio_out.c:2155 msgid "play audio even on slow/fast speeds" msgstr "sesi eÅŸit olarak yavaÅŸ/hızlı hızlarında çal" -#: src/xine-engine/audio_out.c:2151 +#: src/xine-engine/audio_out.c:2156 msgid "" "If you enable this option, the audio will be heard even when playback speed " "is different than 1X. Of course, it will sound distorted (lower/higher " "pitch). If want to experiment preserving the pitch you may try the 'stretch' " "audio post plugin instead." -msgstr "Bu seçeneÄŸi devreye sokarsanız, çalma hızı bir mislinden hızlı olsa bile ses eÅŸit duyulacaktır. DoÄŸal olarak, ses bozulmuÅŸ gelecektir (düşük/yüksek ses hızında). Ses bölgesini korumak isterseniz, ses .. eklentisini uzatmayı denemek için deneyebilirsiniz." +msgstr "" +"Bu seçeneÄŸi devreye sokarsanız, çalma hızı bir mislinden hızlı olsa bile ses " +"eÅŸit duyulacaktır. DoÄŸal olarak, ses bozulmuÅŸ gelecektir (düşük/yüksek ses " +"hızında). Ses bölgesini korumak isterseniz, ses .. eklentisini uzatmayı " +"denemek için deneyebilirsiniz." -#: src/xine-engine/audio_out.c:2224 +#: src/xine-engine/audio_out.c:2229 msgid "startup audio volume" msgstr "baÅŸlangıç ses düzeyi" -#: src/xine-engine/audio_out.c:2225 +#: src/xine-engine/audio_out.c:2230 msgid "The overall audio volume set at xine startup." msgstr "Xine baÅŸladığında duyulacak olan ayrıntılı ses gürlüğü ayarı." -#: src/xine-engine/audio_out.c:2228 +#: src/xine-engine/audio_out.c:2233 msgid "restore volume level at startup" msgstr "baÅŸlangıçtaki ses seviyesini yeniden yapılandır" -#: src/xine-engine/audio_out.c:2229 +#: src/xine-engine/audio_out.c:2234 msgid "If disabled, xine will not modify any mixer settings at startup." -msgstr "eÄŸer etkin deÄŸilse, xine baÅŸlangıçta herhangi bir karşıtırıcı ayarı yapmayacaktır." +msgstr "" +"eÄŸer etkin deÄŸilse, xine baÅŸlangıçta herhangi bir karşıtırıcı ayarı " +"yapmayacaktır." -#: src/xine-engine/audio_out.c:2259 +#: src/xine-engine/audio_out.c:2264 +#, c-format msgid "audio_out: sorry, this should not happen. please restart xine.\n" -msgstr "audio_out: üzgünüm, bu olay yaÅŸanmamalıydı, lütfen xine uygulamasını baÅŸtan baÅŸlatın.\n" +msgstr "" +"audio_out: üzgünüm, bu olay yaÅŸanmamalıydı, lütfen xine uygulamasını baÅŸtan " +"baÅŸlatın.\n" #: src/xine-engine/buffer.c:64 #, c-format msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n" msgstr "xine-lib: buffer.c: Sonlandırıcı bir hata var: TOO MANY FREE's\n" -#: src/xine-engine/configfile.c:933 +#: src/xine-engine/configfile.c:938 #, c-format msgid "The current config file has been modified by a newer version of xine." -msgstr "Åžu anki yapılandırma dosyası xine'nin daha yeni bir uygulaması tarafından deÄŸiÅŸtirilmiÅŸ durumdadır." +msgstr "" +"Åžu anki yapılandırma dosyası xine'nin daha yeni bir uygulaması tarafından " +"deÄŸiÅŸtirilmiÅŸ durumdadır." -#: src/xine-engine/configfile.c:1038 +#: src/xine-engine/configfile.c:1045 #, c-format msgid "configfile: WARNING: backing up configfile to %s failed\n" -msgstr "configfile: UYARI: configfile dosyasının ÅŸuraya %s yedeklenmesi baÅŸarılamadı\n" +msgstr "" +"configfile: UYARI: configfile dosyasının ÅŸuraya %s yedeklenmesi " +"baÅŸarılamadı\n" -#: src/xine-engine/configfile.c:1039 +#: src/xine-engine/configfile.c:1046 +#, c-format msgid "configfile: WARNING: your configuration will not be saved\n" msgstr "configfile: UYARI: yapılandırmanız kaydedilmeyecektir\n" -#: src/xine-engine/configfile.c:1138 +#: src/xine-engine/configfile.c:1146 #, c-format msgid "configfile: WARNING: writing configuration to %s failed\n" msgstr "configfile: UYARI: yapılandırmanın ÅŸuraya %s yazılması baÅŸarılamadı\n" -#: src/xine-engine/configfile.c:1139 +#: src/xine-engine/configfile.c:1147 #, c-format msgid "configfile: WARNING: removing possibly broken config file %s\n" -msgstr "configfile: UYARI: büyük ihtimaller bozulmuÅŸ olan yapılandırma dosyasını kaldırıyor %s\n" +msgstr "" +"configfile: UYARI: büyük ihtimaller bozulmuÅŸ olan yapılandırma dosyasını " +"kaldırıyor %s\n" -#: src/xine-engine/configfile.c:1140 +#: src/xine-engine/configfile.c:1148 #, c-format msgid "configfile: WARNING: you should check the backup file %s\n" msgstr "configfile: UYARI: yedekleme dosyasını denetlemelisiniz %s\n" -#: src/xine-engine/configfile.c:1275 +#: src/xine-engine/configfile.c:1283 #, c-format msgid "configfile: entry '%s' mustn't be modified from MRL\n" msgstr "configfile: girdi '%s' MRL tarafından deÄŸiÅŸtirilmiÅŸ olmamalı\n" #: src/xine-engine/info_helper.c:228 +#, c-format msgid "info_helper: can't find out current locale character set\n" msgstr "info_helper: ÅŸu anki yerel karakter ayarını çözümleyemez\n" #: src/xine-engine/info_helper.c:242 #, c-format -msgid "info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n" -msgstr "info_helper: desteklenmeyen dönüşüm %s -> UTF-8, hiç bir dönüşüm gerçekleÅŸmedi\n" +msgid "" +"info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n" +msgstr "" +"info_helper: desteklenmeyen dönüşüm %s -> UTF-8, hiç bir dönüşüm " +"gerçekleÅŸmedi\n" #: src/xine-engine/input_cache.c:170 #, c-format @@ -4698,7 +5476,7 @@ msgid "input_rip: reading by input plugin failed\n" msgstr "input_rip: giriÅŸ eklentisini okuma hatası\n" #: src/xine-engine/input_rip.c:161 src/xine-engine/input_rip.c:290 -#: src/xine-engine/input_rip.c:656 +#: src/xine-engine/input_rip.c:655 #, c-format msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n" msgstr "input_rip: dosyaya yazmada hata %<PRIdMAX> byte: %s\n" @@ -4723,43 +5501,47 @@ msgstr "input_rip: aramada hata: %s\n" msgid "input_rip: %<PRIdMAX> bytes dropped\n" msgstr "input_rip: %<PRIdMAX> byte iptal edildi\n" -#: src/xine-engine/input_rip.c:561 +#: src/xine-engine/input_rip.c:560 #, c-format msgid "input_rip: input plugin not defined!\n" msgstr "input_rip: giriÅŸ eklentisi belirtilmedi!\n" -#: src/xine-engine/input_rip.c:567 +#: src/xine-engine/input_rip.c:566 #, c-format msgid "" "input_rip: target directory wasn't specified, please fill out the option " "'media.capture.save_dir'\n" msgstr "" -"input_rip: hedef dizin belirtilmedi, lütfen " -"'media.capture.save_dir' seçeneÄŸini yayınız\n" +"input_rip: hedef dizin belirtilmedi, lütfen 'media.capture.save_dir' " +"seçeneÄŸini yayınız\n" -#: src/xine-engine/input_rip.c:569 +#: src/xine-engine/input_rip.c:568 msgid "" "The stream save feature is disabled until you set media.capture.save_dir in " "the configuration." -msgstr "Yapılandırmada siz media.capture.save_dir ayarını yapana kadar, yayın akışını kaydet seçeneÄŸi devre dışı bırakıldı." +msgstr "" +"Yapılandırmada siz media.capture.save_dir ayarını yapana kadar, yayın " +"akışını kaydet seçeneÄŸi devre dışı bırakıldı." -#: src/xine-engine/input_rip.c:576 +#: src/xine-engine/input_rip.c:575 #, c-format msgid "input_rip: ripping/caching of this source is not permitted!\n" msgstr "input_rip: bu kaynağın açılması/belleÄŸe alınmasına izin verilmedi!\n" -#: src/xine-engine/input_rip.c:578 +#: src/xine-engine/input_rip.c:577 msgid "" "xine is not allowed to save from this source. (possibly copyrighted " "material?)" -msgstr "xine bu kaynaktan kaydedilmesine izin vermedi. (bir ihtimal telif hakları ile korunmuÅŸ malzeme?)" +msgstr "" +"xine bu kaynaktan kaydedilmesine izin vermedi. (bir ihtimal telif hakları " +"ile korunmuÅŸ malzeme?)" -#: src/xine-engine/input_rip.c:584 +#: src/xine-engine/input_rip.c:583 #, c-format msgid "input_rip: file name not given!\n" msgstr "input_rip: dosya adı verilmemiÅŸ!\n" -#: src/xine-engine/input_rip.c:626 +#: src/xine-engine/input_rip.c:625 #, c-format msgid "input_rip: error opening file %s: %s\n" msgstr "input_rip: %s dosyası açılırken hata oluÅŸtu: %s\n" @@ -4798,75 +5580,83 @@ msgstr "io_helper: BaÄŸlantı Reddedildi\n" msgid "map_decoder_list: no space for decoder, skipped.\n" msgstr "map_decoder_list: kod çözücü için yer yok, atlandı.\n" -#: src/xine-engine/load_plugins.c:323 +#: src/xine-engine/load_plugins.c:322 #, c-format -msgid "load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" -msgstr "load_plugins: eklentileri göz ardı ediyor %s, yanlış iface sürümü %d (olması gereken %d)\n" +msgid "" +"load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n" +msgstr "" +"load_plugins: eklentileri göz ardı ediyor %s, yanlış iface sürümü %d " +"(olması gereken %d)\n" -#: src/xine-engine/load_plugins.c:380 +#: src/xine-engine/load_plugins.c:384 #, c-format msgid "priority for %s decoder" msgstr "%s kod çözücü için öncelik" -#: src/xine-engine/load_plugins.c:391 +#: src/xine-engine/load_plugins.c:389 msgid "" "The priority provides a ranking in case some media can be handled by more " "than one decoder.\n" "A priority of 0 enables the decoder's default priority." msgstr "" -"Öncelik bazı ortamların diÄŸerlerine göre birden fazla kod çözücü ile uÄŸraÅŸacağı göz önüne alınarak sınıflandırılır.\n" +"Öncelik bazı ortamların diÄŸerlerine göre birden fazla kod çözücü ile " +"uÄŸraÅŸacağı göz önüne alınarak sınıflandırılır.\n" "0 önceliÄŸi kod çözücünün öntanımlı önceliÄŸini ektinleÅŸtirir." -#: src/xine-engine/load_plugins.c:419 +#: src/xine-engine/load_plugins.c:417 #, c-format msgid "" "load_plugins: demuxer plugin %s does not provide a priority, xine-lib will " "use the default priority.\n" -msgstr "load_plugins: demuxer eklentisi %s öncelik saÄŸlamaz, xine-lib öntanımlı önceliÄŸi kullanacak.\n" +msgstr "" +"load_plugins: demuxer eklentisi %s öncelik saÄŸlamaz, xine-lib öntanımlı " +"önceliÄŸi kullanacak.\n" -#: src/xine-engine/load_plugins.c:436 +#: src/xine-engine/load_plugins.c:434 #, c-format msgid "" "load_plugins: input plugin %s does not provide a priority, xine-lib will use " "the default priority.\n" -msgstr "load_plugins: giriÅŸ eklentisi %s öncelik saÄŸlamaz, xine-lib öntanımlı önceliÄŸi kullanacak.\n" +msgstr "" +"load_plugins: giriÅŸ eklentisi %s öncelik saÄŸlamaz, xine-lib öntanımlı " +"önceliÄŸi kullanacak.\n" -#: src/xine-engine/load_plugins.c:492 +#: src/xine-engine/load_plugins.c:490 #, c-format msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: %s eklentisi bulundu\n" -#: src/xine-engine/load_plugins.c:495 +#: src/xine-engine/load_plugins.c:493 #, c-format msgid "load_plugins: static plugin found\n" msgstr "load_plugins: sabit eklenti bulundu\n" -#: src/xine-engine/load_plugins.c:502 +#: src/xine-engine/load_plugins.c:500 #, c-format msgid "load_plugins: plugin limit reached, %s could not be loaded\n" msgstr "load_plugins: eklenti sınırına ulaşıldı, %s yüklenemez\n" -#: src/xine-engine/load_plugins.c:505 +#: src/xine-engine/load_plugins.c:503 #, c-format msgid "load_plugins: plugin limit reached, static plugin could not be loaded\n" msgstr "load_plugins: eklenti sınırına ulaşıldı, statik eklenti yüklenemez\n" -#: src/xine-engine/load_plugins.c:522 +#: src/xine-engine/load_plugins.c:520 #, c-format msgid "load_plugins: unknown plugin type %d in %s\n" msgstr "load_plugins: bilinmeyen eklenti türü %d in %s\n" -#: src/xine-engine/load_plugins.c:526 +#: src/xine-engine/load_plugins.c:524 #, c-format msgid "load_plugins: unknown statically linked plugin type %d\n" msgstr "load_plugins: bilinmeyen statik baÄŸlantılı eklenti türü %d\n" -#: src/xine-engine/load_plugins.c:586 +#: src/xine-engine/load_plugins.c:579 #, c-format msgid "load_plugins: unable to stat %s\n" msgstr "load_plugins: stat yapamaz %s\n" -#: src/xine-engine/load_plugins.c:627 +#: src/xine-engine/load_plugins.c:620 #, c-format msgid "" "load_plugins: cannot open plugin lib %s:\n" @@ -4875,7 +5665,7 @@ msgstr "" "load_plugins: eklenti kütüphanesini açamıyor %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:642 +#: src/xine-engine/load_plugins.c:635 #, c-format msgid "" "load_plugins: can't get plugin info from %s:\n" @@ -4884,12 +5674,12 @@ msgstr "" "load_plugins: ekleni bilgisini ÅŸuradan alabilir %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:660 +#: src/xine-engine/load_plugins.c:653 #, c-format msgid "load_plugins: skipping unreadable plugin directory %s.\n" msgstr "load_plugins: okunamayan eklenti dizinini atlıyor %s.\n" -#: src/xine-engine/load_plugins.c:709 +#: src/xine-engine/load_plugins.c:702 #, c-format msgid "" "load_plugins: cannot (stage 2) open plugin lib %s:\n" @@ -4898,27 +5688,28 @@ msgstr "" "load_plugins: eklenti (aÅŸama 2) eklenti kütüphanesini açamıyor %s:\n" "%s\n" -#: src/xine-engine/load_plugins.c:735 +#: src/xine-engine/load_plugins.c:728 #, c-format msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n" msgstr "load_plugins: Aman! %s eklenti bilgisi yok.\n" -#: src/xine-engine/load_plugins.c:1301 +#: src/xine-engine/load_plugins.c:1341 #, c-format msgid "load_plugins: unknown content detection strategy %d\n" msgstr "load_plugins: bilinmeyen içerik bulma yöntemi %d\n" -#: src/xine-engine/load_plugins.c:1411 +#: src/xine-engine/load_plugins.c:1451 #, c-format msgid "load_plugins: using demuxer '%s'\n" msgstr "load_plugins: demuxer eklentisini kullanıyor '%s'\n" -#: src/xine-engine/load_plugins.c:1707 src/xine-engine/load_plugins.c:1754 +#: src/xine-engine/load_plugins.c:1777 src/xine-engine/load_plugins.c:1824 #, c-format msgid "load_plugins: failed to load audio output plugin <%s>\n" msgstr "load_plugins: ses çıkış eklentisini yüklemede hata <%s>\n" -#: src/xine-engine/load_plugins.c:1757 +#: src/xine-engine/load_plugins.c:1827 +#, c-format msgid "" "load_plugins: audio output auto-probing didn't find any usable audio " "driver.\n" @@ -4926,7 +5717,7 @@ msgstr "" "load_plugins: ses çıktısı otomatik bulma iÅŸlemi kullanılabilir bir sürücü " "bulamadı.\n" -#: src/xine-engine/load_plugins.c:2061 +#: src/xine-engine/load_plugins.c:2131 #, c-format msgid "" "load_plugins: cannot unload plugin lib %s:\n" @@ -4935,50 +5726,54 @@ msgstr "" "load_plugins: eklenti kütüphanesi %s kaldırılamadı:\n" "%s\n" -#: src/xine-engine/osd.c:735 +#: src/xine-engine/osd.c:738 #, c-format msgid "font '%s-%d' already loaded, weird.\n" msgstr "'%s-%d' yazı tipi zaten yüklü.\n" -#: src/xine-engine/osd.c:747 +#: src/xine-engine/osd.c:750 #, c-format msgid "font '%s' loading failed (%d < %d)\n" msgstr "'%s' yazı tipi yüklenemedi (%d < %d)\n" -#: src/xine-engine/osd.c:757 +#: src/xine-engine/osd.c:760 #, c-format msgid "wrong version for font '%s'. expected %d found %d.\n" msgstr "'%s' yazı tipi için yanlış sürüm. beklenen %d bulunan %d.\n" -#: src/xine-engine/osd.c:824 +#: src/xine-engine/osd.c:827 +#, c-format msgid "osd: cannot initialize ft2 library\n" msgstr "osd: ft2 kütüphanesi baÅŸlatılamadı\n" -#: src/xine-engine/osd.c:847 +#: src/xine-engine/osd.c:855 #, c-format msgid "osd: error matching font %s with FontConfig" msgstr "osd: %s yazı tipi FontConfig ile eÅŸlenirken hata oluÅŸtu" -#: src/xine-engine/osd.c:861 +#: src/xine-engine/osd.c:869 #, c-format msgid "osd: error loading font %s with FontConfig" msgstr "osd: %s yazı tipi FontConfig ile yüklenirken hata oluÅŸtu" -#: src/xine-engine/osd.c:864 +#: src/xine-engine/osd.c:872 #, c-format msgid "osd: error looking up font %s with FontConfig" msgstr "osd: %s yazı tipine FontConfig ile bakılırken hata oluÅŸtu" -#: src/xine-engine/osd.c:885 +#: src/xine-engine/osd.c:893 #, c-format msgid "osd: error loading font %s with ft2\n" msgstr "osd: %s yazı tipi ft2 ile yüklenirken hata oluÅŸtu\n" -#: src/xine-engine/osd.c:895 +#: src/xine-engine/osd.c:902 +#, c-format msgid "osd: error setting font size (no scalable font?)\n" -msgstr "osd: yazı tipi boyutu ayarlama hatası (boyutlandırılabilir yazı tipi yok mudur?)\n" +msgstr "" +"osd: yazı tipi boyutu ayarlama hatası (boyutlandırılabilir yazı tipi yok " +"mudur?)\n" -#: src/xine-engine/osd.c:1011 +#: src/xine-engine/osd.c:1017 #, c-format msgid "" "osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", " @@ -4987,117 +5782,137 @@ msgstr "" "osd: 0x%02X ile baÅŸlayan ve \"%s\" kodlamasında bulunan bilinmeyen sıralama, " "atlanıyor\n" -#: src/xine-engine/osd.c:1067 +#: src/xine-engine/osd.c:1073 +#, c-format msgid "osd: can't find out current locale character set\n" msgstr "osd: yerel karakter seti anlaşılamadı\n" -#: src/xine-engine/osd.c:1077 +#: src/xine-engine/osd.c:1083 #, c-format msgid "osd: unsupported conversion %s -> %s, no conversion performed\n" msgstr "osd: desteklenmeyen dönüşüm %s -> %s, dönüşüm yapılmadı\n" -#: src/xine-engine/osd.c:1132 src/xine-engine/osd.c:1300 +#: src/xine-engine/osd.c:1138 src/xine-engine/osd.c:1306 +#, c-format msgid "osd: font isn't defined\n" msgstr "osd: yazı tipi belirtilmedi\n" -#: src/xine-engine/osd.c:1171 +#: src/xine-engine/osd.c:1177 +#, c-format msgid "osd: error loading glyph\n" msgstr "osd: glyph yüklenirken hata oluÅŸtu\n" -#: src/xine-engine/osd.c:1177 +#: src/xine-engine/osd.c:1183 +#, c-format msgid "osd: error in rendering glyph\n" msgstr "osd: glyph hazırlanırken hata oluÅŸtu\n" -#: src/xine-engine/osd.c:1337 +#: src/xine-engine/osd.c:1343 #, c-format msgid "osd: error loading glyph %i\n" msgstr "osd: glyph %i yüklenirken hata oluÅŸtu\n" -#: src/xine-engine/osd.c:1344 +#: src/xine-engine/osd.c:1350 +#, c-format msgid "osd: error in rendering\n" msgstr "osd: hazırlama hatası\n" -#: src/xine-engine/osd.c:1601 +#: src/xine-engine/osd.c:1596 msgid "palette (foreground-border-background) to use for subtitles and OSD" msgstr "Altyazılar ve OSD için kullanılacak palet (ön yüz-sınır-arka plan)" -#: src/xine-engine/osd.c:1602 +#: src/xine-engine/osd.c:1597 msgid "" "The palette for on-screen-display and some subtitle formats that do not " "specify any colouring themselves. The palettes are listed in the form: " "foreground-border-background." msgstr "" -"Ekranda görüntülemek için palet ve bazı altyazı kipleri kendi renklendirmelerini belirlemezler. Paletler formda listelenmiÅŸtir: " -"ün yüz-sınır-arka plan." +"Ekranda görüntülemek için palet ve bazı altyazı kipleri kendi " +"renklendirmelerini belirlemezler. Paletler formda listelenmiÅŸtir: ün yüz-" +"sınır-arka plan." -#: src/xine-engine/video_decoder.c:377 +#: src/xine-engine/video_decoder.c:387 #, c-format msgid "video_decoder: no plugin available to handle '%s'\n" msgstr "video_decoder: '%s' dosyasını iÅŸleyebilmek için uygun eklenti yok\n" -#: src/xine-engine/video_decoder.c:456 +#: src/xine-engine/video_decoder.c:466 #, c-format msgid "video_decoder: error, unknown buffer type: %08x\n" msgstr "video_decoder: hata, bilinmeyen tampon bellek türü: %08x\n" -#: src/xine-engine/video_decoder.c:492 +#: src/xine-engine/video_decoder.c:502 msgid "number of video buffers" msgstr "video tamponlarının sayısı" -#: src/xine-engine/video_decoder.c:493 +#: src/xine-engine/video_decoder.c:503 msgid "" "The number of video buffers (each is 8k in size) xine uses in its internal " "queue. Higher values mean smoother playback for unreliable inputs, but also " "increased latency and memory consumption." -msgstr "Video tamponlarının sayısı (her biri 8k büyüklüğünde) kendi iç kuyruÄŸunu kullanır. Daha yüksek deÄŸerler uyumsuz giriÅŸler için daha düz bir çalma sonucu doÄŸuracağı anlamına gelir, fakat aynı zamanda da gecikme ve bellek tüketiminin artması anlamına da gelir." +msgstr "" +"Video tamponlarının sayısı (her biri 8k büyüklüğünde) kendi iç kuyruÄŸunu " +"kullanır. Daha yüksek deÄŸerler uyumsuz giriÅŸler için daha düz bir çalma " +"sonucu doÄŸuracağı anlamına gelir, fakat aynı zamanda da gecikme ve bellek " +"tüketiminin artması anlamına da gelir." -#: src/xine-engine/video_out.c:640 +#: src/xine-engine/video_out.c:666 #, c-format msgid "%d frames delivered, %d frames skipped, %d frames discarded\n" msgstr "%d kare alındı, %d kare atlandı, %d kare atıldı\n" -#: src/xine-engine/video_out.c:813 +#: src/xine-engine/video_out.c:839 #, c-format msgid "" "video_out: throwing away image with pts %<PRId64> because it's too old " "(diff : %<PRId64>).\n" msgstr "" -"video_out: resmi pts ile atıyor %<PRId64> çünkü çok eski " -"(diff : %<PRId64>).\n" +"video_out: resmi pts ile atıyor %<PRId64> çünkü çok eski (diff : %" +"<PRId64>).\n" -#: src/xine-engine/video_out.c:1793 +#: src/xine-engine/video_out.c:1817 msgid "default number of video frames" msgstr "video çerçevelerinin öntanımlı sayısı" -#: src/xine-engine/video_out.c:1794 +#: src/xine-engine/video_out.c:1818 msgid "" "The default number of video frames to request from xine video out driver. " "Some drivers will override this setting with their own values." -msgstr "Xine video çıkış sürücüsünden istenecek olan video çerçevelerinin öntanımlı sayısı. Bazı sürücüler kendi deÄŸerlerini koruyarak bu ayara önem vermeyecektir." +msgstr "" +"Xine video çıkış sürücüsünden istenecek olan video çerçevelerinin öntanımlı " +"sayısı. Bazı sürücüler kendi deÄŸerlerini koruyarak bu ayara önem " +"vermeyecektir." -#: src/xine-engine/video_out.c:1833 +#: src/xine-engine/video_out.c:1875 msgid "percentage of skipped frames to tolerate" msgstr "görmezden gelinecek atlanan çerçeve sayısı" -#: src/xine-engine/video_out.c:1834 +#: src/xine-engine/video_out.c:1876 msgid "" "When more than this percentage of frames are not shown, because they were " "not decoded in time, xine sends a notification." -msgstr "Bu çerçeve oranlarından daha fazlası gösterilmezse, zamanında kodlanmadıklarındandır, xine bir uyarı gönderir." +msgstr "" +"Bu çerçeve oranlarından daha fazlası gösterilmezse, zamanında " +"kodlanmadıklarındandır, xine bir uyarı gönderir." -#: src/xine-engine/video_out.c:1839 +#: src/xine-engine/video_out.c:1881 msgid "percentage of discarded frames to tolerate" msgstr "görmezden gelinecek yoksayılan çerçeve sayısı" -#: src/xine-engine/video_out.c:1840 +#: src/xine-engine/video_out.c:1882 msgid "" "When more than this percentage of frames are not shown, because they were " "not scheduled for display in time, xine sends a notification." -msgstr "Bu çerçeve oranlarından daha fazlası gösterilmezse, zamanında görüntülenmeleri için programlanmadıklarındandır, xine bir uyarı gönderir." +msgstr "" +"Bu çerçeve oranlarından daha fazlası gösterilmezse, zamanında " +"görüntülenmeleri için programlanmadıklarındandır, xine bir uyarı gönderir." -#: src/xine-engine/video_out.c:1874 +#: src/xine-engine/video_out.c:1916 +#, c-format msgid "video_out: sorry, this should not happen. please restart xine.\n" -msgstr "video_out: üzgünüm, bu olmamalıydı. lütfen xine uygulamasını yeniden baÅŸlatın.\n" +msgstr "" +"video_out: üzgünüm, bu olmamalıydı. lütfen xine uygulamasını yeniden " +"baÅŸlatın.\n" #: src/xine-engine/vo_scale.c:387 msgid "horizontal image position in the output window" @@ -5110,8 +5925,10 @@ msgid "" "The position is given as a percentage, so a value of 50 means \"in the middle" "\", while 0 means \"at the very left\" and 100 \"at the very right\"." msgstr "" -"EÄŸer video penceresinin yatay boyutu olması gerekenden büyükse, görüntünün yerleÅŸeceÄŸi konumu ayarlayabilirsiniz.\n" -"Konum yüzdesel olarak verilmiÅŸtir, böylece 50 deÄŸeri \"ortada\", 0 deÄŸeri \"çok solda\" ve 100 deÄŸeri \"çok saÄŸda\" anlamına gelecektir." +"EÄŸer video penceresinin yatay boyutu olması gerekenden büyükse, görüntünün " +"yerleÅŸeceÄŸi konumu ayarlayabilirsiniz.\n" +"Konum yüzdesel olarak verilmiÅŸtir, böylece 50 deÄŸeri \"ortada\", 0 deÄŸeri " +"\"çok solda\" ve 100 deÄŸeri \"çok saÄŸda\" anlamına gelecektir." #: src/xine-engine/vo_scale.c:395 msgid "vertical image position in the output window" @@ -5124,8 +5941,10 @@ msgid "" "The position is given as a percentage, so a value of 50 means \"in the middle" "\", while 0 means \"at the top\" and 100 \"at the bottom\"." msgstr "" -"EÄŸer video penceresinin yatay boyutu olması gerekenden büyükse, görüntünün yerleÅŸeceÄŸi konumu ayarlayabilirsiniz.\n" -"Konum yüzdesel olarak verilmiÅŸtir, böylece 50 deÄŸeri \"ortada\", 0 deÄŸeri \"yukarıda\" ve 100 deÄŸeri \"aÅŸağıda\" anlamına gelecektir." +"EÄŸer video penceresinin yatay boyutu olması gerekenden büyükse, görüntünün " +"yerleÅŸeceÄŸi konumu ayarlayabilirsiniz.\n" +"Konum yüzdesel olarak verilmiÅŸtir, böylece 50 deÄŸeri \"ortada\", 0 deÄŸeri " +"\"yukarıda\" ve 100 deÄŸeri \"aÅŸağıda\" anlamına gelecektir." #: src/xine-engine/vo_scale.c:403 msgid "disable all video scaling" @@ -5141,135 +5960,155 @@ msgid "" "video output drivers like XShm, where the image scaling is not hardware " "accelerated, this can dramatically reduce CPU usage." msgstr "" -"EÄŸer video görüntüsünün daima kendi orijinal çözünürlüğünde gösterilmesini istiyorsanız, buradaki tüm resim ölçeklemelerini devre dışı bırakabilirsiniz.\n" -"Bu doÄŸal olarak anamorfik DVD'ler gibi 1:1 ölçeÄŸinden farklı özelliklerde olduÄŸu gibi görüntü video penceresinin boyutuyla uyumlu olamayabilecek ve görüntüde bozukluklar meydana gelebilecektir. Fakat diÄŸer taraftan, XShm gibi bazı video sürücülerinin resim ölçeklemesi donanım hızlandırmalı olmadığı için, bu iÅŸlemci kullanımını dramatik olarak azaltacaktır." - -#: src/xine-engine/xine.c:789 src/xine-engine/xine.c:896 -#: src/xine-engine/xine.c:935 src/xine-engine/xine.c:971 -#: src/xine-engine/xine.c:983 src/xine-engine/xine.c:996 -#: src/xine-engine/xine.c:1009 src/xine-engine/xine.c:1022 -#: src/xine-engine/xine.c:1048 src/xine-engine/xine.c:1073 -#: src/xine-engine/xine.c:1108 +"EÄŸer video görüntüsünün daima kendi orijinal çözünürlüğünde gösterilmesini " +"istiyorsanız, buradaki tüm resim ölçeklemelerini devre dışı " +"bırakabilirsiniz.\n" +"Bu doÄŸal olarak anamorfik DVD'ler gibi 1:1 ölçeÄŸinden farklı özelliklerde " +"olduÄŸu gibi görüntü video penceresinin boyutuyla uyumlu olamayabilecek ve " +"görüntüde bozukluklar meydana gelebilecektir. Fakat diÄŸer taraftan, XShm " +"gibi bazı video sürücülerinin resim ölçeklemesi donanım hızlandırmalı " +"olmadığı için, bu iÅŸlemci kullanımını dramatik olarak azaltacaktır." + +#: src/xine-engine/xine.c:805 src/xine-engine/xine.c:926 +#: src/xine-engine/xine.c:966 src/xine-engine/xine.c:1002 +#: src/xine-engine/xine.c:1014 src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1040 src/xine-engine/xine.c:1053 +#: src/xine-engine/xine.c:1079 src/xine-engine/xine.c:1104 +#: src/xine-engine/xine.c:1141 +#, c-format msgid "xine: error while parsing mrl\n" msgstr "xine: mrl ayrıştırma hatası\n" -#: src/xine-engine/xine.c:831 +#: src/xine-engine/xine.c:864 #, c-format msgid "xine: found input plugin : %s\n" msgstr "xine: bulunan girdi eklentisi : %s\n" -#: src/xine-engine/xine.c:848 +#: src/xine-engine/xine.c:880 #, c-format msgid "xine: input plugin cannot open MRL [%s]\n" msgstr "xine: girdi eklentisi MRL [%s] dosyasını açamadı\n" -#: src/xine-engine/xine.c:859 +#: src/xine-engine/xine.c:889 #, c-format msgid "xine: cannot find input plugin for MRL [%s]\n" msgstr "xine: MRL [%s] için girdi eklentisi bulunamadı\n" -#: src/xine-engine/xine.c:885 +#: src/xine-engine/xine.c:915 #, c-format msgid "xine: specified demuxer %s failed to start\n" msgstr "xine: belirlenmiÅŸ demuxer %s baÅŸlatılamadı\n" -#: src/xine-engine/xine.c:921 +#: src/xine-engine/xine.c:952 #, c-format msgid "xine: join rip input plugin\n" msgstr "xine: hızlı giriÅŸ eklentisini ekle\n" -#: src/xine-engine/xine.c:928 +#: src/xine-engine/xine.c:959 +#, c-format msgid "xine: error opening rip input plugin instance\n" msgstr "xine: hızlı giriÅŸ eklentisini açmada hata\n" -#: src/xine-engine/xine.c:959 +#: src/xine-engine/xine.c:990 #, c-format msgid "xine: last_probed demuxer %s failed to start\n" msgstr "xine: en son_kullanılan demuxer %s baÅŸlatılamadı\n" -#: src/xine-engine/xine.c:988 +#: src/xine-engine/xine.c:1019 +#, c-format msgid "ignoring video\n" msgstr "video yoksayılıyor\n" -#: src/xine-engine/xine.c:1001 +#: src/xine-engine/xine.c:1032 +#, c-format msgid "ignoring audio\n" msgstr "ses yoksayılıyor\n" -#: src/xine-engine/xine.c:1014 +#: src/xine-engine/xine.c:1045 +#, c-format msgid "ignoring subpicture\n" msgstr "altresmi göz ardı ediyor\n" -#: src/xine-engine/xine.c:1027 +#: src/xine-engine/xine.c:1058 +#, c-format msgid "input cache plugin disabled\n" msgstr "girdi önbellek eklentisi pasifleÅŸtirildi\n" -#: src/xine-engine/xine.c:1098 +#: src/xine-engine/xine.c:1131 #, c-format msgid "subtitle mrl opened '%s'\n" msgstr "alt yazı mrl dosyası '%s' açıldı\n" -#: src/xine-engine/xine.c:1102 +#: src/xine-engine/xine.c:1135 +#, c-format msgid "xine: error opening subtitle mrl\n" msgstr "xine: alt yazı mrl dosyası açılırken hata oluÅŸtu\n" -#: src/xine-engine/xine.c:1134 +#: src/xine-engine/xine.c:1167 #, c-format msgid "xine: error while parsing MRL\n" msgstr "xine: MRL ayrıştırılırken hata oluÅŸtu\n" -#: src/xine-engine/xine.c:1141 +#: src/xine-engine/xine.c:1174 #, c-format msgid "xine: changing option '%s' from MRL isn't permitted\n" -msgstr "xine: MRL dosyasındaki '%s' seçeneÄŸinin deÄŸiÅŸtirilmesine izin verilmiyor\n" +msgstr "" +"xine: MRL dosyasındaki '%s' seçeneÄŸinin deÄŸiÅŸtirilmesine izin verilmiyor\n" + +#: src/xine-engine/xine.c:1205 +#, fuzzy, c-format +msgid "xine: couldn't load plugin-specified demux %s for >%s<\n" +msgstr "xine: demux bunun için bulunamıyor >%s<\n" -#: src/xine-engine/xine.c:1161 +#: src/xine-engine/xine.c:1215 #, c-format msgid "xine: couldn't find demux for >%s<\n" msgstr "xine: demux bunun için bulunamıyor >%s<\n" -#: src/xine-engine/xine.c:1177 +#: src/xine-engine/xine.c:1231 #, c-format msgid "xine: found demuxer plugin: %s\n" msgstr "xine: demuxer eklentisi bulundu: %s\n" -#: src/xine-engine/xine.c:1198 +#: src/xine-engine/xine.c:1252 #, c-format msgid "xine: demuxer is already done. that was fast!\n" msgstr "xine: demuxer hazır durumda. bu hızlıydı!\n" -#: src/xine-engine/xine.c:1200 +#: src/xine-engine/xine.c:1254 #, c-format msgid "xine: demuxer failed to start\n" msgstr "xine: demuxer baÅŸlatılamadı\n" -#: src/xine-engine/xine.c:1266 +#: src/xine-engine/xine.c:1320 #, c-format msgid "xine_play: no demux available\n" msgstr "xine_play: hiç bir demux uygun deÄŸil\n" -#: src/xine-engine/xine.c:1336 +#: src/xine-engine/xine.c:1391 #, c-format msgid "xine_play: demux failed to start\n" msgstr "xine_play: demux baÅŸlatılamadı\n" -#: src/xine-engine/xine.c:1612 +#: src/xine-engine/xine.c:1667 #, c-format msgid "xine: The specified save_dir \"%s\" might be a security risk.\n" msgstr "xine: Belirtilen save_dir \"%s\" bir güvenlik riski oluÅŸturabilir.\n" -#: src/xine-engine/xine.c:1617 +#: src/xine-engine/xine.c:1672 msgid "The specified save_dir might be a security risk." msgstr "Belirtilen save_dir bir güvenlik riski oluÅŸturabilir." -#: src/xine-engine/xine.c:1643 +#: src/xine-engine/xine.c:1704 +#, c-format msgid "xine: locale not supported by C library\n" msgstr "xine: sistem yereliniz C kütüphanesi tarafından desteklenmiyor\n" -#: src/xine-engine/xine.c:1652 +#: src/xine-engine/xine.c:1713 msgid "media format detection strategy" msgstr "ortam biçimi belirleme yöntemi" -#: src/xine-engine/xine.c:1653 +#: src/xine-engine/xine.c:1714 msgid "" "xine offers various methods to detect the media format of input to play. The " "individual values are:\n" @@ -5286,7 +6125,8 @@ msgid "" "extension\n" "Detect by file name extension only.\n" msgstr "" -"xine çalınacak ortam kipini tanımak için farklı yönetmler önerir. Bireysel deÄŸerler şöyledir:\n" +"xine çalınacak ortam kipini tanımak için farklı yönetmler önerir. Bireysel " +"deÄŸerler şöyledir:\n" "\n" "default\n" "Önce, içerikten tanımaya, sonra da dosya uzantısıyla tanımaya çalışır.\n" @@ -5300,11 +6140,11 @@ msgstr "" "extension\n" "Sadece dosya adı uzantısından tanır.\n" -#: src/xine-engine/xine.c:1671 +#: src/xine-engine/xine.c:1732 msgid "directory for saving streams" msgstr "yayınların kaydedileceÄŸi dizin" -#: src/xine-engine/xine.c:1672 +#: src/xine-engine/xine.c:1733 msgid "" "When using the stream save feature, files will be written only into this " "directory.\n" @@ -5313,14 +6153,20 @@ msgid "" "you should be careful that the directory you specify is robust against any " "content in any file." msgstr "" -"Yayın akışının kaydedilmesi özelliÄŸi kullanıldığında, dosyalar sadece bu dizine yazılacaktır.\n" -"Bu ayar güvenlik açısından kritiktir, çünkü dizinin deÄŸiÅŸtirilmesi denendiÄŸinde, xine dosyaları alakasız içerikle doldurmak için kullanabilir. Bu yüzden, belirttiÄŸiniz dizinin her türlü içeriÄŸe karşı dirençli olmasına özen göstermelisiniz." +"Yayın akışının kaydedilmesi özelliÄŸi kullanıldığında, dosyalar sadece bu " +"dizine yazılacaktır.\n" +"Bu ayar güvenlik açısından kritiktir, çünkü dizinin deÄŸiÅŸtirilmesi " +"denendiÄŸinde, xine dosyaları alakasız içerikle doldurmak için kullanabilir. " +"Bu yüzden, belirttiÄŸiniz dizinin her türlü içeriÄŸe karşı dirençli olmasına " +"özen göstermelisiniz." -#: src/xine-engine/xine.c:1683 +#: src/xine-engine/xine.c:1744 msgid "allow implicit changes to the configuration (e.g. by MRL)" -msgstr "yapılandırmada kesin deÄŸiÅŸikliklere izin ver (örn. MRL tarafından yapılan deÄŸiÅŸikliklere)" +msgstr "" +"yapılandırmada kesin deÄŸiÅŸikliklere izin ver (örn. MRL tarafından yapılan " +"deÄŸiÅŸikliklere)" -#: src/xine-engine/xine.c:1684 +#: src/xine-engine/xine.c:1745 msgid "" "If enabled, you allow xine to change your configuration without explicit " "actions from your side. For example configuration changes demanded by MRLs " @@ -5329,81 +6175,91 @@ msgid "" "from untrusted remote sources. If you allow them to arbitrarily change your " "configuration, you might end with a totally messed up xine." msgstr "" -"EÄŸer devrede ise, xine'nin sizin net bir katkınız olmayan deÄŸiÅŸiklikler yapmasına izin veriyorsunuz demektir. ÖrneÄŸin, MRL tarafından talep edilen deÄŸiÅŸiklikler veya çalma listesine gömülü olan istekler yerine getirilecektir.\n" -"Bu ayar, güvenlik açısından kritiktir, çünkü xine güvenilmeyen uzak kaynaklardan MRL veya çalma listelerini alabilir. EÄŸer onların yapılandırmanızı kendi istedikleri gibi deÄŸiÅŸtirmelerine izin verirseniz, xine'nin tamamen iÅŸleri berbat etmesiyle her ÅŸey sona erebilir." +"EÄŸer devrede ise, xine'nin sizin net bir katkınız olmayan deÄŸiÅŸiklikler " +"yapmasına izin veriyorsunuz demektir. ÖrneÄŸin, MRL tarafından talep edilen " +"deÄŸiÅŸiklikler veya çalma listesine gömülü olan istekler yerine " +"getirilecektir.\n" +"Bu ayar, güvenlik açısından kritiktir, çünkü xine güvenilmeyen uzak " +"kaynaklardan MRL veya çalma listelerini alabilir. EÄŸer onların " +"yapılandırmanızı kendi istedikleri gibi deÄŸiÅŸtirmelerine izin verirseniz, " +"xine'nin tamamen iÅŸleri berbat etmesiyle her ÅŸey sona erebilir." -#: src/xine-engine/xine.c:1698 +#: src/xine-engine/xine.c:1759 msgid "Timeout for network stream reading (in seconds)" msgstr "AÄŸ yayını okumada zaman aşımı (saniye olarak)" -#: src/xine-engine/xine.c:1699 +#: src/xine-engine/xine.c:1760 msgid "" "Specifies the timeout when reading from network streams, in seconds. Too low " "values might stop streaming when the source is slow or the bandwidth is " "occupied, too high values will freeze the player if the connection is lost." -msgstr "AÄŸ'dan gelen yayın akışını okurken zaman aşımını saniye bazında belirtir. EÄŸer kaynak yavaÅŸ veya bant geniÅŸliÄŸi yoÄŸun ise çok küçük deÄŸerler yayın akışını durdurabilir, çok yüksek deÄŸerler ise baÄŸlantı kesilirse çalıcının donmasına neden olabilir." +msgstr "" +"AÄŸ'dan gelen yayın akışını okurken zaman aşımını saniye bazında belirtir. " +"EÄŸer kaynak yavaÅŸ veya bant geniÅŸliÄŸi yoÄŸun ise çok küçük deÄŸerler yayın " +"akışını durdurabilir, çok yüksek deÄŸerler ise baÄŸlantı kesilirse çalıcının " +"donmasına neden olabilir." -#: src/xine-engine/xine.c:2051 +#: src/xine-engine/xine.c:2217 msgid "messages" msgstr "iletiler" -#: src/xine-engine/xine.c:2052 +#: src/xine-engine/xine.c:2218 msgid "plugin" msgstr "eklenti" -#: src/xine-engine/xine.c:2053 +#: src/xine-engine/xine.c:2219 msgid "trace" msgstr "iz" -#: src/xine-engine/xine_interface.c:955 +#: src/xine-engine/xine_interface.c:957 msgid "Warning:" msgstr "Uyarı:" -#: src/xine-engine/xine_interface.c:956 +#: src/xine-engine/xine_interface.c:958 msgid "Unknown host:" msgstr "Bilinmeyen makine:" -#: src/xine-engine/xine_interface.c:957 +#: src/xine-engine/xine_interface.c:959 msgid "Unknown device:" msgstr "Bilinmeyen aygıt:" -#: src/xine-engine/xine_interface.c:958 +#: src/xine-engine/xine_interface.c:960 msgid "Network unreachable" msgstr "AÄŸ eriÅŸilebilir deÄŸil" -#: src/xine-engine/xine_interface.c:959 +#: src/xine-engine/xine_interface.c:961 msgid "Connection refused:" msgstr "BaÄŸlantı reddedildi:" -#: src/xine-engine/xine_interface.c:960 +#: src/xine-engine/xine_interface.c:962 msgid "File not found:" msgstr "Dosya bulunamadı:" -#: src/xine-engine/xine_interface.c:961 +#: src/xine-engine/xine_interface.c:963 msgid "Read error from:" msgstr "Okuma hatası alınan konum:" -#: src/xine-engine/xine_interface.c:962 +#: src/xine-engine/xine_interface.c:964 msgid "Error loading library:" msgstr "Kütüphane yükleme hatası:" -#: src/xine-engine/xine_interface.c:963 +#: src/xine-engine/xine_interface.c:965 msgid "Encrypted media stream detected" msgstr "ÅžifrelenmiÅŸ ortam yayını bulundu" -#: src/xine-engine/xine_interface.c:964 +#: src/xine-engine/xine_interface.c:966 msgid "Security message:" msgstr "Güvenlik iletisi:" -#: src/xine-engine/xine_interface.c:965 +#: src/xine-engine/xine_interface.c:967 msgid "Audio device unavailable" msgstr "Ses aygıtı kullanılamaz" -#: src/xine-engine/xine_interface.c:966 +#: src/xine-engine/xine_interface.c:968 msgid "Permission error" msgstr "Yetki hatası" -#: src/xine-engine/xine_interface.c:967 +#: src/xine-engine/xine_interface.c:969 msgid "File is empty:" msgstr "Dosya boÅŸ:" @@ -5416,9 +6272,13 @@ msgid "" "The copying of large memory blocks is one of the most expensive operations " "on todays computers. Therefore xine provides various tuned methods to do " "this copying. Usually, the best method is detected automatically." -msgstr "Günümüz bilgisayarlarında, büyük bellek kütlelerinin kopyalanması en pahalı iÅŸlemlerden biridir. Bu yüzden, xine bu kopyalamayı gerçekleÅŸtirmek için farklı ayarlanmış yöntemler sunar. Genellikle, en iyi yöntem otomatik olarak algılanacaktır." +msgstr "" +"Günümüz bilgisayarlarında, büyük bellek kütlelerinin kopyalanması en pahalı " +"iÅŸlemlerden biridir. Bu yüzden, xine bu kopyalamayı gerçekleÅŸtirmek için " +"farklı ayarlanmış yöntemler sunar. Genellikle, en iyi yöntem otomatik olarak " +"algılanacaktır." #: src/xine-utils/memcpy.c:507 +#, c-format msgid "Benchmarking memcpy methods (smaller is better):\n" msgstr "Memcpy karşılaÅŸtırma yöntemleri (daha küçük olan daha iyidir):\n" - diff --git a/src/Makefile.am b/src/Makefile.am index 6718b4805..249bbc2b6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,6 +11,7 @@ SUBDIRS = \ demuxers \ libffmpeg \ libmpeg2 \ + libmpeg2new \ liba52 \ libspudec \ libspucc \ diff --git a/src/audio_out/Makefile.am b/src/audio_out/Makefile.am index b0c3d292e..07ad19c8d 100644 --- a/src/audio_out/Makefile.am +++ b/src/audio_out/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CPPFLAGS = -DXINE_COMPILE @@ -49,6 +50,10 @@ if HAVE_JACK jack_module = xineplug_ao_out_jack.la endif +if HAVE_SNDIO +sndio_module = xineplug_ao_out_sndio.la +endif + ## # IMPORTANT: # --------- @@ -66,7 +71,8 @@ xineplug_LTLIBRARIES = xineplug_ao_out_none.la xineplug_ao_out_file.la \ $(pulseaudio_module) \ $(directx2_module) \ $(fusionsound_module) \ - $(jack_module) + $(jack_module) \ + $(sndio_module) xineplug_ao_out_none_la_SOURCES = audio_none_out.c xineplug_ao_out_none_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) @@ -110,7 +116,7 @@ xineplug_ao_out_arts_la_LDFLAGS = -avoid-version -module xineplug_ao_out_directx_la_SOURCES = audio_directx_out.c xineplug_ao_out_directx_la_CPPFLAGS = $(DIRECTX_CPPFLAGS) -xineplug_ao_out_directx_la_LIBADD = $(XINE_LIB) $(DIRECTX_AUDIO_LIBS) +xineplug_ao_out_directx_la_LIBADD = $(XINE_LIB) $(DIRECTX_AUDIO_LIBS) $(LTLIBINTL) xineplug_ao_out_directx_la_CFLAGS = $(VISIBILITY_FLAG) xineplug_ao_out_directx_la_LDFLAGS = -avoid-version -module @@ -131,7 +137,7 @@ xineplug_ao_out_pulseaudio_la_LDFLAGS = -avoid-version -module xineplug_ao_out_directx2_la_SOURCES = audio_directx2_out.c xineplug_ao_out_directx2_la_CPPFLAGS = $(DIRECTX_CPPFLAGS) -xineplug_ao_out_directx2_la_LIBADD = $(XINE_LIB) $(DIRECTX_AUDIO_LIBS) $(PTHREAD_LIBS) +xineplug_ao_out_directx2_la_LIBADD = $(XINE_LIB) $(DIRECTX_AUDIO_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL) xineplug_ao_out_directx2_la_CFLAGS = $(VISIBILITY_FLAG) xineplug_ao_out_directx2_la_LDFLAGS = -avoid-version -module @@ -144,3 +150,8 @@ xineplug_ao_out_jack_la_SOURCES = audio_jack_out.c xineplug_ao_out_jack_la_LIBADD = $(XINE_LIB) $(JACK_LIBS) $(LTLIBINTL) xineplug_ao_out_jack_la_CFLAGS = $(VISIBILITY_FLAG) $(JACK_CFLAGS) xineplug_ao_out_jack_la_LDFLAGS = -avoid-version -module + +xineplug_ao_out_sndio_la_SOURCES = audio_sndio_out.c +xineplug_ao_out_sndio_la_LIBADD = $(XINE_LIB) $(SNDIO_LIBS) +xineplug_ao_out_sndio_la_CFLAGS = $(VISIBILITY_FLAG) $(SNDIO_CFLAGS) +xineplug_ao_out_sndio_la_LDFLAGS = -avoid-version -module diff --git a/src/audio_out/audio_alsa_out.c b/src/audio_out/audio_alsa_out.c index 4ce2b1be3..470cd953a 100644 --- a/src/audio_out/audio_alsa_out.c +++ b/src/audio_out/audio_alsa_out.c @@ -1350,7 +1350,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da #define A52_PASSTHRU 12 int speakers; - this = (alsa_driver_t *) xine_xmalloc (sizeof (alsa_driver_t)); + this = calloc(1, sizeof (alsa_driver_t)); if (!this) return NULL; @@ -1497,70 +1497,73 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da "formats you want to play to your sound card's digital output."), 0, alsa_speaker_arrangement_cb, this); - xprintf(class->xine, XINE_VERBOSITY_LOG, _("audio_alsa_out : supported modes are ")); + char *logmsg = strdup (_("audio_alsa_out : supported modes are")); + if (!(snd_pcm_hw_params_test_format(this->audio_fd, params, SND_PCM_FORMAT_U8))) { this->capabilities |= AO_CAP_8BITS; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("8bit ")); + xine_strcat_realloc (&logmsg, _(" 8bit")); } /* ALSA automatically appends _LE or _BE depending on the CPU */ if (!(snd_pcm_hw_params_test_format(this->audio_fd, params, SND_PCM_FORMAT_S16))) { this->capabilities |= AO_CAP_16BITS; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("16bit ")); + xine_strcat_realloc (&logmsg, _(" 16bit")); } if (!(snd_pcm_hw_params_test_format(this->audio_fd, params, SND_PCM_FORMAT_S24))) { this->capabilities |= AO_CAP_24BITS; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("24bit ")); + xine_strcat_realloc (&logmsg, _(" 24bit")); } if (!(snd_pcm_hw_params_test_format(this->audio_fd, params, SND_PCM_FORMAT_FLOAT))) { this->capabilities |= AO_CAP_FLOAT32; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("32bit ")); + xine_strcat_realloc (&logmsg, _(" 32bit")); } if (0 == (this->capabilities & (AO_CAP_FLOAT32 | AO_CAP_24BITS | AO_CAP_16BITS | AO_CAP_8BITS))) { - xprintf (this->class->xine, XINE_VERBOSITY_DEBUG, - "\naudio_alsa_out: no supported PCM format found\n"); + xprintf(class->xine, XINE_VERBOSITY_LOG, "%s\n", logmsg); + free (logmsg); + xprintf (class->xine, XINE_VERBOSITY_DEBUG, + "audio_alsa_out: no supported PCM format found\n"); snd_pcm_close(this->audio_fd); free(this); return NULL; } if (!(snd_pcm_hw_params_test_channels(this->audio_fd, params, 1))) { this->capabilities |= AO_CAP_MODE_MONO; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("mono ")); + xine_strcat_realloc (&logmsg, _(" mono")); } if (!(snd_pcm_hw_params_test_channels(this->audio_fd, params, 2))) { this->capabilities |= AO_CAP_MODE_STEREO; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("stereo ")); + xine_strcat_realloc (&logmsg, _(" stereo")); } if (!(snd_pcm_hw_params_test_channels(this->audio_fd, params, 4)) && ( speakers == SURROUND4 )) { this->capabilities |= AO_CAP_MODE_4CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("4-channel ")); + xine_strcat_realloc (&logmsg, _(" 4-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_LOG, _("(4-channel not enabled in xine config) ")); + xine_strcat_realloc (&logmsg, _(" (4-channel not enabled in xine config)")); if (!(snd_pcm_hw_params_test_channels(this->audio_fd, params, 6)) && ( speakers == SURROUND41 )) { this->capabilities |= AO_CAP_MODE_4_1CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("4.1-channel ")); + xine_strcat_realloc (&logmsg, _(" 4.1-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_LOG, _("(4.1-channel not enabled in xine config) ")); + xine_strcat_realloc (&logmsg, _(" (4.1-channel not enabled in xine config)")); if (!(snd_pcm_hw_params_test_channels(this->audio_fd, params, 6)) && ( speakers == SURROUND5 )) { this->capabilities |= AO_CAP_MODE_5CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("5-channel ")); + xine_strcat_realloc (&logmsg, _(" 5-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_LOG, _("(5-channel not enabled in xine config) ")); + xine_strcat_realloc (&logmsg, _(" (5-channel not enabled in xine config)")); if (!(snd_pcm_hw_params_test_channels(this->audio_fd, params, 6)) && ( speakers >= SURROUND51 )) { this->capabilities |= AO_CAP_MODE_5_1CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("5.1-channel ")); + xine_strcat_realloc (&logmsg, _(" 5.1-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_LOG, _("(5.1-channel not enabled in xine config) ")); + xine_strcat_realloc (&logmsg, _(" (5.1-channel not enabled in xine config)")); this->has_pause_resume = 0; /* This is checked at open time instead */ this->is_paused = 0; @@ -1583,10 +1586,13 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da if ( speakers == A52_PASSTHRU ) { this->capabilities |= AO_CAP_MODE_A52; this->capabilities |= AO_CAP_MODE_AC5; - xprintf(class->xine, XINE_VERBOSITY_LOG, _("a/52 and DTS pass-through\n")); + xine_strcat_realloc (&logmsg, _(" a/52 and DTS pass-through")); } else - xprintf(class->xine, XINE_VERBOSITY_LOG, _("(a/52 and DTS pass-through not enabled in xine config)\n")); + xine_strcat_realloc (&logmsg, _(" (a/52 and DTS pass-through not enabled in xine config)")); + + xprintf(class->xine, XINE_VERBOSITY_LOG, "%s\n", logmsg); + free (logmsg); /* printf("audio_alsa_out: capabilities 0x%X\n",this->capabilities); */ @@ -1682,7 +1688,7 @@ static void *init_class (xine_t *xine, void *data) { alsa_class_t *this; - this = (alsa_class_t *) xine_xmalloc (sizeof (alsa_class_t)); + this = calloc(1, sizeof (alsa_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_arts_out.c b/src/audio_out/audio_arts_out.c index 0f0467b4a..14bf5c965 100644 --- a/src/audio_out/audio_arts_out.c +++ b/src/audio_out/audio_arts_out.c @@ -303,7 +303,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da lprintf ("audio_arts_out: open_plugin called\n"); - this = (arts_driver_t *) xine_xmalloc (sizeof (arts_driver_t)); + this = calloc(1, sizeof (arts_driver_t)); if (!this) return NULL; @@ -384,7 +384,7 @@ static void *init_class (xine_t *xine, void *data) { lprintf ("audio_arts_out: init class\n"); - this = (arts_class_t *) xine_xmalloc (sizeof (arts_class_t)); + this = calloc(1, sizeof (arts_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_coreaudio_out.c b/src/audio_out/audio_coreaudio_out.c index eecab8f95..642f920c7 100644 --- a/src/audio_out/audio_coreaudio_out.c +++ b/src/audio_out/audio_coreaudio_out.c @@ -530,7 +530,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, lprintf ("open_plugin called\n"); - this = (coreaudio_driver_t *) xine_xmalloc (sizeof (coreaudio_driver_t)); + this = calloc(1, sizeof (coreaudio_driver_t)); if (!this) return NULL; @@ -582,7 +582,7 @@ static void *init_class (xine_t *xine, void *data) { lprintf ("init class\n"); - this = (coreaudio_class_t *) xine_xmalloc (sizeof (coreaudio_class_t)); + this = calloc(1, sizeof (coreaudio_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_directx2_out.c b/src/audio_out/audio_directx2_out.c index d9688b647..6bee2066c 100644 --- a/src/audio_out/audio_directx2_out.c +++ b/src/audio_out/audio_directx2_out.c @@ -31,6 +31,9 @@ * * Authors: * - Frantisek Dvorak <valtri@atlas.cz> + * - Original version with slotted ring buffer + * - Matthias Ringald <mringwal@inf.ethz.ch> + * - non-slotted simpler version for ring buffer handling * * Inspiration: * - mplayer for workarounding -lguid idea @@ -55,8 +58,8 @@ #define LOG_MODULE "audio_directx2_out" #define LOG_VERBOSE /* -#define LOG -*/ + #define LOG + */ #include "xine_internal.h" #include "audio_out.h" @@ -64,29 +67,33 @@ #define AO_OUT_DIRECTX2_IFACE_VERSION 8 + +/* + * If GAP_TOLERANCE is lower than AO_MAX_GAP, xine will + * try to smooth playback without skipping frames or + * inserting silence. + */ +#define GAP_TOLERANCE (AO_MAX_GAP/3) + /* * buffer size in miliseconds * (one second takes 11-192 KB) */ #define BUFFER_MS 1000 -/* - * number of parts in the buffer, - * one is always locked for playing +/* + * buffer below this threshold is considered a buffer underrun */ -#define PARTS 3 +#define BUFFER_MIN_MS 200 /* * base power factor for volume remapping */ #define FACTOR 60.0 - -/* experiments */ -/*#define EXACT_WAIT*/ -/*#define EXACT_SLEEP*/ -/*#define PANIC_OVERRUN*/ - +/* + * buffer handler status + */ #define STATUS_START 0 #define STATUS_WAIT 1 #define STATUS_RUNNING 2 @@ -108,12 +115,14 @@ typedef struct { LPDIRECTSOUND ds; /* DirectSound device */ LPDIRECTSOUNDBUFFER dsbuffer; /* DirectSound buffer */ - DSBPOSITIONNOTIFY events[PARTS]; /* position events */ - LPDIRECTSOUNDNOTIFY notify; /* notify interface */ size_t buffer_size; /* size of the buffer */ - size_t part_size; /* second half of buffer */ - size_t read_size; /* size of prepared data */ + size_t write_pos; /* positition in ring buffer for writing*/ + + int status; /* current status of the driver */ + int paused; /* paused mode */ + int finished; /* driver finished */ + int failed; /* don't open modal dialog again */ uint32_t bits; uint32_t rate; @@ -123,12 +132,6 @@ typedef struct { int volume; int muted; - int status; /* current status of the driver */ - int paused; /* paused mode */ - int finished; /* driver finished */ - int failed; /* don't open modal dialog again */ - int count; /* current free part number */ - pthread_t buffer_service; /* service thread for operating with DSB */ pthread_cond_t data_cond; /* signals on data */ pthread_mutex_t data_mutex; /* data lock */ @@ -140,17 +143,19 @@ typedef struct { * Defining them here allows us to get rid of the dxguid library during * the linking stage. *****************************************************************************/ -static const GUID IID_IDirectSoundNotify = { - 0xB0210783, 0x89CD, 0x11D0, {0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16} +static const GUID xine_IID_IDirectSoundNotify = { +0xB0210783, 0x89CD, 0x11D0, {0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16} }; +#ifdef IID_IDirectSoundNotify +# undef IID_IDirectSoundNotify +#endif +#define IID_IDirectSoundNotify xine_IID_IDirectSoundNotify -static int buffer_ready(dx2_driver_t *this); - /* popup a dialog with error */ static void XINE_FORMAT_PRINTF(1, 2) - error_message(const char *fmt, ...) { +error_message(const char *fmt, ...) { char message[256]; va_list ap; @@ -214,7 +219,7 @@ static LPDIRECTSOUND dsound_create() { /* destroy direct sound object */ static void dsound_destroy(LPDIRECTSOUND ds) { - IDirectSound_Release(ds); + IDirectSound_Release(ds); } @@ -266,12 +271,10 @@ static int audio_create_buffers(dx2_driver_t *this) { HRESULT err; size_t buffer_size; - buffer_size = this->rate * this->frame_size * BUFFER_MS / 1000; + buffer_size = this->rate * BUFFER_MS / 1000 * this->frame_size; if (buffer_size > DSBSIZE_MAX) buffer_size = DSBSIZE_MAX; if (buffer_size < DSBSIZE_MIN) buffer_size = DSBSIZE_MIN; - this->part_size = (buffer_size / PARTS / this->frame_size) * this->frame_size; - if (!this->part_size) this->part_size = this->frame_size; - this->buffer_size = this->part_size * PARTS; + this->buffer_size = buffer_size; flags = DSBCAPS_GLOBALFOCUS | DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY; dsound_fill_wfx(&wfx, this->bits, this->rate, this->channels, this->frame_size); @@ -282,7 +285,7 @@ static int audio_create_buffers(dx2_driver_t *this) { return 0; } - lprintf("created direct sound buffer, size = %u, part = %u\n", this->buffer_size, this->part_size); + lprintf("created direct sound buffer, size = %u\n", this->buffer_size); return 1; } @@ -293,43 +296,6 @@ static void audio_destroy_buffers(dx2_driver_t *this) { } -/* create position events */ -static int audio_create_events(dx2_driver_t *this) { - HANDLE handle[PARTS]; - HRESULT err; - int i; - - for (i = 0; i < PARTS; i++) { - handle[i] = CreateEvent(NULL, FALSE, FALSE, NULL); - if (!handle[i]) { - error_message(_("Unable to create buffer position events.")); - return 0; - } - this->events[i].dwOffset = i * this->part_size; - this->events[i].hEventNotify = handle[i]; - } - - if ((err = IDirectSoundBuffer_QueryInterface(this->dsbuffer, &IID_IDirectSoundNotify, (void **)&this->notify)) != DS_OK) { - audio_error(this, err, _("Unable to get notification interface")); - return 0; - } - - if ((err = IDirectSoundNotify_SetNotificationPositions(this->notify, PARTS, this->events)) != DS_OK) { - audio_error(this, err, _("Unable to set notification positions")); - IDirectSoundNotify_Release(this->notify); - return 0; - } - - return 1; -} - - -/* destroy notification interface */ -static void audio_destroy_events(dx2_driver_t *this) { - IDirectSoundNotify_Release(this->notify); -} - - /* start playback */ static int audio_play(dx2_driver_t *this) { HRESULT err; @@ -385,8 +351,7 @@ static int audio_seek(dx2_driver_t *this, size_t pos) { /* flush audio buffers */ static int audio_flush(dx2_driver_t *this) { this->status = STATUS_WAIT; - this->count = 0; - this->read_size = 0; + this->write_pos = 0; return audio_seek(this, 0); } @@ -421,12 +386,12 @@ static int audio_fill(dx2_driver_t *this, char *data, size_t size) { HRESULT err; /* lock a part of the buffer, begin position on free space */ - err = IDirectSoundBuffer_Lock(this->dsbuffer, (this->count * this->part_size + this->read_size) % this->buffer_size, size, &ptr1, &size1, &ptr2, &size2, 0); + err = IDirectSoundBuffer_Lock(this->dsbuffer, this->write_pos, size, &ptr1, &size1, &ptr2, &size2, 0); /* try to restore the buffer, if necessary */ if (err == DSERR_BUFFERLOST) { xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": buffer lost, tryig to restore\n")); IDirectSoundBuffer_Restore(this->dsbuffer); - err = IDirectSoundBuffer_Lock(this->dsbuffer, (this->count * this->part_size + this->read_size) % this->buffer_size, size, &ptr1, &size1, &ptr2, &size2, 0); } + err = IDirectSoundBuffer_Lock(this->dsbuffer, this->write_pos, size, &ptr1, &size1, &ptr2, &size2, 0); } if (err != DS_OK) { audio_error(this, err, _("Couldn't lock direct sound buffer")); return 0; @@ -436,19 +401,15 @@ static int audio_fill(dx2_driver_t *this, char *data, size_t size) { if (ptr1 && size1) xine_fast_memcpy(ptr1, data, size1); if (ptr2 && size2) xine_fast_memcpy(ptr2, data + size1, size2); - this->read_size += size; + // this->read_size += size; + this->write_pos = (this->write_pos + size ) % this->buffer_size; + lprintf("size %u, write_pos %u\n", size, this->write_pos); if ((err = IDirectSoundBuffer_Unlock(this->dsbuffer, ptr1, size1, ptr2, size2)) != DS_OK) { audio_error(this, err, _("Couldn't unlock direct sound buffer")); return 0; } - /* signal, if are waiting and need wake up */ - if ((this->status == STATUS_WAIT) && buffer_ready(this)) { - lprintf("buffer ready, waking up\n"); - pthread_cond_signal(&this->data_cond); - } - return 1; } @@ -458,28 +419,28 @@ static int mode2channels(uint32_t mode) { int channels; switch(mode) { - case AO_CAP_MODE_MONO: - channels = 1; - break; - - case AO_CAP_MODE_STEREO: - channels = 2; - break; - - case AO_CAP_MODE_4CHANNEL: - channels = 4; - break; - - case AO_CAP_MODE_5CHANNEL: - channels = 5; - break; - - case AO_CAP_MODE_5_1CHANNEL: - channels = 6; - break; - - default: - return 0; + case AO_CAP_MODE_MONO: + channels = 1; + break; + + case AO_CAP_MODE_STEREO: + channels = 2; + break; + + case AO_CAP_MODE_4CHANNEL: + channels = 4; + break; + + case AO_CAP_MODE_5CHANNEL: + channels = 5; + break; + + case AO_CAP_MODE_5_1CHANNEL: + channels = 6; + break; + + default: + return 0; } return channels; @@ -556,109 +517,94 @@ static int test_capabilities(dx2_driver_t *this) { /* size of free space in the ring buffer */ static size_t buffer_free_size(dx2_driver_t *this) { - size_t used_full_size; + + int ret; + size_t play_pos; + size_t free_space; - used_full_size = this->read_size + ((this->status != STATUS_WAIT) ? this->part_size : 0); - _x_assert(used_full_size <= this->buffer_size); - return this->buffer_size - used_full_size; + // get current play pos + ret = audio_tell(this, &play_pos); + if (!ret) + return 0; + + // calc free space (-1) + free_space = (this->buffer_size + play_pos - this->write_pos - 1) % this->buffer_size; + + return free_space; } -/* enough data in the ring buffer for playing next part? */ -static int buffer_ready(dx2_driver_t *this) { - return this->read_size >= this->part_size; +/* size of occupied space in the ring buffer */ +static size_t buffer_occupied_size(dx2_driver_t *this) { + int ret; + size_t play_pos; + size_t used_space; + + // get current play pos + ret = audio_tell(this, &play_pos); + if (!ret) return 0; + + // calc used space + used_space = (this->buffer_size + this->write_pos - play_pos) % this->buffer_size; + + return used_space; } /* service thread working with direct sound buffer */ static void *buffer_service(void *data) { dx2_driver_t *this = (dx2_driver_t *)data; - HANDLE handles[PARTS]; - DWORD ret; - int i; -#if defined(EXACT_SLEEP) || defined(EXACT_WAIT) - size_t play_pos, req_delay; -#endif + size_t buffer_min; + size_t data_in_buffer; /* prepare empty buffer */ audio_flush(this); - for (i = 0; i < PARTS; i++) handles[i] = this->events[i].hEventNotify; - + /* prepare min buffer fill */ + buffer_min = BUFFER_MIN_MS * this->rate / 1000 * this->frame_size; + /* we live! */ pthread_mutex_lock(&this->data_mutex); pthread_cond_signal(&this->data_cond); pthread_mutex_unlock(&this->data_mutex); while (!this->finished) { + pthread_mutex_lock(&this->data_mutex); - if (!buffer_ready(this)) { - if (!audio_stop(this)) goto fail; - lprintf("no data (count=%d,free=%" PRIsizet ",avail=%" PRIsizet "), sleeping...\n", this->count, buffer_free_size(this), this->read_size); - this->status = STATUS_WAIT; - pthread_cond_wait(&this->data_cond, &this->data_mutex); - lprintf("wake up (count=%d,free=%" PRIsizet "--,avail=%" PRIsizet ")\n", this->count, buffer_free_size(this), this->read_size); - if (this->finished) goto finished; - if (!audio_seek(this, this->count * this->part_size)) goto fail; - if (!this->paused) { - if (!audio_play(this)) goto fail; - } - this->status = STATUS_RUNNING; - this->count = (this->count + 1) % PARTS; - this->read_size -= this->part_size; - pthread_mutex_unlock(&this->data_mutex); - lprintf("wait for playback (newcount=%d,free=%" PRIsizet ",avail=%" PRIsizet ")\n", this->count, buffer_free_size(this), this->read_size); - do { - ret = WaitForMultipleObjects(PARTS, handles, FALSE, 250) - WAIT_OBJECT_0; + switch( this->status){ + + case STATUS_WAIT: + + // pre: stop/buffer flushed + lprintf("no data, sleeping...\n"); + pthread_cond_wait(&this->data_cond, &this->data_mutex); + lprintf("woke up (write_pos=%d,free=%" PRIsizet")\n", this->write_pos, buffer_free_size(this)); if (this->finished) goto finished; - } while (ret > PARTS); - lprintf("playback started (newcount=%d,ev=%d,free=%" PRIsizet ",avail=%" PRIsizet ")\n", this->count, ret, buffer_free_size(this), this->read_size); - _x_assert(ret == ((PARTS + this->count - 1) % PARTS)); - } else { - this->count = (this->count + 1) % PARTS; - this->read_size -= this->part_size; - pthread_mutex_unlock(&this->data_mutex); - } - lprintf("waiting for sound event(count=%d,free=%" PRIsizet ",avail=%" PRIsizet ")...\n", this->count, buffer_free_size(this), this->read_size); - do { - ret = WaitForMultipleObjects(PARTS, handles, FALSE, 250) - WAIT_OBJECT_0; - if (this->finished) goto finished; - } while (ret > PARTS); - lprintf("end wait(ev=%" PRIdword ",count=%d,free=%" PRIsizet ",avail=%" PRIsizet ")\n", ret, this->count, buffer_free_size(this), this->read_size); -#ifdef PANIC_OVERRUN - _x_abort(ret == this->count); -#else - if (ret != this->count) { - xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": play cursor overran, flushing buffers\n")); - pthread_mutex_lock(&this->data_mutex); - if (!audio_stop(this)) goto fail; - if (!audio_flush(this)) goto fail; - pthread_mutex_unlock(&this->data_mutex); - } -#endif - -#if defined(EXACT_SLEEP) || defined(EXACT_WAIT) - /* ugly hack: wait for right time, + little over for sure */ - pthread_mutex_lock(&this->data_mutex); - if (!audio_tell(this, &play_pos)) goto fail; - req_delay = (this->buffer_size + play_pos - this->count * this->part_size) % this->buffer_size; - pthread_mutex_unlock(&this->data_mutex); - if (req_delay > (this->buffer_size >> 1)) { - long delay; - - delay = 1000 * (this->buffer_size - req_delay) / (this->frame_size * this->rate) + 1 + BUFFER_MS / PARTS / 4; - xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": delayed by %ld msec\n"), delay); - printf("should be delayed %ld msec\n", delay); -#ifdef EXACT_SLEEP - xine_usec_sleep(delay * 1000); -#endif -#ifdef EXACT_WAIT - WaitForMultipleObjects(PARTS, handles, FALSE, delay); -#endif + if (!audio_seek(this, 0)) goto fail; + if (!this->paused) { + if (!audio_play(this)) goto fail; + } + this->status = STATUS_RUNNING; + pthread_mutex_unlock(&this->data_mutex); + break; + + case STATUS_RUNNING: + + // check for buffer underrun + data_in_buffer = buffer_occupied_size(this); + if ( data_in_buffer < buffer_min){ + xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": play cursor overran (data %u, min %u), flushing buffers\n"), + data_in_buffer, buffer_min); + if (!audio_stop(this)) goto fail; + if (!audio_flush(this)) goto fail; + } + pthread_mutex_unlock(&this->data_mutex); + + // just wait BUFFER_MIN_MS before next check + xine_usec_sleep(BUFFER_MIN_MS * 1000); + break; } -#endif } - return NULL; fail: @@ -683,15 +629,15 @@ static int ao_dx2_get_property(ao_driver_t *this_gen, int property) { switch(property) { - case AO_PROP_MIXER_VOL: - case AO_PROP_PCM_VOL: - return this->volume; + case AO_PROP_MIXER_VOL: + case AO_PROP_PCM_VOL: + return this->volume; - case AO_PROP_MUTE_VOL: - return this->muted; + case AO_PROP_MUTE_VOL: + return this->muted; - default: - return 0; + default: + return 0; } } @@ -702,26 +648,26 @@ static int ao_dx2_set_property(ao_driver_t *this_gen, int property, int value) { switch(property) { - case AO_PROP_MIXER_VOL: - case AO_PROP_PCM_VOL: - lprintf("set volume to %d\n", value); - pthread_mutex_lock(&this->data_mutex); - if (!this->muted) { - if (this->dsbuffer && !audio_set_volume(this, value)) return ~value; - } - this->volume = value; - pthread_mutex_unlock(&this->data_mutex); - break; + case AO_PROP_MIXER_VOL: + case AO_PROP_PCM_VOL: + lprintf("set volume to %d\n", value); + pthread_mutex_lock(&this->data_mutex); + if (!this->muted) { + if (this->dsbuffer && !audio_set_volume(this, value)) return ~value; + } + this->volume = value; + pthread_mutex_unlock(&this->data_mutex); + break; - case AO_PROP_MUTE_VOL: - pthread_mutex_lock(&this->data_mutex); - if (this->dsbuffer && !audio_set_volume(this, value ? 0 : this->volume)) return ~value; - this->muted = value; - pthread_mutex_unlock(&this->data_mutex); - break; + case AO_PROP_MUTE_VOL: + pthread_mutex_lock(&this->data_mutex); + if (this->dsbuffer && !audio_set_volume(this, value ? 0 : this->volume)) return ~value; + this->muted = value; + pthread_mutex_unlock(&this->data_mutex); + break; - default: - return ~value; + default: + return ~value; } @@ -747,18 +693,17 @@ static int ao_dx2_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate, int this->status = STATUS_START; if (!audio_create_buffers(this)) return 0; - if (!audio_create_events(this)) goto fail_buffers; - if (!audio_set_volume(this, this->volume)) goto fail_events; + if (!audio_set_volume(this, this->volume)) goto fail_buffers; if (pthread_cond_init(&this->data_cond, NULL) != 0) { xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": can't create pthread condition: %s\n"), strerror(errno)); - goto fail_events; + goto fail_buffers; } if (pthread_mutex_init(&this->data_mutex, NULL) != 0) { xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": can't create pthread mutex: %s\n"), strerror(errno)); goto fail_cond; } - + /* creating the service thread and waiting for its signal */ pthread_mutex_lock(&this->data_mutex); if (pthread_create(&this->buffer_service, NULL, buffer_service, this) != 0) { @@ -775,8 +720,6 @@ fail_mutex: pthread_mutex_destroy(&this->data_mutex); fail_cond: pthread_cond_destroy(&this->data_cond); -fail_events: - audio_destroy_events(this); fail_buffers: audio_destroy_buffers(this); return 0; @@ -803,22 +746,26 @@ static int ao_dx2_bytes_per_frame(ao_driver_t *this_gen) { static int ao_dx2_delay(ao_driver_t *this_gen) { dx2_driver_t *this = (dx2_driver_t *)this_gen; - int frames; - size_t final_pos, play_pos; - - if (this->status != STATUS_RUNNING) return this->read_size / this->frame_size; + int frames = 0; + int ret; + size_t play_pos; pthread_mutex_lock(&this->data_mutex); - if (!audio_tell(this, &play_pos)) { - pthread_mutex_unlock(&this->data_mutex); - return 0; - } - final_pos = this->read_size + (((PARTS + this->count - 1) % PARTS) + 1) * this->part_size - 1; - frames = (this->buffer_size + final_pos - play_pos) % this->buffer_size / this->frame_size; + + if (this->status != STATUS_RUNNING){ + frames = this->write_pos / this->frame_size; + } else { + ret = audio_tell(this, &play_pos); + if (ret){ + frames = buffer_occupied_size(this) / this->frame_size; + } + } + pthread_mutex_unlock(&this->data_mutex); #ifdef LOG - if ((rand() % 10) == 0) lprintf("frames=%d, play_pos=%" PRIdword ", block=%" PRIsizet "..%" PRIsizet "\n", frames, play_pos, final_pos - this->part_size + 1, final_pos); + if ((rand() % 10) == 0) + lprintf("frames=%d, play_pos=%" PRIdword ", write_pos=%u\n", frames, play_pos, this->write_pos); #endif return frames; @@ -840,7 +787,7 @@ static int ao_dx2_write(ao_driver_t *this_gen, int16_t* audio_data, uint32_t num while (((free_size = buffer_free_size(this)) == 0) && !this->finished) { lprintf("buffer full, waiting\n"); pthread_mutex_unlock(&this->data_mutex); - xine_usec_sleep(1000 * BUFFER_MS / PARTS / 5); + xine_usec_sleep(1000 * BUFFER_MS / 10); pthread_mutex_lock(&this->data_mutex); } if (free_size >= input_size) size = input_size; @@ -856,6 +803,12 @@ static int ao_dx2_write(ao_driver_t *this_gen, int16_t* audio_data, uint32_t num input_size -= size; } + /* signal, if are waiting and need wake up */ + if ((this->status == STATUS_WAIT) && (buffer_occupied_size(this) > BUFFER_MIN_MS * this->rate / 1000 * this->frame_size)) { + lprintf("buffer ready, waking up\n"); + pthread_cond_signal(&this->data_cond); + } + return 1; } @@ -881,7 +834,6 @@ static void ao_dx2_close(ao_driver_t *this_gen) { if (pthread_mutex_destroy(&this->data_mutex) != 0) { xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": can't destroy pthread mutex: %s\n"), strerror(errno)); } - audio_destroy_events(this); audio_destroy_buffers(this); } @@ -896,12 +848,8 @@ static void ao_dx2_exit(ao_driver_t *this_gen) { } -/* - * TODO: check - */ static int ao_dx2_get_gap_tolerance(ao_driver_t *this_gen) { - /* half of part of the buffer in pts (1 msec = 90 pts) */ - return (90 * (BUFFER_MS / PARTS)) >> 1; + return GAP_TOLERANCE; } @@ -910,36 +858,36 @@ static int ao_dx2_control(ao_driver_t *this_gen, int cmd, ...) { switch(cmd) { - case AO_CTRL_PLAY_PAUSE: - lprintf("control pause\n"); - pthread_mutex_lock(&this->data_mutex); - if (!this->paused) { - audio_stop(this); - this->paused = 1; - } - pthread_mutex_unlock(&this->data_mutex); - break; + case AO_CTRL_PLAY_PAUSE: + lprintf("control pause\n"); + pthread_mutex_lock(&this->data_mutex); + if (!this->paused) { + audio_stop(this); + this->paused = 1; + } + pthread_mutex_unlock(&this->data_mutex); + break; - case AO_CTRL_PLAY_RESUME: - lprintf("control resume\n"); - pthread_mutex_lock(&this->data_mutex); - if (this->paused) { - if (this->status != STATUS_WAIT) audio_play(this); - this->paused = 0; - } - pthread_mutex_unlock(&this->data_mutex); - break; - - case AO_CTRL_FLUSH_BUFFERS: - lprintf("control flush\n"); - pthread_mutex_lock(&this->data_mutex); - audio_stop(this); - audio_flush(this); - pthread_mutex_unlock(&this->data_mutex); - break; + case AO_CTRL_PLAY_RESUME: + lprintf("control resume\n"); + pthread_mutex_lock(&this->data_mutex); + if (this->paused) { + if (this->status != STATUS_WAIT) audio_play(this); + this->paused = 0; + } + pthread_mutex_unlock(&this->data_mutex); + break; + + case AO_CTRL_FLUSH_BUFFERS: + lprintf("control flush\n"); + pthread_mutex_lock(&this->data_mutex); + audio_stop(this); + audio_flush(this); + pthread_mutex_unlock(&this->data_mutex); + break; - default: - xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": unknown control command %d\n"), cmd); + default: + xine_log(this->class->xine, XINE_LOG_MSG, _(LOG_MODULE ": unknown control command %d\n"), cmd); } @@ -955,7 +903,7 @@ static ao_driver_t *open_plugin(audio_driver_class_t *class_gen, const void *dat lprintf("open plugin called\n"); - this = (dx2_driver_t *)xine_xmalloc(sizeof(dx2_driver_t)); + this = calloc(1, sizeof(dx2_driver_t)); if (!this) return NULL; @@ -1009,7 +957,7 @@ static void *init_class(xine_t *xine, void *data) { lprintf("init class\n"); - this = (dx2_class_t *)xine_xmalloc(sizeof(dx2_class_t)); + this = calloc(1, sizeof(dx2_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_directx_out.c b/src/audio_out/audio_directx_out.c index 77e3e15b9..21ba23d91 100644 --- a/src/audio_out/audio_directx_out.c +++ b/src/audio_out/audio_directx_out.c @@ -60,9 +60,13 @@ typedef unsigned char boolean; * the linking stage. *****************************************************************************/ #if 1 -static const GUID IID_IDirectSoundNotify = { +static const GUID xine_IID_IDirectSoundNotify = { 0xB0210783,0x89CD,0x11D0,{0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16} }; +#ifdef IID_IDirectSoundNotify +# undef IID_IDirectSoundNotify +#endif +#define IID_IDirectSoundNotify xine_IID_IDirectSoundNotify #endif @@ -790,7 +794,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da audiox_class_t *class = (audiox_class_t *) class_gen; ao_directx_t *ao_directx; - ao_directx = ( ao_directx_t * ) xine_xmalloc( sizeof( ao_directx_t ) ); + ao_directx = calloc(1, sizeof(ao_directx_t)); if (!ao_directx) return NULL; @@ -841,7 +845,7 @@ static void *init_class (xine_t *xine, void *data) { /* * from this point on, nothing should go wrong anymore */ - audiox = (audiox_class_t *) xine_xmalloc (sizeof (audiox_class_t)); + audiox = calloc(1, sizeof (audiox_class_t)); if (!audiox) return NULL; diff --git a/src/audio_out/audio_esd_out.c b/src/audio_out/audio_esd_out.c index 4b209bea1..63c54b546 100644 --- a/src/audio_out/audio_esd_out.c +++ b/src/audio_out/audio_esd_out.c @@ -521,7 +521,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, esd_close(audio_fd); - this = (esd_driver_t *) xine_xmalloc (sizeof (esd_driver_t)); + this = calloc(1, sizeof (esd_driver_t)); if (!this) return NULL; this->xine = class->xine; @@ -583,7 +583,7 @@ static void *init_class (xine_t *xine, void *data) { esd_class_t *this; - this = (esd_class_t *) xine_xmalloc (sizeof (esd_class_t)); + this = calloc(1, sizeof (esd_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_file_out.c b/src/audio_out/audio_file_out.c index 225d64d0e..699a5cf54 100644 --- a/src/audio_out/audio_file_out.c +++ b/src/audio_out/audio_file_out.c @@ -323,7 +323,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, lprintf ("open_plugin called\n"); - this = (file_driver_t *) xine_xmalloc (sizeof (file_driver_t)); + this = calloc(1, sizeof (file_driver_t)); if (!this) return NULL; @@ -375,7 +375,7 @@ static void *init_class (xine_t *xine, void *data) { lprintf ("init class\n"); - this = (file_class_t *) xine_xmalloc (sizeof (file_class_t)); + this = calloc(1, sizeof (file_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_fusionsound_out.c b/src/audio_out/audio_fusionsound_out.c index 92eadc6cf..6c3a0ae33 100644 --- a/src/audio_out/audio_fusionsound_out.c +++ b/src/audio_out/audio_fusionsound_out.c @@ -389,11 +389,11 @@ static ao_driver_t* open_plugin(audio_driver_class_t *ao_class, fusionsound_class_t *class = (fusionsound_class_t *) ao_class; fusionsound_driver_t *this; const char *args[] = { "xine", "--dfb:no-sighandler", "--fs:no-banner" }; - int argn = sizeof(args) / sizeof(args[0]); + const size_t argn = sizeof(args) / sizeof(args[0]); char **argp = (char **) args; DFBResult ret; - this = (fusionsound_driver_t *) xine_xmalloc (sizeof(fusionsound_driver_t)); + this = calloc(1, sizeof(fusionsound_driver_t)); if (!this) { xprintf (class->xine, XINE_VERBOSITY_LOG, "audio_fusionsound_out: driver interface allocation failed!\n"); @@ -460,7 +460,7 @@ static void* init_class(xine_t *xine, void *data) { return NULL; } - class = (fusionsound_class_t *) xine_xmalloc (sizeof( fusionsound_class_t)); + class = calloc(1, sizeof( fusionsound_class_t)); if (!class) { xprintf (xine, XINE_VERBOSITY_LOG, "audio_fusionsound_out: class interface allocation failed!\n"); diff --git a/src/audio_out/audio_jack_out.c b/src/audio_out/audio_jack_out.c index 1bc070527..10c58c774 100644 --- a/src/audio_out/audio_jack_out.c +++ b/src/audio_out/audio_jack_out.c @@ -1,3 +1,6 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include <stdio.h> #include <errno.h> @@ -17,431 +20,942 @@ #define AO_OUT_JACK_IFACE_VERSION 8 #define GAP_TOLERANCE AO_MAX_GAP -#define BUFSIZE 81920 +/* maximum number of channels supported, avoids lots of mallocs */ +#define MAX_CHANS 6 -typedef struct jack_driver_s { +typedef struct jack_driver_s +{ + ao_driver_t ao_driver; + xine_t *xine; + + int capabilities; + int mode; + int paused; + int underrun; + + int32_t output_sample_rate, input_sample_rate; + uint32_t num_channels; + uint32_t bits_per_sample; + uint32_t bytes_per_frame; + uint32_t bytes_in_buffer; /* number of bytes writen to audio hardware */ + uint32_t fragment_size; + + jack_client_t *client; + jack_port_t *ports[MAX_CHANS]; + + /*! buffer for audio data */ + unsigned char *buffer; + + /*! buffer read position, may only be modified by playback thread or while it is stopped */ + uint32_t read_pos; + /*! buffer write position, may only be modified by MPlayer's thread */ + uint32_t write_pos; + + struct + { + int volume; + int mute; + } mixer; - ao_driver_t ao_driver; - xine_t *xine; +} jack_driver_t; - int capabilities; +typedef struct +{ + audio_driver_class_t driver_class; + config_values_t *config; + xine_t *xine; +} jack_class_t; - int32_t sample_rate; - uint32_t num_channels; - uint32_t bits_per_sample; - uint32_t bytes_per_frame; - jack_client_t *client; - jack_port_t *port_1; - jack_port_t *port_2; - float buf_1[BUFSIZE]; - float buf_2[BUFSIZE]; - uint32_t buf_read; - uint32_t buf_write; +/************************************************************** + * + * Simple ringbuffer implementation + * Lifted from mplayer ao_jack.c + * +**************************************************************/ + + +/*! size of one chunk, if this is too small Xine will start to "stutter" */ +/*! after a short time of playback */ +#define CHUNK_SIZE (16 * 1024) +/*! number of "virtual" chunks the buffer consists of */ +#define NUM_CHUNKS 8 +/* This type of ring buffer may never fill up completely, at least */ +/* one byte must always be unused. */ +/* For performance reasons (alignment etc.) one whole chunk always stays */ +/* empty, not only one byte. */ +#define BUFFSIZE ((NUM_CHUNKS + 1) * CHUNK_SIZE) + +/** + * \brief get the number of free bytes in the buffer + * \return number of free bytes in buffer + * + * may only be called by Xine's thread + * return value may change between immediately following two calls, + * and the real number of free bytes might be larger! + */ +static int buf_free (jack_driver_t *this) +{ + int free = this->read_pos - this->write_pos - CHUNK_SIZE; + if (free < 0) + free += BUFFSIZE; + return free; +} - uint32_t volume; - uint32_t mute; +/** + * \brief get amount of data available in the buffer + * \return number of bytes available in buffer + * + * may only be called by the playback thread + * return value may change between immediately following two calls, + * and the real number of buffered bytes might be larger! + */ +static int buf_used (jack_driver_t *this) +{ + int used = this->write_pos - this->read_pos; + if (used < 0) + used += BUFFSIZE; + return used; +} -} jack_driver_t; +/** + * \brief insert len bytes into buffer + * \param data data to insert + * \param len length of data + * \return number of bytes inserted into buffer + * + * If there is not enough room, the buffer is filled up + * + * TODO: Xine should really pass data as float, perhaps in V1.2? + */ +static int write_buffer_32 (jack_driver_t *this, unsigned char *data, int len) +{ + int first_len = BUFFSIZE - this->write_pos; + int free = buf_free (this); + if (len > free) + len = free; + if (first_len > len) + first_len = len; + + /* copy from current write_pos to end of buffer */ + memcpy (&(this->buffer[this->write_pos]), data, first_len); + if (len > first_len) { /* we have to wrap around */ + /* remaining part from beginning of buffer */ + memcpy (this->buffer, &data[first_len], len - first_len); + } + this->write_pos = (this->write_pos + len) % BUFFSIZE; + + return len; +} + +static int write_buffer_16 (jack_driver_t *this, unsigned char *data, int len) +{ + int samples_free = buf_free (this) / (sizeof (float)); + int samples = len / 2; + if (samples > samples_free) + samples = samples_free; + + /* Rename some pointers so that the next bit of gymnastics is easier to read */ + uint32_t write_pos = this->write_pos; + float *p_write; + int16_t *p_read = (int16_t *) data; + int i; + for (i = 0; i < samples; i++) { + /* Read in 16bits, write out floats */ + p_write = (float *) (&(this->buffer[write_pos])); + *p_write = ((float) (p_read[i])) / 32767.0f; + write_pos = (write_pos + sizeof (float)) % BUFFSIZE; + } + this->write_pos = write_pos; + + return samples * 2; +} -typedef struct { - audio_driver_class_t driver_class; - config_values_t *config; - xine_t *xine; -} jack_class_t; -static int jack_process(jack_nframes_t nframes, void *arg) +/** + * \brief read data from buffer and splitting it into channels + * \param bufs num_bufs float buffers, each will contain the data of one channel + * \param cnt number of samples to read per channel + * \param num_bufs number of channels to split the data into + * \return number of samples read per channel, equals cnt unless there was too + * little data in the buffer + * + * Assumes the data in the buffer is of type float, the number of bytes + * read is res * num_bufs * sizeof(float), where res is the return value. + * If there is not enough data in the buffer remaining parts will be filled + * with silence. + */ +static int read_buffer (jack_driver_t *this, float **bufs, int cnt, + int num_bufs, float gain) { - jack_driver_t *this = (jack_driver_t *)arg; - uint32_t local_buf_read = this->buf_read; - uint32_t local_buf_write = this->buf_write; - uint32_t src_channel, target_channel; - uint32_t frame; - float *buf, *out; - float gain = 0; - - if (!this->client) return 0; - - if (!this->mute) { - gain = (float)this->volume / 100.0; + int buffered = buf_used (this); + int i, j; + int orig_cnt = cnt; + if (cnt * sizeof (float) * num_bufs > buffered) + cnt = buffered / (sizeof (float) * num_bufs); + + uint32_t read_pos = this->read_pos; + unsigned char *buffer = this->buffer; + for (i = 0; i < cnt; i++) { + for (j = 0; j < num_bufs; j++) { + bufs[j][i] = *((float *) (&(buffer[read_pos]))) * gain; + read_pos = (read_pos + sizeof (float)) % BUFFSIZE; } + } + this->read_pos = read_pos; + for (i = cnt; i < orig_cnt; i++) + for (j = 0; j < num_bufs; j++) + bufs[j][i] = 0; - for (target_channel = 0; target_channel < 2; ++target_channel) { - - if (target_channel < this->num_channels) src_channel = target_channel; - else src_channel = 0; + return cnt; +} - jack_port_t *port = (target_channel ? this->port_2 : this->port_1); - if (!port) continue; +/** + * \brief fill the buffers with silence + * \param bufs num_bufs float buffers, each will contain the data of one channel + * \param cnt number of samples in each buffer + * \param num_bufs number of buffers + */ +static void silence (float **bufs, int cnt, int num_bufs) +{ + int i, j; + for (i = 0; i < cnt; i++) + for (j = 0; j < num_bufs; j++) + bufs[j][i] = 0; +} - buf = (src_channel ? this->buf_2 : this->buf_1); - out = (float *)jack_port_get_buffer(port, nframes); - local_buf_read = this->buf_read; - frame = 0; +/************************************************************** + * + * Jack interface functions + * +**************************************************************/ - while (frame < nframes && local_buf_read != local_buf_write) { - // local_buf_write doesn't change during this process, - // so we can safely defer updating buf_read until after +/** + * \brief stop playing and empty buffers (for seeking/pause) + */ +static void jack_reset (jack_driver_t *this) +{ + this->paused = 1; + this->read_pos = this->write_pos = 0; + this->paused = 0; +} - out[frame++] = buf[local_buf_read] * gain; - if (++local_buf_read == BUFSIZE) local_buf_read = 0; - } +static int jack_callback (jack_nframes_t nframes, void *arg) +{ + jack_driver_t *this = (jack_driver_t *) arg; - if (frame < nframes) { -// printf("jack_process: underrun: %u required, %u available\n", -// nframes, frame); - while (frame < nframes) { - out[frame++] = 0.0f; - } - } + if (!this->client) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_callback: called without a client parameter? silently trying to continue...\n"); + return 0; + } + + float gain = 0; + if (!this->mixer.mute) { + gain = (float) this->mixer.volume / 100.0; + gain *= gain; /* experiment with increasing volume range */ + } + + float *bufs[MAX_CHANS]; + int i; + for (i = 0; i < this->num_channels; i++) + bufs[i] = jack_port_get_buffer (this->ports[i], nframes); + + if (this->paused || this->underrun) { + silence (bufs, nframes, this->num_channels); + } else { + int frames_read = read_buffer (this, bufs, nframes, this->num_channels, gain); + if (frames_read < nframes) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_callback: underrun - frames read: %d\n", frames_read); + this->underrun = 1; } + } - this->buf_read = local_buf_read; + return 0; +} -// printf("jack_process: buf_read %u, buf_write %u\n", this->buf_read, this->buf_write); +static void jack_shutdown (void *arg) +{ + jack_driver_t *this = (jack_driver_t *) arg; + this->client = NULL; +} - return 0; +/* + * Open the Jack audio device + * Return 1 on success, 0 on failure + * All error handling rests with the caller, we just try to open the device here + */ +static int jack_open_device (ao_driver_t *this_gen, char *jack_device, + int32_t *poutput_sample_rate, int num_channels) +{ + jack_driver_t *this = (jack_driver_t *) this_gen; + const char **matching_ports = NULL; + char *port_name = NULL; + jack_client_t *client = this->client; + + int port_flags = JackPortIsInput; + int i; + int num_ports; + + if (num_channels > MAX_CHANS) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: Invalid number of channels: %i\n", + num_channels); + goto err_out; + } + /* Try to create a client called "xine" */ + if ((client = jack_client_new ("xine")) == 0) { + /* If that doesn't work it could be because running two copies of xine - try using a unique name */ + char client_name[20]; + sprintf (client_name, "xine (%d)", (int) getpid ()); + + if ((client = jack_client_new (client_name)) == 0) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "\njack_open_device: Error: Failed to connect to JACK server\n"); + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: (did you start 'jackd' server?)\n"); + goto err_out; + } + } + + /* Save the new client */ + this->client = client; + + jack_reset (this); + jack_set_process_callback (client, jack_callback, this); + + /* list matching ports */ + if (!jack_device) + port_flags |= JackPortIsPhysical; + matching_ports = jack_get_ports (client, jack_device, NULL, port_flags); + for (num_ports = 0; matching_ports && matching_ports[num_ports]; + num_ports++); + if (!num_ports) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: no physical ports available\n"); + goto err_out; + } + if (num_ports < num_channels) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: not enough physical ports available\n"); + goto err_out; + } + + /* create output ports */ + for (i = 0; i < num_channels; i++) { + char pname[50]; + snprintf (pname, 50, "out_%d", i); + this->ports[i] = + jack_port_register (client, pname, JACK_DEFAULT_AUDIO_TYPE, + JackPortIsOutput, 0); + if (!this->ports[i]) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: could not create output ports? Why not?\n"); + goto err_out; + } + } + if (jack_activate (client)) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: jack_activate() failed\n"); + goto err_out; + } + for (i = 0; i < num_channels; i++) { + if (jack_connect + (client, jack_port_name (this->ports[i]), matching_ports[i])) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "jack_open_device: jack_connect() failed\n"); + goto err_out; + } + } + *poutput_sample_rate = jack_get_sample_rate (client); + + free (matching_ports); + return 1; + +err_out: + free (matching_ports); + if (client) { + jack_client_close (client); + this->client = NULL; + } + return 0; } - -static void jack_shutdown(void *arg) + +/************************************************************** + * + * Xine interface functions + * +**************************************************************/ + + +/** + * close the device and reset the play position + */ +static void ao_jack_close (ao_driver_t *this_gen) { - jack_driver_t *this = (jack_driver_t *)arg; - this->client = 0; + jack_driver_t *this = (jack_driver_t *) this_gen; + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "ao_jack_close: closing\n"); + + jack_reset (this); + if (this->client) { + jack_client_close (this->client); + this->client = NULL; + } } /* * open the audio device for writing to */ -static int ao_jack_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate, int mode) +static int ao_jack_open (ao_driver_t *this_gen, uint32_t bits, uint32_t rate, + int mode) { - jack_driver_t *this = (jack_driver_t *) this_gen; + jack_driver_t *this = (jack_driver_t *) this_gen; + config_values_t *config = this->xine->config; + char *jack_device; - if (bits != 16) { - fprintf(stderr, "ao_jack_open: bits=%u expected %u\n", bits, 16); - return 0; - } + jack_device = + config->lookup_entry (config, "audio.device.jack_device_name")->str_value; - rate = jack_get_sample_rate(this->client); - fprintf(stderr, "ao_jack_open: JACK sample rate is %u\n", rate); + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "ao_jack_open: ao_open rate=%d, mode=%d, bits=%d dev=%s\n", rate, + mode, bits, jack_device); - switch (mode) { - case AO_CAP_MODE_MONO: - this->num_channels = 1; - break; - case AO_CAP_MODE_STEREO: - this->num_channels = 2; - break; + if ((bits != 16) && (bits != 32)) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "ao_jack_open: bits=%u expected 16 or 32bit only\n", bits); + return 0; + } + + if ((mode & this->capabilities) == 0) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "ao_jack_open: unsupported mode %08x\n", mode); + return 0; + } + + /* If device open already then either re-use it or close it */ + if (this->client) { + if ((mode == this->mode) && (rate == this->input_sample_rate)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "ao_jack_open: device already open, reusing it\n"); + return this->output_sample_rate; } - this->buf_read = this->buf_write = 0; - this->sample_rate = rate; - this->bits_per_sample = bits; - this->capabilities = AO_CAP_16BITS | AO_CAP_MODE_MONO | \ - AO_CAP_MODE_STEREO | AO_CAP_MIXER_VOL | AO_CAP_MUTE_VOL; - this->bytes_per_frame = this->num_channels * (bits / 8); + ao_jack_close (this_gen); + } + + + this->mode = mode; + this->input_sample_rate = rate; + this->bits_per_sample = bits; + this->bytes_in_buffer = 0; + this->read_pos = this->write_pos = 0; + this->paused = 0; + this->underrun = 0; + + /* + * set number of channels / a52 passthrough + */ + switch (mode) { + case AO_CAP_MODE_MONO: + this->num_channels = 1; + break; + case AO_CAP_MODE_STEREO: + this->num_channels = 2; + break; + case AO_CAP_MODE_4CHANNEL: + this->num_channels = 4; + break; + case AO_CAP_MODE_4_1CHANNEL: + case AO_CAP_MODE_5CHANNEL: + case AO_CAP_MODE_5_1CHANNEL: + this->num_channels = 6; + break; + case AO_CAP_MODE_A52: + case AO_CAP_MODE_AC5: + /* FIXME: Is this correct...? */ + this->num_channels = 2; + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "ao_jack_open: AO_CAP_MODE_A52\n"); + break; + default: + xprintf (this->xine, XINE_VERBOSITY_LOG, + "ao_jack_open: JACK Driver does not support the requested mode: 0x%X\n", + mode); + return 0; + } + + xprintf (this->xine, XINE_VERBOSITY_LOG, + "ao_jack_open: %d channels output\n", this->num_channels); + this->bytes_per_frame = (this->bits_per_sample * this->num_channels) / 8; - fprintf(stderr, "ao_jack_open: bits=%d rate=%d, mode=%d OK\n", bits, rate, mode); + /* + * open audio device + */ + if (!jack_open_device (this_gen, jack_device, &(this->output_sample_rate), + this->num_channels)) + return 0; - return rate; + if (this->input_sample_rate != this->output_sample_rate) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "ao_jack_open: audio rate : %d requested, %d provided by device\n", + this->input_sample_rate, this->output_sample_rate); + } + + return this->output_sample_rate; } -static int ao_jack_num_channels(ao_driver_t *this_gen) +static int ao_jack_num_channels (ao_driver_t *this_gen) { - jack_driver_t *this = (jack_driver_t *) this_gen; - return this->num_channels; + jack_driver_t *this = (jack_driver_t *) this_gen; + return this->num_channels; } -static int ao_jack_bytes_per_frame(ao_driver_t *this_gen) +static int ao_jack_bytes_per_frame (ao_driver_t *this_gen) { - jack_driver_t *this = (jack_driver_t *) this_gen; - return this->bytes_per_frame; + jack_driver_t *this = (jack_driver_t *) this_gen; + return this->bytes_per_frame; } static int ao_jack_get_gap_tolerance (ao_driver_t *this_gen) { - return GAP_TOLERANCE; + return GAP_TOLERANCE; } -static int last_write_space = 0; - -static int ao_jack_write(ao_driver_t *this_gen, int16_t *data, - uint32_t num_frames) +/* + * Return the number of outstanding frames in all output buffers + * need to account for ring buffer plus Jack, plus soundcard + */ +static int ao_jack_delay (ao_driver_t *this_gen) { - jack_driver_t *this = (jack_driver_t *) this_gen; - uint32_t frame, channel; - - uint32_t local_buf_read = this->buf_read; - uint32_t local_buf_write = this->buf_write; - uint32_t space = (local_buf_read + BUFSIZE - local_buf_write - 1) % BUFSIZE; - uint32_t first_frame = 0; - - int c = 0; - while (space < num_frames) { - if (++c == 10) return 0; - usleep(10000); - local_buf_read = this->buf_read; - space = (local_buf_read + BUFSIZE - local_buf_write - 1) % BUFSIZE; - } - -// if (space < num_frames) return 0; - -// printf("ao_jack_write: %u frames on %u channels, space is %u\n", num_frames, this->num_channels, space); - last_write_space = space; - - for (frame = first_frame; frame < num_frames; ++frame) { - for (channel = 0; channel < this->num_channels; ++channel) { - float *buf = (channel ? this->buf_2 : this->buf_1); - int16_t sample = data[frame * this->num_channels + channel]; - buf[local_buf_write] = ((float)sample) / 32767.0f; -// printf("%6f ", buf[local_buf_write]); -// if (++c == 8) { printf("\n"); c = 0; } - } - if (++local_buf_write == BUFSIZE) local_buf_write = 0; - } - - this->buf_write = local_buf_write; + jack_driver_t *this = (jack_driver_t *) this_gen; + int frames_played = jack_frames_since_cycle_start (this->client); -// printf("ao_jack_write: buf_read %u, buf_write %u\n", this->buf_read, this->buf_write); + int delay = 0; + /* Ring Buffer always stores floats */ + /* TODO: Unsure if the delay should be fragment_size*2 or *3? */ + delay = buf_used (this) / (sizeof (float) * this->num_channels) + + this->fragment_size * 3 - frames_played; - return 1; + return delay; } -static int ao_jack_delay (ao_driver_t *this_gen) + /* Write audio samples + * num_frames is the number of audio frames present + * audio frames are equivalent one sample on each channel. + * I.E. Stereo 16 bits audio frames are 4 bytes. + * MUST SIMULATE BLOCKING WRITES + */ +static int ao_jack_write (ao_driver_t *this_gen, int16_t *frame_buffer, + uint32_t num_frames) { - jack_driver_t *this = (jack_driver_t *) this_gen; - - uint32_t local_buf_read = this->buf_read; - uint32_t local_buf_write = this->buf_write; + jack_driver_t *this = (jack_driver_t *) this_gen; + int written = 0; + int num_bytes = num_frames * this->bytes_per_frame; + + /* First try and write all the bytes in one go */ + this->underrun = 0; + /* TODO: In the future Xine should pass only floats to us, so no conversion needed */ + if (this->bits_per_sample == 16) + written = write_buffer_16 (this, (char *) frame_buffer, num_bytes); + else if (this->bits_per_sample == 32) + written = write_buffer_32 (this, (char *) frame_buffer, num_bytes); + + /* If this fails then need to spin and keep trying until everything written */ + int spin_count = 0; + while ((written < num_bytes) && (spin_count < 40)) { + num_bytes -= written; + frame_buffer += written / 2; + + /* Sleep to save CPU */ + int until_callback = + this->fragment_size - jack_frames_since_cycle_start (this->client); + if ((until_callback < 0) || (until_callback > this->fragment_size)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "ao_jack_write: Invalid until_callback %d\n", until_callback); + until_callback = this->fragment_size; + } + xine_usec_sleep (((until_callback + + 100) * 1000.0 * 1000.0) / this->output_sample_rate); - int delay = 0; + if (this->bits_per_sample == 16) + written = write_buffer_16 (this, (char *) frame_buffer, num_bytes); + else if (this->bits_per_sample == 32) + written = write_buffer_32 (this, (char *) frame_buffer, num_bytes); - if (local_buf_write > local_buf_read) { - delay = local_buf_write - local_buf_read; - } else { - delay = ((local_buf_write + BUFSIZE - local_buf_read) % BUFSIZE); - } + if (written == 0) + spin_count++; + else + spin_count = 0; - return delay;// - jack_get_buffer_size(this->client); -} + if (written == 0) + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "ao_jack_write: unusual, couldn't write anything\n"); + }; -static void ao_jack_close(ao_driver_t *this_gen) -{ - // nothing -} + if (spin_count) + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "Nonzero spin_count...%d\n", spin_count); -static uint32_t ao_jack_get_capabilities (ao_driver_t *this_gen) { - jack_driver_t *this = (jack_driver_t *) this_gen; - return this->capabilities; + return spin_count ? 0 : 1; /* return 1 on success, 0 if we got stuck for some reason */ } -static void ao_jack_exit(ao_driver_t *this_gen) +static uint32_t ao_jack_get_capabilities (ao_driver_t *this_gen) { - jack_driver_t *this = (jack_driver_t *) this_gen; - jack_client_t *client = this->client; - ao_jack_close(this_gen); - this->client = 0; - if (client) jack_client_close(client); - free (this); + jack_driver_t *this = (jack_driver_t *) this_gen; + return this->capabilities; } -static int ao_jack_get_property (ao_driver_t *this_gen, int property) { - jack_driver_t *this = (jack_driver_t *) this_gen; - - switch(property) { - case AO_PROP_PCM_VOL: - case AO_PROP_MIXER_VOL: -// printf("ao_jack_get_property(AO_PROP_MIXER_VOL): %u\n", this->volume); - return this->volume; - break; - case AO_PROP_MUTE_VOL: -// printf("ao_jack_get_property(AO_PROP_MUTE_VOL): %u\n", this->mute); - return this->mute; - break; - } +static void ao_jack_exit (ao_driver_t *this_gen) +{ + jack_driver_t *this = (jack_driver_t *) this_gen; - return 0; + ao_jack_close (this_gen); + if (this->buffer) + free (this->buffer); + free (this); } -static int ao_jack_set_property (ao_driver_t *this_gen, int property, int value) { - jack_driver_t *this = (jack_driver_t *) this_gen; - - switch(property) { - case AO_PROP_PCM_VOL: - case AO_PROP_MIXER_VOL: -// printf("ao_jack_set_property(AO_PROP_MIXER_VOL): %u\n", value); - this->volume = value; - break; - case AO_PROP_MUTE_VOL: -// printf("ao_jack_get_property(AO_PROP_MUTE_VOL): %u\n", value); - this->mute = value; - break; - } +static int ao_jack_get_property (ao_driver_t *this_gen, int property) +{ + jack_driver_t *this = (jack_driver_t *) this_gen; + + switch (property) { + case AO_PROP_PCM_VOL: + case AO_PROP_MIXER_VOL: + return this->mixer.volume; + break; + case AO_PROP_MUTE_VOL: + return this->mixer.mute; + break; + } + + return 0; +} - return ~value; +static int ao_jack_set_property (ao_driver_t *this_gen, int property, int value) +{ + jack_driver_t *this = (jack_driver_t *) this_gen; + + switch (property) { + case AO_PROP_PCM_VOL: + case AO_PROP_MIXER_VOL: + this->mixer.volume = value; + return value; + break; + case AO_PROP_MUTE_VOL: + this->mixer.mute = value; + return value; + break; + } + + return -1; } -static int ao_jack_ctrl(ao_driver_t *this_gen, int cmd, ...) { - jack_driver_t *this = (jack_driver_t *) this_gen; +static int ao_jack_ctrl (ao_driver_t *this_gen, int cmd, ...) +{ + jack_driver_t *this = (jack_driver_t *) this_gen; - switch (cmd) { + switch (cmd) { - case AO_CTRL_PLAY_PAUSE: - break; + case AO_CTRL_PLAY_PAUSE: + this->paused = 1; + break; - case AO_CTRL_PLAY_RESUME: - break; + case AO_CTRL_PLAY_RESUME: + this->paused = 0; + break; - case AO_CTRL_FLUSH_BUFFERS: -// fprintf(stderr, "ao_jack_ctrl(AO_CTRL_FLUSH_BUFFERS)\n"); - this->buf_write = this->buf_read = 0; - break; - } + case AO_CTRL_FLUSH_BUFFERS: + jack_reset (this); + break; + } - return 0; + return 0; } +static void jack_speaker_arrangement_cb (void *user_data, + xine_cfg_entry_t *entry); + static ao_driver_t *open_jack_plugin (audio_driver_class_t *class_gen, const void *data) { - jack_class_t *class = (jack_class_t *) class_gen; - jack_driver_t *this; - jack_client_t *client; - uint32_t rate; - const char **port_names; - int i; - - if ((client = jack_client_new("xine")) == 0) { - - char name[20]; - sprintf(name, "xine (%d)", (int)getpid()); - - if ((client = jack_client_new(name)) == 0) { - fprintf(stderr, "\nopen_jack_plugin: Error: Failed to connect to JACK server\n"); - fprintf(stderr, "open_jack_plugin: (did you start 'jackd' server?)\n"); - return 0; - } - } - - this = (jack_driver_t *) xine_xmalloc (sizeof (jack_driver_t)); - - this->client = client; - - jack_set_process_callback(client, jack_process, this); - jack_on_shutdown(client, jack_shutdown, this); - - rate = jack_get_sample_rate(client); - fprintf(stderr, "open_jack_plugin: JACK sample rate is %u\n", rate); - - // We support up to 2-channel output - - for (i = 0; i < 2; ++i) { - jack_port_t *port = jack_port_register - (client, (i ? "out_r" : "out_l"), - JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); - if (!port) { - fprintf(stderr, "ao_jack_open: failed to register port %u\n", i); - } - if (i) this->port_2 = port; - else this->port_1 = port; - } - - this->buf_read = this->buf_write = 0; - this->volume = 100; - this->mute = 0; - - if (jack_activate(client)) { - fprintf(stderr, "ao_jack_open: failed to activate JACK client\n"); - return 0; - } - - if ((port_names = jack_get_ports(client, NULL, NULL, - JackPortIsPhysical | JackPortIsInput)) != NULL) { - if (port_names[0]) { - jack_connect(client, jack_port_name(this->port_1), port_names[0]); - } - if (port_names[1] && this->port_2) { - jack_connect(client, jack_port_name(this->port_2), port_names[1]); - } - free(port_names); + jack_class_t *class = (jack_class_t *) class_gen; + config_values_t *config = class->config; + jack_driver_t *this; + + jack_client_t *client; + uint32_t rate; + char *jack_device; + const char **matching_ports = NULL; + const char **port_names; + + /* for usability reasons, keep this in sync with audio_oss_out.c */ + static char *speaker_arrangement[] = { + "Mono 1.0", "Stereo 2.0", "Headphones 2.0", "Stereo 2.1", + "Surround 3.0", "Surround 4.0", "Surround 4.1", "Surround 5.0", + "Surround 5.1", "Surround 6.0", + "Surround 6.1", "Surround 7.1", "Pass Through", NULL + }; +#define MONO 0 +#define STEREO 1 +#define HEADPHONES 2 +#define SURROUND21 3 +#define SURROUND3 4 +#define SURROUND4 5 +#define SURROUND41 6 +#define SURROUND5 7 +#define SURROUND51 8 +#define SURROUND6 9 +#define SURROUND61 10 +#define SURROUND71 11 +#define A52_PASSTHRU 12 + int speakers; + + /* Try to create a client called "xine" */ + if ((client = jack_client_new ("xine")) == 0) { + /* If that doesn't work it could be because running two copies of xine - try using a unique name */ + char name[20]; + sprintf (name, "xine (%d)", (int) getpid ()); + + if ((client = jack_client_new (name)) == 0) { + xprintf (class->xine, XINE_VERBOSITY_LOG, + "\nopen_jack_plugin: Error: Failed to connect to JACK server\n"); + xprintf (class->xine, XINE_VERBOSITY_LOG, + "open_jack_plugin: (did you start 'jackd' server?)\n"); + return 0; } + } + + this = calloc(1, sizeof (jack_driver_t)); + + rate = jack_get_sample_rate (client); + xprintf (class->xine, XINE_VERBOSITY_DEBUG, + "open_jack_plugin: JACK sample rate is %u\n", rate); + + /* devname_val is offset used to select auto, /dev/dsp, or /dev/sound/dsp */ + jack_device = config->register_string (config, + "audio.device.jack_device_name", + "", + _("JACK audio device name"), + _("Specifies the jack audio device name, " + "leave blank for the default physical output port."), + 10, NULL, NULL); + + this->capabilities = 0; + + + /* for usability reasons, keep this in sync with audio_alsa_out.c */ + speakers = + config->register_enum (config, "audio.output.speaker_arrangement", + STEREO, speaker_arrangement, + _("speaker arrangement"), + _("Select how your speakers are arranged, " + "this determines which speakers xine uses for sound output. " + "The individual values are:\n\n" + "Mono 1.0: You have only one speaker.\n" + "Stereo 2.0: You have two speakers for left and right channel.\n" + "Headphones 2.0: You use headphones.\n" + "Stereo 2.1: You have two speakers for left and right channel, and one " + "subwoofer for the low frequencies.\n" + "Surround 3.0: You have three speakers for left, right and rear channel.\n" + "Surround 4.0: You have four speakers for front left and right and rear " + "left and right channels.\n" + "Surround 4.1: You have four speakers for front left and right and rear " + "left and right channels, and one subwoofer for the low frequencies.\n" + "Surround 5.0: You have five speakers for front left, center and right and " + "rear left and right channels.\n" + "Surround 5.1: You have five speakers for front left, center and right and " + "rear left and right channels, and one subwoofer for the low frequencies.\n" + "Surround 6.0: You have six speakers for front left, center and right and " + "rear left, center and right channels.\n" + "Surround 6.1: You have six speakers for front left, center and right and " + "rear left, center and right channels, and one subwoofer for the low frequencies.\n" + "Surround 7.1: You have seven speakers for front left, center and right, " + "left and right and rear left and right channels, and one subwoofer for the " + "low frequencies.\n" + "Pass Through: Your sound system will receive undecoded digital sound from xine. " + "You need to connect a digital surround decoder capable of decoding the " + "formats you want to play to your sound card's digital output."), + 0, jack_speaker_arrangement_cb, this); + + int port_flags = JackPortIsInput; + int num_ports; + /* list matching ports */ + if (!jack_device) + port_flags |= JackPortIsPhysical; + /* Find all the ports matching either the desired device regexp or physical output ports */ + matching_ports = jack_get_ports (client, jack_device, NULL, port_flags); + /* Count 'em */ + for (num_ports = 0; matching_ports && matching_ports[num_ports]; + num_ports++) + /**/; + if (!num_ports) { + xprintf (this->xine, XINE_VERBOSITY_LOG, + "open_jack_plugin: no physical ports available\n"); + goto err_out; + } + + +/* TODO: We deliberately don't offer mono, let Xine upsample instead? */ +/* if (num_ports >= 1) { */ +/* this->capabilities |= AO_CAP_MODE_MONO; */ +/* xprintf(class->xine, XINE_VERBOSITY_DEBUG, "mono "); */ +/* } */ + + if (num_ports >= 2) { + this->capabilities |= AO_CAP_MODE_STEREO; + xprintf (class->xine, XINE_VERBOSITY_DEBUG, "stereo "); + } + + if (num_ports >= 4) { + if (speakers == SURROUND4) { + this->capabilities |= AO_CAP_MODE_4CHANNEL; + xprintf (class->xine, XINE_VERBOSITY_DEBUG, "4-channel "); + } else + xprintf (class->xine, XINE_VERBOSITY_DEBUG, + "(4-channel not enabled in xine config) "); + } + + if (num_ports >= 5) { + if (speakers == SURROUND5) { + this->capabilities |= AO_CAP_MODE_5CHANNEL; + xprintf (class->xine, XINE_VERBOSITY_DEBUG, "5-channel "); + } else + xprintf (class->xine, XINE_VERBOSITY_DEBUG, + "(5-channel not enabled in xine config) "); + } + + if (num_ports >= 6) { + if (speakers == SURROUND51) { + this->capabilities |= AO_CAP_MODE_5_1CHANNEL; + xprintf (class->xine, XINE_VERBOSITY_DEBUG, "5.1-channel "); + } else + xprintf (class->xine, XINE_VERBOSITY_DEBUG, + "(5.1-channel not enabled in xine config) "); + } + + this->buffer = (unsigned char *) malloc (BUFFSIZE); + jack_reset (this); + + this->capabilities |= AO_CAP_MIXER_VOL; + this->capabilities |= AO_CAP_MUTE_VOL; + /* TODO: Currently not respected by Xine, perhaps v1.2? */ + this->capabilities |= AO_CAP_FLOAT32; + + + this->mixer.mute = 0; + this->mixer.volume = 100; + + this->output_sample_rate = jack_get_sample_rate (client); + this->fragment_size = jack_get_buffer_size (client); + + /* Close our JACK client */ + jack_client_close (client); + + this->xine = class->xine; + + this->ao_driver.get_capabilities = ao_jack_get_capabilities; + this->ao_driver.get_property = ao_jack_get_property; + this->ao_driver.set_property = ao_jack_set_property; + this->ao_driver.open = ao_jack_open; + this->ao_driver.num_channels = ao_jack_num_channels; + this->ao_driver.bytes_per_frame = ao_jack_bytes_per_frame; + this->ao_driver.delay = ao_jack_delay; + this->ao_driver.write = ao_jack_write; + this->ao_driver.close = ao_jack_close; + this->ao_driver.exit = ao_jack_exit; + this->ao_driver.get_gap_tolerance = ao_jack_get_gap_tolerance; + this->ao_driver.control = ao_jack_ctrl; + + return &this->ao_driver; + +err_out: + free (matching_ports); + if (client) + jack_client_close (client); + return 0; +} - this->sample_rate = rate; - - this->xine = class->xine; - this->capabilities = AO_CAP_FLOAT32 | AO_CAP_MODE_MONO | - AO_CAP_MODE_STEREO | AO_CAP_MIXER_VOL | AO_CAP_MUTE_VOL; - - this->ao_driver.get_capabilities = ao_jack_get_capabilities; - this->ao_driver.get_property = ao_jack_get_property; - this->ao_driver.set_property = ao_jack_set_property; - this->ao_driver.open = ao_jack_open; - this->ao_driver.num_channels = ao_jack_num_channels; - this->ao_driver.bytes_per_frame = ao_jack_bytes_per_frame; - this->ao_driver.delay = ao_jack_delay; - this->ao_driver.write = ao_jack_write; - this->ao_driver.close = ao_jack_close; - this->ao_driver.exit = ao_jack_exit; - this->ao_driver.get_gap_tolerance = ao_jack_get_gap_tolerance; - this->ao_driver.control = ao_jack_ctrl; - - fprintf(stderr, "jack open_jack_plugin returning %p\n", (void *)(&this->ao_driver)); - return &this->ao_driver; +static void jack_speaker_arrangement_cb (void *user_data, + xine_cfg_entry_t *entry) +{ + jack_driver_t *this = (jack_driver_t *) user_data; + int32_t value = entry->num_value; + if (value == SURROUND4) { + this->capabilities |= AO_CAP_MODE_4CHANNEL; + } else { + this->capabilities &= ~AO_CAP_MODE_4CHANNEL; + } + if (value == SURROUND41) { + this->capabilities |= AO_CAP_MODE_4_1CHANNEL; + } else { + this->capabilities &= ~AO_CAP_MODE_4_1CHANNEL; + } + if (value == SURROUND5) { + this->capabilities |= AO_CAP_MODE_5CHANNEL; + } else { + this->capabilities &= ~AO_CAP_MODE_5CHANNEL; + } + if (value >= SURROUND51) { + this->capabilities |= AO_CAP_MODE_5_1CHANNEL; + } else { + this->capabilities &= ~AO_CAP_MODE_5_1CHANNEL; + } } /* * class functions */ -static char* get_identifier (audio_driver_class_t *this_gen) { - return "jack"; +static char *get_identifier (audio_driver_class_t *this_gen) +{ + return "jack"; } -static char* get_description (audio_driver_class_t *this_gen) { - return _("xine output plugin for JACK Audio Connection Kit"); +static char *get_description (audio_driver_class_t *this_gen) +{ + return _("xine output plugin for JACK Audio Connection Kit"); } -static void dispose_class (audio_driver_class_t *this_gen) { - - jack_class_t *this = (jack_class_t *) this_gen; - free (this); +static void dispose_class (audio_driver_class_t *this_gen) +{ + jack_class_t *this = (jack_class_t *) this_gen; + free (this); } -static void *init_class (xine_t *xine, void *data) { - - jack_class_t *this; - - this = (jack_class_t *) xine_xmalloc (sizeof (jack_class_t)); +static void *init_class (xine_t *xine, void *data) +{ + jack_class_t *this; - this->driver_class.open_plugin = open_jack_plugin; - this->driver_class.get_identifier = get_identifier; - this->driver_class.get_description = get_description; - this->driver_class.dispose = dispose_class; + this = calloc(1, sizeof (jack_class_t)); - this->config = xine->config; - this->xine = xine; + this->driver_class.open_plugin = open_jack_plugin; + this->driver_class.get_identifier = get_identifier; + this->driver_class.get_description = get_description; + this->driver_class.dispose = dispose_class; - fprintf(stderr, "jack init_class returning %p\n", (void *)this); + this->config = xine->config; + this->xine = xine; - return this; + return this; } -static ao_info_t ao_info_jack = { - 6 -}; +static ao_info_t ao_info_jack = { 6 }; /* * exported plugin catalog entry */ const plugin_info_t xine_plugin_info[] EXPORTED = { - /* type, API, "name", version, special_info, init_function */ - { PLUGIN_AUDIO_OUT, AO_OUT_JACK_IFACE_VERSION, "jack", XINE_VERSION_CODE /* XINE_VERSION_CODE */, &ao_info_jack, init_class }, - { PLUGIN_NONE, 0, "", 0, NULL, NULL } + /* type, API, "name", version, special_info, init_function */ + { PLUGIN_AUDIO_OUT, AO_OUT_JACK_IFACE_VERSION, "jack", XINE_VERSION_CODE, + &ao_info_jack, init_class }, + { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; - diff --git a/src/audio_out/audio_none_out.c b/src/audio_out/audio_none_out.c index a815d645a..9ba9a00ca 100644 --- a/src/audio_out/audio_none_out.c +++ b/src/audio_out/audio_none_out.c @@ -186,7 +186,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, lprintf ("open_plugin called\n"); - this = (none_driver_t *) xine_xmalloc (sizeof (none_driver_t)); + this = calloc(1, sizeof (none_driver_t)); if (!this) return NULL; @@ -236,7 +236,7 @@ static void *init_class (xine_t *xine, void *data) { lprintf ("init class\n"); - this = (none_class_t *) xine_xmalloc (sizeof (none_class_t)); + this = calloc(1, sizeof (none_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_oss_out.c b/src/audio_out/audio_oss_out.c index a6e0fe494..ba1044ed4 100644 --- a/src/audio_out/audio_oss_out.c +++ b/src/audio_out/audio_oss_out.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -405,6 +405,18 @@ static int ao_oss_delay(ao_driver_t *this_gen) { if (bytes_left<=0) /* buffer ran dry */ bytes_left = 0; break; + case OSS_SYNC_GETODELAY: +#ifdef SNDCTL_DSP_GETODELAY + if (ioctl (this->audio_fd, SNDCTL_DSP_GETODELAY, &bytes_left)) { + perror ("audio_oss_out: DSP_GETODELAY ioctl():"); + } + if (bytes_left<0) + bytes_left = 0; + + lprintf ("%d bytes left\n", bytes_left); + + break; +#endif case OSS_SYNC_GETOPTR: if (ioctl (this->audio_fd, SNDCTL_DSP_GETOPTR, &info)) { perror ("audio_oss_out: SNDCTL_DSP_GETOPTR failed:"); @@ -424,16 +436,6 @@ static int ao_oss_delay(ao_driver_t *this_gen) { } this->last_getoptr = info.bytes; break; - case OSS_SYNC_GETODELAY: - if (ioctl (this->audio_fd, SNDCTL_DSP_GETODELAY, &bytes_left)) { - perror ("audio_oss_out: DSP_GETODELAY ioctl():"); - } - if (bytes_left<0) - bytes_left = 0; - - lprintf ("%d bytes left\n", bytes_left); - - break; } return bytes_left / this->bytes_per_frame; @@ -727,7 +729,7 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da int speakers; - this = (oss_driver_t *) xine_xmalloc (sizeof (oss_driver_t)); + this = calloc(1, sizeof (oss_driver_t)); if (!this) return NULL; @@ -840,10 +842,13 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da * check if SNDCTL_DSP_GETODELAY works. if so, using it is preferred. */ +#ifdef SNDCTL_DSP_GETODELAY if (ioctl(audio_fd, SNDCTL_DSP_GETODELAY, &info) != -1) { xprintf(class->xine, XINE_VERBOSITY_DEBUG, "audio_oss_out: using SNDCTL_DSP_GETODELAY\n"); this->sync_method = OSS_SYNC_GETODELAY; - } else if (ioctl(audio_fd, SNDCTL_DSP_GETOPTR, &info) != -1) { + } else +#endif + if (ioctl(audio_fd, SNDCTL_DSP_GETOPTR, &info) != -1) { xprintf(class->xine, XINE_VERBOSITY_DEBUG, "audio_oss_out: using SNDCTL_DSP_GETOPTR\n"); this->sync_method = OSS_SYNC_GETOPTR; } else { @@ -872,15 +877,10 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da if (this->sync_method == OSS_SYNC_PROBEBUFFER) { char *buf; int c; - - xprintf(class->xine, XINE_VERBOSITY_LOG, - _("audio_oss_out: Audio driver realtime sync disabled...\n" - "audio_oss_out: ...probing output buffer size: ")); + this->buffer_size = 0; - if( (buf=malloc(1024)) != NULL ) { - memset(buf,0,1024); - + if( (buf=calloc(1, 1024)) != NULL ) { do { c = write(audio_fd,buf,1024); if( c != -1 ) @@ -891,7 +891,8 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da } close(audio_fd); xprintf(class->xine, XINE_VERBOSITY_LOG, - _("%d bytes\naudio_oss_out: ...there may be audio/video synchronization issues\n"), this->buffer_size); + _("audio_oss_out: Audio driver realtime sync disabled...\n" + "audio_oss_out: ...probing output buffer size: %d bytes\naudio_oss_out: ...there may be audio/video synchronization issues\n"), this->buffer_size); audio_fd=open(this->audio_dev, O_WRONLY|O_NONBLOCK); @@ -954,48 +955,48 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da 0, oss_speaker_arrangement_cb, this); - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "audio_oss_out: supported modes are "); + char *logmsg = strdup (_("audio_oss_out: supported modes are")); num_channels = 1; status = ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &num_channels); if ( (status != -1) && (num_channels==1) ) { this->capabilities |= AO_CAP_MODE_MONO; - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "mono "); + xine_strcat_realloc (&logmsg, _(" mono")); } num_channels = 2; status = ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &num_channels); if ( (status != -1) && (num_channels==2) ) { this->capabilities |= AO_CAP_MODE_STEREO; - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "stereo "); + xine_strcat_realloc (&logmsg, _(" stereo")); } num_channels = 4; status = ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &num_channels); if ( (status != -1) && (num_channels==4) ) { if ( speakers == SURROUND4 ) { this->capabilities |= AO_CAP_MODE_4CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "4-channel "); + xine_strcat_realloc (&logmsg, _(" 4-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "(4-channel not enabled in xine config) " ); + xine_strcat_realloc (&logmsg, _(" (4-channel not enabled in xine config)")); } num_channels = 5; status = ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &num_channels); if ( (status != -1) && (num_channels==5) ) { if ( speakers == SURROUND5 ) { this->capabilities |= AO_CAP_MODE_5CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "5-channel "); + xine_strcat_realloc (&logmsg, _(" 5-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "(5-channel not enabled in xine config) " ); + xine_strcat_realloc (&logmsg, _(" (5-channel not enabled in xine config)")); } num_channels = 6; status = ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &num_channels); if ( (status != -1) && (num_channels==6) ) { if ( speakers == SURROUND51 ) { this->capabilities |= AO_CAP_MODE_5_1CHANNEL; - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "5.1-channel "); + xine_strcat_realloc (&logmsg, _(" 5.1-channel")); } else - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "(5.1-channel not enabled in xine config) " ); + xine_strcat_realloc (&logmsg, _(" (5.1-channel not enabled in xine config)")); } ioctl(audio_fd,SNDCTL_DSP_GETFMTS,&caps); @@ -1005,10 +1006,13 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da if ( speakers == A52_PASSTHRU ) { this->capabilities |= AO_CAP_MODE_A52; this->capabilities |= AO_CAP_MODE_AC5; - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "a/52-pass-through "); + xine_strcat_realloc (&logmsg, _(" a/52 pass-through")); } else - xprintf(class->xine, XINE_VERBOSITY_DEBUG, "(a/52-pass-through not enabled in xine config)"); + xine_strcat_realloc (&logmsg, _(" (a/52 pass-through not enabled in xine config)")); + + xprintf(class->xine, XINE_VERBOSITY_DEBUG, "%s\n", logmsg); + free (logmsg); /* * mixer initialisation. @@ -1035,20 +1039,17 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da if ((parse = strstr(mixer_name, "dsp"))) { parse[0] = '\0'; parse += 3; - this->mixer.name = (char *)malloc(strlen(mixer_name) + sizeof("mixer") + 2); if (devname_val == 0) - sprintf(this->mixer.name, "%smixer%s", mixer_name, parse); + asprintf(&(this->mixer.name), "%smixer%s", mixer_name, parse); else { if (mixer_num == -1) - sprintf(this->mixer.name, "%smixer", mixer_name); + asprintf(&(this->mixer.name), "%smixer", mixer_name); else - sprintf(this->mixer.name, "%smixer%d", mixer_name, mixer_num); + asprintf(&(this->mixer.name), "%smixer%d", mixer_name, mixer_num); } } else { - this->mixer.name = (char *)malloc(1); - this->mixer.name[0] = '\0'; + _x_abort(); } - _x_assert(this->mixer.name[0] != '\0'); this->mixer.fd = open(this->mixer.name, O_RDONLY); @@ -1165,7 +1166,7 @@ static void *init_class (xine_t *xine, void *data) { oss_class_t *this; - this = (oss_class_t *) xine_xmalloc (sizeof (oss_class_t)); + this = calloc(1, sizeof (oss_class_t)); if (!this) return NULL; diff --git a/src/audio_out/audio_pulse_out.c b/src/audio_out/audio_pulse_out.c index 26d121bf6..4b66fbaed 100644 --- a/src/audio_out/audio_pulse_out.c +++ b/src/audio_out/audio_pulse_out.c @@ -1,28 +1,28 @@ -/* - * Copyright (C) 2000-2007 the xine project - * +/* -*- Mode: C; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + * Copyright (C) 2000-2008 the xine project + * * This file is part of xine, a free video player. - * + * * xine 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. - * + * * xine 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, USA * - * ao plugin for pulseaudio (rename of polypaudio): + * ao plugin for PulseAudio: * http://0pointer.de/lennart/projects/pulsaudio/ * - * originally written for polypaudio simple api. Lennart then suggested - * using the async api for better control (such as volume), therefore, a lot - * of this code comes from Lennart's patch to mplayer. + * Diego Petteno, Lennart Poettering */ #ifdef HAVE_CONFIG_H @@ -48,15 +48,9 @@ #define GAP_TOLERANCE AO_MAX_GAP -/* CHECKME: should this be conditional on autotools? */ -extern const char *__progname; - typedef struct { audio_driver_class_t driver_class; xine_t *xine; - - struct pa_context *context; /*< Pulseaudio connection context */ - struct pa_threaded_mainloop *mainloop; /*< Main event loop object */ } pulse_class_t; typedef struct pulse_driver_s { @@ -67,11 +61,13 @@ typedef struct pulse_driver_s { char *host; /*< The host to connect to */ char *sink; /*< The sink to connect to */ - struct pa_stream *stream; /*< Pulseaudio playback stream object */ - pthread_mutex_t info_mutex; /**< Mutex for info callback signaling */ + pa_threaded_mainloop *mainloop; /*< Main event loop object */ + pa_context *context; /*< Pulseaudio connection context */ + pa_stream *stream; /*< Pulseaudio playback stream object */ pa_volume_t swvolume; + int muted; pa_cvolume cvolume; int capabilities; @@ -82,67 +78,117 @@ typedef struct pulse_driver_s { uint32_t bits_per_sample; uint32_t bytes_per_frame; - uint32_t frames_written; - } pulse_driver_t; /** - * @brief Callback function called when a stream operation succeed - * @param stream Stream which operation has succeeded - * @param success The success value for the operation (ignored) - * @param this_Gen pulse_driver_t pointer for the PulseAudio output - * instance. + * @brief Callback function called when the state of the context is changed + * @param c Context which changed status + * @param this_gen pulse_class_t pointer for the PulseAudio output class */ -static void __xine_pa_stream_success_callback(pa_stream *const stream, const int success, - void *const mutex_gen) +static void __xine_pa_context_state_callback(pa_context *c, void *this_gen) { - pthread_mutex_t *const completion_mutex = (pthread_mutex_t*)mutex_gen; + pulse_driver_t * this = (pulse_driver_t*) this_gen; + + switch (pa_context_get_state(c)) { - pthread_mutex_unlock(completion_mutex); + case PA_CONTEXT_READY: + case PA_CONTEXT_TERMINATED: + case PA_CONTEXT_FAILED: + pa_threaded_mainloop_signal(this->mainloop, 0); + break; + + case PA_CONTEXT_CONNECTING: + case PA_CONTEXT_UNCONNECTED: + case PA_CONTEXT_AUTHORIZING: + case PA_CONTEXT_SETTING_NAME: + break; + } } /** - * @brief Callback function called when the state of the context is changed - * @param ctx Context which operation has succeeded + * @brief Callback function called when the state of the stream is changed + * @param s Stream that changed status * @param this_gen pulse_driver_t pointer for the PulseAudio output * instance. */ -static void __xine_pa_context_status_callback(pa_context *const ctx, void *const this_gen) +static void __xine_pa_stream_state_callback(pa_stream *s, void *this_gen) { - pulse_driver_t *const this = (pulse_driver_t*)this_gen; - - switch (pa_context_get_state(ctx)) { - case PA_CONTEXT_READY: - case PA_CONTEXT_TERMINATED: - case PA_CONTEXT_FAILED: - pa_threaded_mainloop_signal(this->pa_class->mainloop, 0); - break; - - case PA_CONTEXT_CONNECTING: - case PA_CONTEXT_UNCONNECTED: - case PA_CONTEXT_AUTHORIZING: - case PA_CONTEXT_SETTING_NAME: - break; + pulse_driver_t * this = (pulse_driver_t*) this_gen; + + switch (pa_stream_get_state(s)) { + + case PA_STREAM_READY: + case PA_STREAM_TERMINATED: + case PA_STREAM_FAILED: + pa_threaded_mainloop_signal(this->mainloop, 0); + break; + + case PA_STREAM_UNCONNECTED: + case PA_STREAM_CREATING: + break; } } /** - * @brief Callback function called when a context operation succeed + * @brief Callback function called when PA asks for more audio data. + * @param s Stream on which data is requested + * @param nbytes the number of bytes PA requested + * @param this_gen pulse_driver_t pointer for the PulseAudio output + * instance. + */ +static void __xine_pa_stream_request_callback(pa_stream *s, size_t nbytes, void *this_gen) +{ + pulse_driver_t * this = (pulse_driver_t*) this_gen; + + pa_threaded_mainloop_signal(this->mainloop, 0); +} + +/** + * @brief Callback function called when PA notifies about something + * @param s Stream on which the notification happened + * @param this_gen pulse_driver_t pointer for the PulseAudio output + * instance. + */ +static void __xine_pa_stream_notify_callback(pa_stream *s, void *this_gen) +{ + pulse_driver_t * this = (pulse_driver_t*) this_gen; + + pa_threaded_mainloop_signal(this->mainloop, 0); +} + +/** + * @brief Callback function called when PA completed an operation * @param ctx Context which operation has succeeded - * @param success The success value for the operation (ignored) + * @param nbytes the number of bytes PA requested + * @param this_gen pulse_driver_t pointer for the PulseAudio output + * instance. + */ +static void __xine_pa_stream_success_callback(pa_stream *s, int success, void *this_gen) +{ + pulse_driver_t * this = (pulse_driver_t*) this_gen; + + if (!success) + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: stream operation failed: %s\n", pa_strerror(pa_context_errno(this->context))); + + pa_threaded_mainloop_signal(this->mainloop, 0); +} + +/** + * @brief Callback function called when PA completed an operation + * @param c Context on which operation has succeeded + * @param nbytes the number of bytes PA requested * @param this_gen pulse_driver_t pointer for the PulseAudio output * instance. */ -static void __xine_pa_context_success_callback(pa_context *const ctx, const int success, - void *const this_gen) +static void __xine_pa_context_success_callback(pa_context *c, int success, void *this_gen) { - pulse_driver_t *const this = (pulse_driver_t*)this_gen; + pulse_driver_t *this = (pulse_driver_t*) this_gen; - _x_assert(ctx); _x_assert(this); - _x_assert(ctx == this->pa_class->context); + if (!success) + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: context operation failed: %s\n", pa_strerror(pa_context_errno(this->context))); - pa_threaded_mainloop_signal(this->pa_class->mainloop, 0); + pa_threaded_mainloop_signal(this->mainloop, 0); } /** @@ -156,14 +202,14 @@ static void __xine_pa_context_success_callback(pa_context *const ctx, const int * This function saves the volume field of the passed structure to the * @c cvolume variable of the output instance. */ -static void __xine_pa_sink_info_callback(pa_context *const ctx, const pa_sink_input_info *const info, - const int is_last, void *const userdata) { +static void __xine_pa_sink_info_callback(pa_context *c, const pa_sink_input_info *info, + int is_last, void *userdata) { pulse_driver_t *const this = (pulse_driver_t *) userdata; if (is_last < 0) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: Failed to get sink input info: %s\n", - pa_strerror(pa_context_errno(this->pa_class->context))); + pa_strerror(pa_context_errno(this->context))); return; } @@ -171,36 +217,95 @@ static void __xine_pa_sink_info_callback(pa_context *const ctx, const pa_sink_in return; this->cvolume = info->volume; + this->swvolume = pa_cvolume_avg(&info->volume); +#if PA_PROTOCOL_VERSION >= 11 + /* PulseAudio 0.9.7 and newer */ + this->muted = info->mute; +#else + this->muted = pa_cvolume_is_muted (&this->cvolume); +#endif +} + +static int connect_context(pulse_driver_t *this) { + + if (this->context && (pa_context_get_state(this->context) == PA_CONTEXT_FAILED || + pa_context_get_state(this->context) == PA_CONTEXT_TERMINATED)) { + pa_context_unref(this->context); + this->context = NULL; + } + + if (!this->context) { + char fn[PATH_MAX], *p; + + if (pa_get_binary_name(fn, sizeof(fn))) + p = pa_path_get_filename(fn); + else + p = "Xine"; - pthread_mutex_unlock(&this->info_mutex); + this->context = pa_context_new(pa_threaded_mainloop_get_api(this->mainloop), p); + _x_assert(this->context); + + pa_context_set_state_callback(this->context, __xine_pa_context_state_callback, this); + } + + if (pa_context_get_state(this->context) == PA_CONTEXT_UNCONNECTED) { + + if (pa_context_connect(this->context, this->host, 0, NULL) < 0) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: failed to connect context object %s\n", pa_strerror(pa_context_errno(this->context))); + return -1; + } + } + + for (;;) { + pa_context_state_t state = pa_context_get_state(this->context); + + if (state == PA_CONTEXT_FAILED || state == PA_CONTEXT_TERMINATED) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: failed to connect context object: %s\n", pa_strerror(pa_context_errno(this->context))); + return -1; + } + + if (state == PA_CONTEXT_READY) + break; + + pa_threaded_mainloop_wait(this->mainloop); + } + + return 0; } /* * open the audio device for writing to */ static int ao_pulse_open(ao_driver_t *this_gen, - uint32_t bits, uint32_t rate, int mode) + uint32_t bits, uint32_t rate, int mode) { pulse_driver_t *this = (pulse_driver_t *) this_gen; - struct pa_sample_spec ss; - struct pa_buffer_attr a; - pa_stream_state_t streamstate; + pa_sample_spec ss; + pa_channel_map cm; + int r; xprintf (this->xine, XINE_VERBOSITY_DEBUG, - "audio_pulse_out: ao_open bits=%d rate=%d, mode=%d\n", bits, rate, mode); + "audio_pulse_out: ao_open bits=%d rate=%d, mode=%d\n", bits, rate, mode); if ( (mode & this->capabilities) == 0 ) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: unsupported mode %08x\n", mode); return 0; } + pa_threaded_mainloop_lock(this->mainloop); + if (this->stream) { - if ( mode == this->mode && rate == this->sample_rate && - bits == this->bits_per_sample ) + if (mode == this->mode && rate == this->sample_rate && + bits == this->bits_per_sample) { + + pa_threaded_mainloop_unlock(this->mainloop); return this->sample_rate; + } - this_gen->close(this_gen); + pa_stream_disconnect(this->stream); + pa_stream_unref(this->stream); + this->stream = NULL; } this->mode = mode; @@ -221,6 +326,8 @@ static int ao_pulse_open(ao_driver_t *this_gen, case 32: ss.format = PA_SAMPLE_FLOAT32NE; break; + default: + _x_assert(!"Should not be reached"); } if (!pa_sample_spec_valid(&ss)) { @@ -228,69 +335,86 @@ static int ao_pulse_open(ao_driver_t *this_gen, goto fail; } - if ( this->pa_class->context && pa_context_get_state(this->pa_class->context) > PA_CONTEXT_READY ) { - pa_context_unref(this->pa_class->context); - this->pa_class->context = NULL; - } - - if ( this->pa_class->context == NULL ) { - this->pa_class->context = pa_context_new(pa_threaded_mainloop_get_api(this->pa_class->mainloop), - __progname); - } - - pa_context_ref(this->pa_class->context); + cm.channels = ss.channels; - if ( pa_context_get_state(this->pa_class->context) == PA_CONTEXT_UNCONNECTED ) { - int ret; + switch (mode) { + case AO_CAP_MODE_MONO: + cm.map[0] = PA_CHANNEL_POSITION_MONO; + _x_assert(cm.channels == 1); + break; - pa_threaded_mainloop_lock(this->pa_class->mainloop); - ret = pa_context_connect(this->pa_class->context, this->host, 1, NULL); - if ( ret < 0 ) - goto fail; + case AO_CAP_MODE_STEREO: + cm.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT; + cm.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; + _x_assert(cm.channels == 2); + break; - pa_context_set_state_callback(this->pa_class->context, __xine_pa_context_status_callback, this); + case AO_CAP_MODE_4CHANNEL: + cm.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT; + cm.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; + cm.map[2] = PA_CHANNEL_POSITION_REAR_LEFT; + cm.map[3] = PA_CHANNEL_POSITION_REAR_RIGHT; + _x_assert(cm.channels == 4); + break; - pa_threaded_mainloop_wait(this->pa_class->mainloop); - pa_threaded_mainloop_unlock(this->pa_class->mainloop); + case AO_CAP_MODE_4_1CHANNEL: + case AO_CAP_MODE_5CHANNEL: + case AO_CAP_MODE_5_1CHANNEL: + cm.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT; + cm.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; + cm.map[2] = PA_CHANNEL_POSITION_REAR_LEFT; + cm.map[3] = PA_CHANNEL_POSITION_REAR_RIGHT; + cm.map[4] = PA_CHANNEL_POSITION_FRONT_CENTER; + cm.map[5] = PA_CHANNEL_POSITION_LFE; + cm.channels = 6; + break; + default: + _x_assert(!"Should not be reached"); } - if (pa_context_get_state(this->pa_class->context) != PA_CONTEXT_READY) { - xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: Failed to connect to server: %s\n", - pa_strerror(pa_context_errno(this->pa_class->context))); + if (!pa_channel_map_valid(&cm)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: Invalid channel map\n"); goto fail; } - this->stream = pa_stream_new(this->pa_class->context, "audio stream", &ss, NULL); + if (connect_context(this) < 0) + goto fail; + + _x_assert(!this->stream); + this->stream = pa_stream_new(this->context, "Audio Stream", &ss, &cm); _x_assert(this->stream); - a.maxlength = pa_bytes_per_second(&ss)*1; - a.tlength = a.maxlength*9/10; - a.prebuf = a.tlength/2; - a.minreq = a.tlength/10; + pa_stream_set_state_callback(this->stream, __xine_pa_stream_state_callback, this); + pa_stream_set_write_callback(this->stream, __xine_pa_stream_request_callback, this); + pa_stream_set_latency_update_callback(this->stream, __xine_pa_stream_notify_callback, this); - pa_stream_connect_playback(this->stream, this->sink, &a, - PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, + r = pa_stream_connect_playback(this->stream, this->sink, NULL, + PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL); - do { - xine_usec_sleep (100); + for (;;) { + pa_context_state_t cstate = pa_context_get_state(this->context); + pa_stream_state_t sstate = pa_stream_get_state(this->stream); - streamstate = pa_stream_get_state(this->stream); - } while (streamstate < PA_STREAM_READY); - - if (streamstate != PA_STREAM_READY) { - xprintf (this->xine, XINE_VERBOSITY_LOG, "audio_pulse_out: Failed to connect to server: %s\n", - pa_strerror(pa_context_errno(this->pa_class->context))); - goto fail; + if (cstate == PA_CONTEXT_FAILED || cstate == PA_CONTEXT_TERMINATED || + sstate == PA_STREAM_FAILED || sstate == PA_STREAM_TERMINATED) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: failed to connect context object: %s\n", pa_strerror(pa_context_errno(this->context))); + goto fail; + } + + if (sstate == PA_STREAM_READY) + break; + + pa_threaded_mainloop_wait(this->mainloop); } - this->frames_written = 0; - this->ao_driver.set_property(this, AO_PROP_PCM_VOL, 100); + pa_threaded_mainloop_unlock(this->mainloop); return this->sample_rate; -fail: - pa_threaded_mainloop_unlock(this->pa_class->mainloop); + fail: + + pa_threaded_mainloop_unlock(this->mainloop); this_gen->close(this_gen); return 0; } @@ -318,217 +442,367 @@ static int ao_pulse_write(ao_driver_t *this_gen, int16_t *data, { pulse_driver_t *this = (pulse_driver_t *) this_gen; size_t size = num_frames * this->bytes_per_frame; - int ret = 0; - - if ( !this->stream || !this->pa_class->context) - return -1; + int ret = -1; + size_t done = 0; - switch( pa_stream_get_state(this->stream) ) { - case PA_STREAM_READY: - while (size > 0) { - size_t l; + pa_threaded_mainloop_lock(this->mainloop); - while (!(l = pa_stream_writable_size(this->stream))) { - xine_usec_sleep (10000); - } + while (size > 0) { + size_t l; - if (l > size) - l = size; - - pa_stream_write(this->stream, data, l, NULL, 0, PA_SEEK_RELATIVE); - data = (int16_t *) ((uint8_t*) data + l); - size -= l; - } + for (;;) { + + if (!this->stream || + !this->context || + pa_context_get_state(this->context) != PA_CONTEXT_READY || + pa_stream_get_state(this->stream) != PA_STREAM_READY) + goto finish; - this->frames_written += num_frames; + if ((l = pa_stream_writable_size(this->stream)) == (size_t) -1) + goto finish; - if (pa_stream_get_state(this->stream) == PA_STREAM_READY) - ret = 1; + if (l > 0) + break; - break; + pa_threaded_mainloop_wait(this->mainloop); + } + + if (l > size) + l = size; + + pa_stream_write(this->stream, data, l, NULL, 0, PA_SEEK_RELATIVE); + data = (int16_t *) ((uint8_t*) data + l); + size -= l; + done += l; } + ret = done; + +finish: + + pa_threaded_mainloop_unlock(this->mainloop); + +/* fprintf(stderr, "write-out\n"); */ + return ret; -} +} static int ao_pulse_delay (ao_driver_t *this_gen) { pulse_driver_t *this = (pulse_driver_t *) this_gen; - pa_usec_t latency = 0; - unsigned int delay_frames; + int ret = 0; - if ( ! this->stream ) return this->frames_written; +/* fprintf(stderr, "delay-in\n"); */ - if (pa_stream_get_latency(this->stream, &latency, NULL) < 0) { - pa_context_unref(this->pa_class->context); - this->pa_class->context = NULL; + pa_threaded_mainloop_lock(this->mainloop); - pa_stream_disconnect(this->stream); - pa_stream_unref(this->stream); - this->stream = NULL; + for (;;) { + pa_usec_t latency = 0; - return 0; + if (!this->stream || + !this->context || + pa_context_get_state(this->context) != PA_CONTEXT_READY || + pa_stream_get_state(this->stream) != PA_STREAM_READY) + goto finish; + + if (pa_stream_get_latency(this->stream, &latency, NULL) >= 0) { + ret = (int) ((latency * this->sample_rate) / 1000000); + goto finish; + } + + if (pa_context_errno(this->context) != PA_ERR_NODATA) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: failed to query latency: %s\n", pa_strerror(pa_context_errno(this->context))); + goto finish; + } + + pa_threaded_mainloop_wait(this->mainloop); } - /* convert latency (us) to frame units. */ - delay_frames = (int)(latency * this->sample_rate / 1000000); +finish: + + pa_threaded_mainloop_unlock(this->mainloop); - if( delay_frames > this->frames_written ) - return this->frames_written; - else - return delay_frames; + return ret; } static void ao_pulse_close(ao_driver_t *this_gen) { pulse_driver_t *this = (pulse_driver_t *) this_gen; - - if (this->stream) { - if (pa_stream_get_state(this->stream) == PA_STREAM_READY) { - pthread_mutex_t completion_callback = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&completion_callback); - pa_stream_drain(this->stream, __xine_pa_stream_success_callback, &completion_callback); - pthread_mutex_lock(&completion_callback); - pthread_mutex_destroy(&completion_callback); - } + pa_threaded_mainloop_lock(this->mainloop); + if (this->stream) { pa_stream_disconnect(this->stream); pa_stream_unref(this->stream); this->stream = NULL; - - pa_context_unref(this->pa_class->context); } + + pa_threaded_mainloop_unlock(this->mainloop); } static uint32_t ao_pulse_get_capabilities (ao_driver_t *this_gen) { pulse_driver_t *this = (pulse_driver_t *) this_gen; + return this->capabilities; } -static void ao_pulse_exit(ao_driver_t *this_gen) -{ +static void ao_pulse_exit(ao_driver_t *this_gen) { pulse_driver_t *this = (pulse_driver_t *) this_gen; - free (this); + ao_pulse_close(this_gen); + + pa_threaded_mainloop_lock(this->mainloop); + + if (this->context) { + pa_context_disconnect(this->context); + pa_context_unref(this->context); + } + + pa_threaded_mainloop_unlock(this->mainloop); + + pa_threaded_mainloop_free(this->mainloop); + + free(this->host); + free(this->sink); + free(this); +} + +static int wait_for_operation(pulse_driver_t *this, pa_operation *o) { + + for (;;) { + + if (!this->stream || + !this->context || + pa_context_get_state(this->context) != PA_CONTEXT_READY || + pa_stream_get_state(this->stream) != PA_STREAM_READY) + return -1; + + if (pa_operation_get_state(o) != PA_OPERATION_RUNNING) + return 0; + + pa_threaded_mainloop_wait(this->mainloop); + } } static int ao_pulse_get_property (ao_driver_t *this_gen, int property) { pulse_driver_t *this = (pulse_driver_t *) this_gen; int result = 0; + pa_operation *o = NULL; - if ( ! this->stream || ! this->pa_class->context ) + pa_threaded_mainloop_lock(this->mainloop); + + if (!this->stream || + !this->context || + pa_context_get_state(this->context) != PA_CONTEXT_READY || + pa_stream_get_state(this->stream) != PA_STREAM_READY) { + pa_threaded_mainloop_unlock(this->mainloop); return 0; + } switch(property) { - case AO_PROP_PCM_VOL: - case AO_PROP_MIXER_VOL: - { - pthread_mutex_lock(&this->info_mutex); - pa_operation *o = pa_context_get_sink_input_info(this->pa_class->context, - pa_stream_get_index(this->stream), - __xine_pa_sink_info_callback, this); - if ( ! o ) return 0; - pthread_mutex_lock(&this->info_mutex); pthread_mutex_unlock(&this->info_mutex); - - result = (pa_sw_volume_to_linear(this->swvolume)*100); - } - break; - case AO_PROP_MUTE_VOL: - result = pa_cvolume_is_muted(&this->cvolume); - break; + case AO_PROP_MUTE_VOL: + case AO_PROP_PCM_VOL: + case AO_PROP_MIXER_VOL: + + o = pa_context_get_sink_input_info(this->context, pa_stream_get_index(this->stream), + __xine_pa_sink_info_callback, this); + + break; + } + + if (o) { + wait_for_operation(this, o); + pa_operation_unref(o); + } + + switch(property) { + + case AO_PROP_MUTE_VOL: + result = this->muted; + break; + + case AO_PROP_PCM_VOL: + case AO_PROP_MIXER_VOL: + result = (int) (pa_sw_volume_to_linear(this->swvolume)*100); + break; } - + + pa_threaded_mainloop_unlock(this->mainloop); + return result; } static int ao_pulse_set_property (ao_driver_t *this_gen, int property, int value) { pulse_driver_t *this = (pulse_driver_t *) this_gen; int result = ~value; + pa_operation *o = NULL; - if ( ! this->stream || ! this->pa_class->context ) - return result; + pa_threaded_mainloop_lock(this->mainloop); + + if (!this->stream || + !this->context || + pa_context_get_state(this->context) != PA_CONTEXT_READY || + pa_stream_get_state(this->stream) != PA_STREAM_READY) { + pa_threaded_mainloop_unlock(this->mainloop); + return 0; + } switch(property) { - case AO_PROP_PCM_VOL: - case AO_PROP_MIXER_VOL: - this->swvolume = pa_sw_volume_from_linear((double)value/100.0); - pa_cvolume_set(&this->cvolume, pa_stream_get_sample_spec(this->stream)->channels, this->swvolume); + case AO_PROP_PCM_VOL: + case AO_PROP_MIXER_VOL: + + this->swvolume = pa_sw_volume_from_linear((double)value/100.0); + pa_cvolume_set(&this->cvolume, pa_stream_get_sample_spec(this->stream)->channels, this->swvolume); - pa_context_set_sink_input_volume(this->pa_class->context, pa_stream_get_index(this->stream), - &this->cvolume, __xine_pa_context_success_callback, this); + o = pa_context_set_sink_input_volume(this->context, pa_stream_get_index(this->stream), + &this->cvolume, __xine_pa_context_success_callback, this); - result = value; - break; + result = value; + break; - case AO_PROP_MUTE_VOL: - if ( value ) - pa_cvolume_mute(&this->cvolume, pa_stream_get_sample_spec(this->stream)->channels); - else - pa_cvolume_set(&this->cvolume, pa_stream_get_sample_spec(this->stream)->channels, this->swvolume); + case AO_PROP_MUTE_VOL: - pa_context_set_sink_input_volume(this->pa_class->context, pa_stream_get_index(this->stream), - &this->cvolume, __xine_pa_context_success_callback, this); - - result = value; - break; + this->muted = value; + +#if PA_PROTOCOL_VERSION >= 11 + /* PulseAudio 0.9.7 and newer */ + o = pa_context_set_sink_input_mute(this->context, pa_stream_get_index(this->stream), + value, __xine_pa_context_success_callback, this); +#else + /* Get the current volume, so we can restore it properly. */ + o = pa_context_get_sink_input_info(this->context, pa_stream_get_index(this->stream), + __xine_pa_sink_info_callback, this); + + if (o) { + wait_for_operation(this, o); + pa_operation_unref(o); + } + + if ( value ) + pa_cvolume_mute(&this->cvolume, pa_stream_get_sample_spec(this->stream)->channels); + else + pa_cvolume_set(&this->cvolume, pa_stream_get_sample_spec(this->stream)->channels, this->swvolume); + + o = pa_context_set_sink_input_volume(this->context, pa_stream_get_index(this->stream), + &this->cvolume, __xine_pa_context_success_callback, this); +#endif + result = value; } - + + if (o) { + wait_for_operation(this, o); + pa_operation_unref(o); + } + + pa_threaded_mainloop_unlock(this->mainloop); + return result; } static int ao_pulse_ctrl(ao_driver_t *this_gen, int cmd, ...) { pulse_driver_t *this = (pulse_driver_t *) this_gen; + pa_operation *o = NULL; - if ( ! this->stream ) return 0; + pa_threaded_mainloop_lock(this->mainloop); + + if (!this->stream || + !this->context || + pa_context_get_state(this->context) != PA_CONTEXT_READY || + pa_stream_get_state(this->stream) != PA_STREAM_READY) { + pa_threaded_mainloop_unlock(this->mainloop); + return 0; + } switch (cmd) { - case AO_CTRL_FLUSH_BUFFERS: - _x_assert(this->stream && this->pa_class->context); + case AO_CTRL_FLUSH_BUFFERS: - if(pa_stream_get_state(this->stream) == PA_STREAM_READY) { - pthread_mutex_t completion_callback = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&completion_callback); - pa_stream_flush(this->stream, __xine_pa_stream_success_callback, &completion_callback); + o = pa_stream_flush(this->stream, __xine_pa_stream_success_callback, this); + break; - pthread_mutex_lock(&completion_callback); - pthread_mutex_destroy(&completion_callback); - } + case AO_CTRL_PLAY_RESUME: + case AO_CTRL_PLAY_PAUSE: - this->frames_written = 0; + o = pa_stream_cork(this->stream, cmd == AO_CTRL_PLAY_PAUSE, __xine_pa_stream_success_callback, this); + break; + } - break; + if (o) { + wait_for_operation(this, o); + pa_operation_unref(o); } + pa_threaded_mainloop_unlock(this->mainloop); + return 0; } static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *data) { pulse_class_t *class = (pulse_class_t *) class_gen; pulse_driver_t *this; - char *device; + const char* device; + int r; lprintf ("audio_pulse_out: open_plugin called\n"); - this = (pulse_driver_t *) xine_xmalloc (sizeof (pulse_driver_t)); + this = calloc(1, sizeof (pulse_driver_t)); if (!this) return NULL; + this->xine = class->xine; + this->host = NULL; + this->sink = NULL; + this->context = NULL; + this->mainloop = NULL; + + device = class->xine->config->register_string(class->xine->config, + "audio.pulseaudio_device", + "", + _("device used for pulseaudio"), + _("use 'server[:sink]' for setting the " + "pulseaudio sink device."), + 10, NULL, + NULL); + + if (device && *device) { + char *sep = strrchr(device, ':'); + if ( sep ) { + if (!(this->host = strndup(device, sep-device))) { + free(this); + return NULL; + } + + if (!(this->sink = strdup(sep+1))) { + free(this->host); + free(this); + return NULL; + } + } else { + + if (!(this->host = strdup(device))) { + free(this); + return NULL; + } + } + } + + this->mainloop = pa_threaded_mainloop_new(); + _x_assert(this->mainloop); + pa_threaded_mainloop_start(this->mainloop); /* * set capabilities */ - this->capabilities = AO_CAP_MODE_MONO | AO_CAP_MODE_STEREO | AO_CAP_MODE_4CHANNEL | - AO_CAP_MODE_4_1CHANNEL | AO_CAP_MODE_5CHANNEL | - AO_CAP_MODE_5_1CHANNEL | AO_CAP_MIXER_VOL | - AO_CAP_PCM_VOL | AO_CAP_MUTE_VOL | AO_CAP_8BITS | - AO_CAP_16BITS | AO_CAP_FLOAT32; + this->capabilities = + AO_CAP_MODE_MONO | AO_CAP_MODE_STEREO | AO_CAP_MODE_4CHANNEL | + AO_CAP_MODE_4_1CHANNEL | AO_CAP_MODE_5CHANNEL | AO_CAP_MODE_5_1CHANNEL | + AO_CAP_MIXER_VOL | AO_CAP_PCM_VOL | AO_CAP_MUTE_VOL | + AO_CAP_8BITS | AO_CAP_16BITS | AO_CAP_FLOAT32; this->sample_rate = 0; - this->host = NULL; - this->sink = NULL; - + this->ao_driver.get_capabilities = ao_pulse_get_capabilities; this->ao_driver.get_property = ao_pulse_get_property; this->ao_driver.set_property = ao_pulse_set_property; @@ -540,33 +814,22 @@ static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *da this->ao_driver.close = ao_pulse_close; this->ao_driver.exit = ao_pulse_exit; this->ao_driver.get_gap_tolerance = ao_pulse_get_gap_tolerance; - this->ao_driver.control = ao_pulse_ctrl; - - device = this->xine->config->register_string(this->xine->config, - "audio.pulseaudio_device", - "", - _("device used for pulseaudio"), - _("use 'server[:sink]' for setting the " - "pulseaudio sink device."), - 10, NULL, - NULL); - - if (device && *device) { - char *sep = strchr(device, ':'); - if ( sep ) { - this->host = strndup(device, sep-device); - this->sink = strdup(&sep[1]); - } else - this->host = strdup(device); - } - - pthread_mutex_init(&this->info_mutex, NULL); + this->ao_driver.control = ao_pulse_ctrl; xprintf (class->xine, XINE_VERBOSITY_DEBUG, "audio_pulse_out: host %s sink %s\n", this->host ? this->host : "(null)", this->sink ? this->sink : "(null)"); this->pa_class = class; + pa_threaded_mainloop_lock(this->mainloop); + r = connect_context(this); + pa_threaded_mainloop_unlock(this->mainloop); + + if (r < 0) { + ao_pulse_exit((ao_driver_t *) this); + return NULL; + } + return &this->ao_driver; } @@ -586,13 +849,7 @@ static void dispose_class (audio_driver_class_t *this_gen) { pulse_class_t *this = (pulse_class_t *) this_gen; - if ( this->context ) - pa_context_unref(this->context); - - pa_threaded_mainloop_stop(this->mainloop); - pa_threaded_mainloop_free(this->mainloop); - - free (this); + free(this); } static void *init_class (xine_t *xine, void *data) { @@ -601,29 +858,21 @@ static void *init_class (xine_t *xine, void *data) { lprintf ("audio_pulse_out: init class\n"); - this = (pulse_class_t *) xine_xmalloc (sizeof (pulse_class_t)); + this = calloc(1, sizeof (pulse_class_t)); if (!this) return NULL; + this->xine = xine; this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; this->driver_class.get_description = get_description; this->driver_class.dispose = dispose_class; - this->xine = xine; - - this->mainloop = pa_threaded_mainloop_new(); - _x_assert(this->mainloop); - - pa_threaded_mainloop_start(this->mainloop); - - this->context = NULL; - return this; } static const ao_info_t ao_info_pulse = { - 6 + 12 }; /* @@ -635,5 +884,3 @@ const plugin_info_t xine_plugin_info[] EXPORTED = { { PLUGIN_AUDIO_OUT, 8, "pulseaudio", XINE_VERSION_CODE, &ao_info_pulse, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; - - diff --git a/src/audio_out/audio_sndio_out.c b/src/audio_out/audio_sndio_out.c new file mode 100644 index 000000000..7c3040e6e --- /dev/null +++ b/src/audio_out/audio_sndio_out.c @@ -0,0 +1,410 @@ +/* + * Copyright (c) 2008 Brad Smith <brad@comstyle.com> + * + * Permission to use, copy, modify, and 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. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* ao plugin for sndio by Brad Smith <brad@comstyle.com>. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <errno.h> +#include <string.h> +#include <stdlib.h> +#include <fcntl.h> +#include <math.h> +#include <unistd.h> +#include <inttypes.h> +#include <pthread.h> + +#include <sndio.h> + +#include "xine_internal.h" +#include "xineutils.h" +#include "audio_out.h" +#include "bswap.h" + +#define GAP_TOLERANCE AO_MAX_GAP +#define PCT_TO_MIDI(p) (((p) * SIO_MAXVOL + 50) / 100) + +typedef struct { + audio_driver_class_t driver_class; + xine_t *xine; +} sndio_class_t; + +typedef struct sndio_driver_s { + ao_driver_t ao_driver; + xine_t *xine; + + struct sio_hdl *hdl; + long long realpos, playpos; + int capabilities; + + int num_channels; + u_int32_t bits_per_sample; + u_int32_t bytes_per_frame; + + struct { + int volume; + int mute; + } mixer; +} sndio_driver_t; + +/* + * Callback to notify of frames processed by the hw. It is + * called from the mail loop called from sio_write(). + */ +static void ao_sndio_onmove_cb(void *addr, int delta) +{ + sndio_driver_t *this = (sndio_driver_t *)addr; + + this->realpos += delta; +} + +/* + * Open the audio device for writing to. + */ +static int ao_sndio_open(ao_driver_t *this_gen, + uint32_t bits, uint32_t rate, int mode) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + struct sio_par par; + + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open bits=%d rate=%d, mode=%d\n", + bits, rate, mode); + + if (this->hdl != NULL) { + sio_close (this->hdl); + this->hdl = NULL; + } + + this->hdl = sio_open(NULL, SIO_PLAY, 0); + if (this->hdl == NULL) + goto bad; + + sio_initpar(&par); + + switch (mode) { + case AO_CAP_MODE_MONO: + par.pchan = 1; + break; + case AO_CAP_MODE_STEREO: + par.pchan = 2; + break; + case AO_CAP_MODE_4CHANNEL: + par.pchan = 4; + break; + case AO_CAP_MODE_4_1CHANNEL: + case AO_CAP_MODE_5CHANNEL: + case AO_CAP_MODE_5_1CHANNEL: + par.pchan = 6; + break; + default: + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open does not support the requested mode: 0x%X\n", + mode); + goto bad; + } + + switch (bits) { + case 8: + par.bits = 8; + par.sig = 0; + break; + case 16: + par.bits = 16; + par.sig = 1; + break; + default: + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open bits per sample not supported: %d\n", bits); + goto bad; + } + + par.rate = rate; + par.appbufsz = par.rate * 250 / 1000; /* 250ms buffer */ + + if (!sio_setpar(this->hdl, &par)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open could not set params\n"); + goto bad; + } + + if (!sio_getpar(this->hdl, &par)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open could not get params\n"); + goto bad; + } + + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open %d channels output\n", + par.pchan); + + this->num_channels = par.pchan; + this->bytes_per_frame = par.bps * par.pchan; + this->playpos = 0; + this->realpos = 0; + sio_onmove(this->hdl, ao_sndio_onmove_cb, this); + + if (!sio_start(this->hdl)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_open could not start\n"); + goto bad; + } + + return par.rate; + +bad: + if (this->hdl != NULL) + sio_close(this->hdl); + return 0; +} + +static int ao_sndio_num_channels(ao_driver_t *this_gen) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + return this->num_channels; +} + +static int ao_sndio_bytes_per_frame(ao_driver_t *this_gen) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + return this->bytes_per_frame; +} + +static int ao_sndio_get_gap_tolerance (ao_driver_t *this_gen) +{ + return GAP_TOLERANCE; +} + +static int ao_sndio_write(ao_driver_t *this_gen, int16_t *data, + uint32_t num_frames) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + size_t ret, size = num_frames * this->bytes_per_frame; + + ret = sio_write(this->hdl, data, size); + if (ret == 0) + return 0; + + this->playpos += num_frames; + + return 1; +} + +static int ao_sndio_delay (ao_driver_t *this_gen) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + int bufused; + + if (this->realpos < 0) + bufused = this->playpos; + else + bufused = this->playpos - this->realpos; + + return bufused; +} + +static void ao_sndio_close(ao_driver_t *this_gen) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_close called\n"); + + if (!sio_stop(this->hdl)) { + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_close could not stop\n"); + } + + sio_close(this->hdl); + this->hdl = NULL; +} + +static uint32_t ao_sndio_get_capabilities (ao_driver_t *this_gen) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + return this->capabilities; +} + +static void ao_sndio_exit(ao_driver_t *this_gen) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + xprintf (this->xine, XINE_VERBOSITY_DEBUG, + "audio_sndio_out: ao_sndio_exit called\n"); + + if (this->hdl != NULL) + sio_close(this->hdl); +} + +static int ao_sndio_get_property (ao_driver_t *this_gen, int property) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + switch (property) { + case AO_PROP_MIXER_VOL: + return this->mixer.volume; + break; + case AO_PROP_MUTE_VOL: + return this->mixer.mute; + break; + } + + return 0; +} + +static int ao_sndio_set_property (ao_driver_t *this_gen, int property, int value) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + int vol; + + if (this->hdl == NULL) + return 0; + + switch(property) { + case AO_PROP_MIXER_VOL: + this->mixer.volume = value; + if (!this->mixer.mute) + sio_setvol(this->hdl, PCT_TO_MIDI(this->mixer.volume)); + return this->mixer.volume; + break; + + case AO_PROP_MUTE_VOL: + this->mixer.mute = (value) ? 1 : 0; + vol = 0; + if (!this->mixer.mute) + vol = PCT_TO_MIDI(this->mixer.volume); + sio_setvol(this->hdl, vol); + return value; + break; + } + + return value; +} + +/* + * pause, resume, flush buffers + */ +static int ao_sndio_ctrl(ao_driver_t *this_gen, int cmd, ...) +{ + sndio_driver_t *this = (sndio_driver_t *) this_gen; + + /* + * sndio pauses automatically if there are no more samples to play + * and resumes when there are samples again. So we leave this empty + * for the moment. + */ + + return 0; +} + +static ao_driver_t *open_plugin (audio_driver_class_t *class_gen, const void *data) +{ + sndio_class_t *class = (sndio_class_t *) class_gen; + sndio_driver_t *this; + + lprintf ("audio_sndio_out: open_plugin called\n"); + + this = calloc(1, sizeof (sndio_driver_t)); + if (!this) + return NULL; + + this->xine = class->xine; + + /* + * Set capabilities + */ + this->capabilities = AO_CAP_MODE_MONO | AO_CAP_MODE_STEREO | + AO_CAP_MODE_4CHANNEL | AO_CAP_MODE_4_1CHANNEL | + AO_CAP_MODE_5CHANNEL | AO_CAP_MODE_5_1CHANNEL | + AO_CAP_MIXER_VOL | AO_CAP_MUTE_VOL | AO_CAP_8BITS | + AO_CAP_16BITS; + + this->ao_driver.get_capabilities = ao_sndio_get_capabilities; + this->ao_driver.get_property = ao_sndio_get_property; + this->ao_driver.set_property = ao_sndio_set_property; + this->ao_driver.open = ao_sndio_open; + this->ao_driver.num_channels = ao_sndio_num_channels; + this->ao_driver.bytes_per_frame = ao_sndio_bytes_per_frame; + this->ao_driver.delay = ao_sndio_delay; + this->ao_driver.write = ao_sndio_write; + this->ao_driver.close = ao_sndio_close; + this->ao_driver.exit = ao_sndio_exit; + this->ao_driver.get_gap_tolerance = ao_sndio_get_gap_tolerance; + this->ao_driver.control = ao_sndio_ctrl; + + return &this->ao_driver; +} + +/* + * class functions + */ + +static char* get_identifier (audio_driver_class_t *this_gen) +{ + return "sndio"; +} + +static char* get_description (audio_driver_class_t *this_gen) +{ + return _("xine audio output plugin using sndio audio devices/drivers "); +} + +static void dispose_class (audio_driver_class_t *this_gen) +{ + sndio_class_t *this = (sndio_class_t *) this_gen; + + free(this); +} + +static void *init_class (xine_t *xine, void *data) +{ + sndio_class_t *this; + + lprintf ("audio_sndio_out: init class\n"); + + this = calloc(1, sizeof (sndio_class_t)); + if (!this) + return NULL; + + this->driver_class.open_plugin = open_plugin; + this->driver_class.get_identifier = get_identifier; + this->driver_class.get_description = get_description; + this->driver_class.dispose = dispose_class; + + this->xine = xine; + + return this; +} + +static const ao_info_t ao_info_sndio = { + 12 +}; + +/* + * exported plugin catalog entry + */ + +const plugin_info_t xine_plugin_info[] EXPORTED = { + /* type, API, "name", version, special_info, init_function */ + { PLUGIN_AUDIO_OUT, 8, "sndio", XINE_VERSION_CODE, &ao_info_sndio, init_class }, + { PLUGIN_NONE, 0, "", 0, NULL, NULL } +}; diff --git a/src/audio_out/audio_sun_out.c b/src/audio_out/audio_sun_out.c index b23955b77..048db6b86 100644 --- a/src/audio_out/audio_sun_out.c +++ b/src/audio_out/audio_sun_out.c @@ -909,7 +909,7 @@ static ao_driver_t *ao_sun_open_plugin (audio_driver_class_t *class_gen, const v int status; audio_info_t info; - this = (sun_driver_t *) xine_xmalloc (sizeof (sun_driver_t)); + this = calloc(1, sizeof (sun_driver_t)); if (!this) return NULL; @@ -1032,7 +1032,7 @@ static void ao_sun_dispose_class (audio_driver_class_t *this_gen) { static void *ao_sun_init_class (xine_t *xine, void *data) { sun_class_t *this; - this = (sun_class_t *) xine_xmalloc (sizeof (sun_class_t)); + this = calloc(1, sizeof (sun_class_t)); if (!this) return NULL; diff --git a/src/combined/Makefile.am b/src/combined/Makefile.am index 884fcf0cc..6a43fed47 100644 --- a/src/combined/Makefile.am +++ b/src/combined/Makefile.am @@ -1,5 +1,8 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common +SUBDIRS = ffmpeg + if HAVE_WAVPACK xineplug_wavpack = xineplug_wavpack.la endif diff --git a/src/combined/combined_wavpack.c b/src/combined/combined_wavpack.c index 893ee99be..98bbe5b57 100644 --- a/src/combined/combined_wavpack.c +++ b/src/combined/combined_wavpack.c @@ -33,7 +33,7 @@ static uint32_t audio_types[] = { static const decoder_info_t decoder_info_wv = { audio_types, /* supported types */ - 7 /* priority */ + 8 /* priority */ }; const plugin_info_t xine_plugin_info[] EXPORTED = { diff --git a/src/combined/combined_wavpack.h b/src/combined/combined_wavpack.h index 61a504a4f..3cfa78509 100644 --- a/src/combined/combined_wavpack.h +++ b/src/combined/combined_wavpack.h @@ -21,6 +21,7 @@ */ #include "os_types.h" +#include "attributes.h" typedef struct { uint32_t idcode; /* This should always be the string "wvpk" */ @@ -35,7 +36,7 @@ typedef struct { uint32_t samples_count; /* Count of samples in the current frame */ uint32_t flags; /* Misc flags */ uint32_t decoded_crc32; /* CRC32 of the decoded data */ -} __attribute__((packed)) wvheader_t; +} XINE_PACKED wvheader_t; #ifdef WORDS_BIGENDIAN static const uint32_t wvpk_signature = ('k' + ('p' << 8) + ('v' << 16) + ('w' << 24)); diff --git a/src/combined/decoder_flac.c b/src/combined/decoder_flac.c index 2230056cd..e5884006a 100644 --- a/src/combined/decoder_flac.c +++ b/src/combined/decoder_flac.c @@ -166,6 +166,7 @@ flac_write_callback (const FLAC__StreamDecoder *decoder, return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; } +#ifdef LEGACY_FLAC static void flac_metadata_callback (const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, @@ -188,6 +189,7 @@ flac_metadata_callback (const FLAC__StreamDecoder *decoder, return; } +#endif static void flac_error_callback (const FLAC__StreamDecoder *decoder, @@ -335,7 +337,7 @@ static audio_decoder_t * open_plugin (audio_decoder_class_t *class_gen, xine_stream_t *stream) { flac_decoder_t *this ; - this = (flac_decoder_t *) xine_xmalloc (sizeof (flac_decoder_t)); + this = calloc(1, sizeof (flac_decoder_t)); this->audio_decoder.decode_data = flac_decode_data; this->audio_decoder.reset = flac_reset; @@ -407,7 +409,7 @@ static void * init_plugin (xine_t *xine, void *data) { flac_class_t *this; - this = (flac_class_t *) xine_xmalloc (sizeof (flac_class_t)); + this = calloc(1, sizeof (flac_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/combined/decoder_wavpack.c b/src/combined/decoder_wavpack.c index f8a301c9f..36bf0deab 100644 --- a/src/combined/decoder_wavpack.c +++ b/src/combined/decoder_wavpack.c @@ -291,7 +291,7 @@ static void wavpack_dispose (audio_decoder_t *this_gen) { } static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stream_t *stream) { - wavpack_decoder_t * const this = (wavpack_decoder_t *) xine_xmalloc (sizeof (wavpack_decoder_t)); + wavpack_decoder_t * const this = calloc(1, sizeof (wavpack_decoder_t)); this->audio_decoder.decode_data = wavpack_decode_data; this->audio_decoder.reset = wavpack_reset; @@ -324,7 +324,7 @@ static void dispose_class (audio_decoder_class_t *this) { void *decoder_wavpack_init_plugin (xine_t *xine, void *data) { wavpack_class_t *this; - this = (wavpack_class_t *) xine_xmalloc (sizeof (wavpack_class_t)); + this = calloc(1, sizeof (wavpack_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/combined/demux_flac.c b/src/combined/demux_flac.c index 85f98e876..fc638fe35 100644 --- a/src/combined/demux_flac.c +++ b/src/combined/demux_flac.c @@ -583,7 +583,7 @@ open_plugin (demux_class_t *class_gen, } break; case METHOD_BY_EXTENSION: { - char *ending, *mrl; + const char *ending, *mrl; mrl = input->get_mrl (input); @@ -607,7 +607,7 @@ open_plugin (demux_class_t *class_gen, * if we reach this point, the input has been accepted. */ - this = xine_xmalloc (sizeof (demux_flac_t)); + this = calloc(1, sizeof (demux_flac_t)); this->stream = stream; this->input = input; @@ -715,24 +715,25 @@ open_plugin (demux_class_t *class_gen, /* FLAC Demuxer class */ -static char * +static const char * get_description (demux_class_t *this_gen) { return "FLAC demux plugin"; } -static char * +static const char * get_identifier (demux_class_t *this_gen) { return "FLAC"; } -static char * +static const char * get_extensions (demux_class_t *this_gen) { return "flac"; } -static char * +static const char * get_mimetypes (demux_class_t *this_gen) { - return "application/x-flac: flac: FLAC Audio;"; + return "audio/x-flac: flac: FLAC Audio;" + "audio/flac: flac: FLAC Audio;"; } static void @@ -751,7 +752,7 @@ demux_flac_init_class (xine_t *xine, void *data) { lprintf("demux_flac_init_class\n"); - this = xine_xmalloc (sizeof (demux_flac_class_t)); + this = calloc(1, sizeof (demux_flac_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/combined/demux_wavpack.c b/src/combined/demux_wavpack.c index e8081bca9..2c3e6ce55 100644 --- a/src/combined/demux_wavpack.c +++ b/src/combined/demux_wavpack.c @@ -332,7 +332,7 @@ static int demux_wv_get_optional_data(demux_plugin_t *const this_gen, static demux_plugin_t *open_plugin (demux_class_t *const class_gen, xine_stream_t *const stream, input_plugin_t *const input) { - demux_wv_t *const this = xine_xmalloc (sizeof (demux_wv_t)); + demux_wv_t *const this = calloc(1, sizeof (demux_wv_t)); this->stream = stream; this->input = input; @@ -387,11 +387,11 @@ static const char *get_identifier (demux_class_t *const this_gen) { } static const char *get_extensions (demux_class_t *const this_gen) { - return "wv"; + return "wv wvp"; } static const char *get_mimetypes (demux_class_t *const this_gen) { - return NULL; + return "audio/x-wavpack: wv,wvp: WavPack audio;"; } static void class_dispose (demux_class_t *const this_gen) { @@ -401,7 +401,7 @@ static void class_dispose (demux_class_t *const this_gen) { } void *demux_wv_init_plugin (xine_t *const xine, void *const data) { - demux_wv_class_t *const this = xine_xmalloc (sizeof (demux_wv_class_t)); + demux_wv_class_t *const this = calloc(1, sizeof (demux_wv_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/combined/ffmpeg/Makefile.am b/src/combined/ffmpeg/Makefile.am new file mode 100644 index 000000000..24cab7577 --- /dev/null +++ b/src/combined/ffmpeg/Makefile.am @@ -0,0 +1,81 @@ +include $(top_builddir)/misc/Makefile.plugins +include $(top_srcdir)/misc/Makefile.common + +DEFAULT_INCLUDES = -I. + +if HAVE_FFMPEG +ff_cppflags = $(FFMPEG_CFLAGS) $(FFMPEG_POSTPROC_CFLAGS) +link_ffmpeg = $(FFMPEG_LIBS) $(FFMPEG_UTIL_LIBS) $(FFMPEG_POSTPROC_LIBS) +else +ff_cppflags = -I$(top_builddir)/src/libffmpeg -I$(top_srcdir)/src/libffmpeg/libavcodec -I$(top_srcdir)/src/libffmpeg/libavutil +link_ffmpeg = \ + $(top_builddir)/src/libffmpeg/libavcodec/libavcodec.la \ + $(top_builddir)/src/libffmpeg/libavutil/libavutil.la \ + $(top_builddir)/src/libffmpeg/libavcodec/libpostproc/libpostprocess.la +endif + +ff_generated = \ + avcodec_video.list avcodec_audio.list \ + ff_video_list.h ff_audio_list.h + +BUILT_SOURCES = $(ff_generated) + +# ffmpeg_config.h is generated by configure +DISTCLEANFILES = ffmpeg_config.h $(ff_generated) + +# this must always be included, even if the current machine has no DXR3... +EXTRA_DIST = ffmpeg_encoder.c \ + xine_video.list xine_audio.list mkcodeclist.pl + +xineplug_LTLIBRARIES = xineplug_decode_ff.la xineplug_decode_dvaudio.la + +if HAVE_DXR3 +AM_CPPFLAGS = -I$(top_srcdir)/src/dxr3 $(X_CFLAGS) $(ff_cppflags) \ + $(ZLIB_CPPFLAGS) +xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \ + ffmpeg_encoder.c ff_mpeg_parser.c ffmpeg_decoder.h \ + ff_mpeg_parser.h +else +AM_CPPFLAGS = $(ff_cppflags) $(ZLIB_CPPFLAGS) +xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \ + ff_mpeg_parser.c ffmpeg_decoder.h ff_mpeg_parser.h +endif + +xineplug_decode_ff_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) +xineplug_decode_ff_la_LDFLAGS = $(xineplug_ldflags) $(IMPURE_TEXT_LDFLAGS) +xineplug_decode_ff_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) -lm $(ZLIB_LIBS) \ + $(link_ffmpeg) $(PTHREAD_LIBS) $(LTLIBINTL) + +xineplug_decode_dvaudio_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) +xineplug_decode_dvaudio_la_LDFLAGS = $(xineplug_ldflags) +xineplug_decode_dvaudio_la_SOURCES = ff_dvaudio_decoder.c +xineplug_decode_dvaudio_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) + +$(top_srcdir)/src/libffmpeg/libavcodec/libavcodec.la: + make -C $(top_srcdir)/src/libffmpeg + +# Generation of ffmpeg->xine codec mapping lists (see xine_*.list). + +AV_CPP = $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) + +# Extract some CODEC_ID_* from avcodec.h. Requires some sed mangling. +avcodec_audio.list: AV_CODECS:=/CODEC_ID_PCM_S16LE/,/CODEC_ID_DVD_SUBTITLE/ +avcodec_video.list: AV_CODECS:=/CODEC_ID_MPEG1VIDEO/,/CODEC_ID_PCM_S16LE/ + +avcodec_audio.list avcodec_video.list: + echo '#include "$(srcdir)/ffmpeg_decoder.h"' | $(AV_CPP) - |\ + sed -e $(AV_CODECS)'! d; s/^[ \t]*//; s/[=,].*//; /^$$/ d' >$@ + +# Generate the mappings. These are #included where needed. +ff_%_list.h: $(srcdir)/mkcodeclist.pl avcodec_%.list $(srcdir)/xine_%.list + $(PERL) $^ $@ + +ff_audio_decoder.c: ff_audio_list.h +ff_video_decoder.c: ff_video_list.h + +# 'make report' prints tokens corresponding to any unhandled codecs. +report: avcodec_audio.list avcodec_video.list + @$(top_srcdir)/src/combined/ffmpeg/mkcodeclist.pl avcodec_audio.list xine_audio.list - audio + @$(top_srcdir)/src/combined/ffmpeg/mkcodeclist.pl avcodec_video.list xine_video.list - video + +.PHONY: report diff --git a/src/libffmpeg/ff_audio_decoder.c b/src/combined/ffmpeg/ff_audio_decoder.c index 5f197bed5..24c193b44 100644 --- a/src/libffmpeg/ff_audio_decoder.c +++ b/src/combined/ffmpeg/ff_audio_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2005 the xine project + * Copyright (C) 2001-2008 the xine project * * This file is part of xine, a free video player. * @@ -22,7 +22,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" -#include "ffmpeg_config.h" +#include "../../libffmpeg/ffmpeg_config.h" #endif #include <stdlib.h> @@ -73,42 +73,7 @@ typedef struct ff_audio_decoder_s { } ff_audio_decoder_t; -static const ff_codec_t ff_audio_lookup[] = { - {BUF_AUDIO_WMAV1, CODEC_ID_WMAV1, "MS Windows Media Audio 1 (ffmpeg)"}, - {BUF_AUDIO_WMAV2, CODEC_ID_WMAV2, "MS Windows Media Audio 2 (ffmpeg)"}, - {BUF_AUDIO_14_4, CODEC_ID_RA_144, "Real 14.4 (ffmpeg)"}, - {BUF_AUDIO_28_8, CODEC_ID_RA_288, "Real 28.8 (ffmpeg)"}, - {BUF_AUDIO_MPEG, CODEC_ID_MP3, "MP3 (ffmpeg)"}, - {BUF_AUDIO_MSADPCM, CODEC_ID_ADPCM_MS, "MS ADPCM (ffmpeg)"}, - {BUF_AUDIO_QTIMAADPCM, CODEC_ID_ADPCM_IMA_QT, "QT IMA ADPCM (ffmpeg)"}, - {BUF_AUDIO_MSIMAADPCM, CODEC_ID_ADPCM_IMA_WAV, "MS IMA ADPCM (ffmpeg)"}, - {BUF_AUDIO_DK3ADPCM, CODEC_ID_ADPCM_IMA_DK3, "Duck DK3 ADPCM (ffmpeg)"}, - {BUF_AUDIO_DK4ADPCM, CODEC_ID_ADPCM_IMA_DK4, "Duck DK4 ADPCM (ffmpeg)"}, - {BUF_AUDIO_VQA_IMA, CODEC_ID_ADPCM_IMA_WS, "Westwood Studios IMA (ffmpeg)"}, - {BUF_AUDIO_SMJPEG_IMA, CODEC_ID_ADPCM_IMA_SMJPEG, "SMJPEG IMA (ffmpeg)"}, - {BUF_AUDIO_XA_ADPCM, CODEC_ID_ADPCM_XA, "CD-ROM/XA ADPCM (ffmpeg)"}, - {BUF_AUDIO_4X_ADPCM, CODEC_ID_ADPCM_4XM, "4X ADPCM (ffmpeg)"}, - {BUF_AUDIO_EA_ADPCM, CODEC_ID_ADPCM_EA, "Electronic Arts ADPCM (ffmpeg)"}, - {BUF_AUDIO_MULAW, CODEC_ID_PCM_MULAW, "mu-law logarithmic PCM (ffmpeg)"}, - {BUF_AUDIO_ALAW, CODEC_ID_PCM_ALAW, "A-law logarithmic PCM (ffmpeg)"}, - {BUF_AUDIO_ROQ, CODEC_ID_ROQ_DPCM, "RoQ DPCM (ffmpeg)"}, - {BUF_AUDIO_INTERPLAY, CODEC_ID_INTERPLAY_DPCM, "Interplay DPCM (ffmpeg)"}, - {BUF_AUDIO_MAC3, CODEC_ID_MACE3, "MACE 3:1 (ffmpeg)"}, - {BUF_AUDIO_MAC6, CODEC_ID_MACE6, "MACE 6:1 (ffmpeg)"}, - {BUF_AUDIO_XAN_DPCM, CODEC_ID_XAN_DPCM, "Origin Xan DPCM (ffmpeg)"}, - {BUF_AUDIO_VMD, CODEC_ID_VMDAUDIO, "Sierra VMD Audio (ffmpeg)"}, - {BUF_AUDIO_FLAC, CODEC_ID_FLAC, "FLAC (ffmpeg)"}, - {BUF_AUDIO_SHORTEN, CODEC_ID_SHORTEN, "Shorten (ffmpeg)"}, - {BUF_AUDIO_ALAC, CODEC_ID_ALAC, "ALAC (ffmpeg)"}, - {BUF_AUDIO_QDESIGN2, CODEC_ID_QDM2, "QDesign (ffmpeg)"}, - {BUF_AUDIO_COOK, CODEC_ID_COOK, "RealAudio Cooker (ffmpeg)"}, - {BUF_AUDIO_TRUESPEECH, CODEC_ID_TRUESPEECH, "TrueSpeech (ffmpeg)"}, - {BUF_AUDIO_TTA, CODEC_ID_TTA, "True Audio Lossless (ffmpeg)"}, - {BUF_AUDIO_SMACKER, CODEC_ID_SMACKAUDIO, "Smacker (ffmpeg)"}, - {BUF_AUDIO_FLVADPCM, CODEC_ID_ADPCM_SWF, "Flash ADPCM (ffmpeg)"}, - {BUF_AUDIO_WAVPACK, CODEC_ID_WAVPACK, "WavPack (ffmpeg)"}, -}; - +#include "ff_audio_list.h" static void ff_audio_ensure_buffer_size(ff_audio_decoder_t *this, int size) { if (size > this->bufsize) { @@ -177,7 +142,7 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->context->bit_rate = audio_header->nAvgBytesPerSec * 8; if(audio_header->cbSize > 0) { - this->context->extradata = xine_xmalloc(audio_header->cbSize); + this->context->extradata = malloc(audio_header->cbSize); this->context->extradata_size = audio_header->cbSize; memcpy( this->context->extradata, (uint8_t *)audio_header + sizeof(xine_waveformatex), @@ -199,10 +164,10 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->audio_channels = this->buf[0x37]; /* this->audio_bits = buf->content[0x35] */ - this->context->block_align = _X_BE_16(&this->buf[0x2A]); - + this->context->block_align = _X_BE_32(&this->buf[0x18]); + this->context->extradata_size = 5*sizeof(short); - this->context->extradata = xine_xmalloc(this->context->extradata_size); + this->context->extradata = malloc(this->context->extradata_size); ptr = (short *) this->context->extradata; @@ -211,7 +176,51 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) ptr[2] = _X_BE_16(&this->buf[0x16]); /* subpacket flavour */ ptr[3] = _X_BE_32(&this->buf[0x18]); /* coded frame size */ ptr[4] = 0; /* codec's data length */ + + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "ffmpeg_audio_dec: 28_8 audio channels %d bits %d sample rate %d block align %d\n", + this->audio_channels, this->audio_bits, this->audio_sample_rate, + this->context->block_align); break; + case BUF_AUDIO_COOK: + { + int version; + int data_len; + int extradata; + + version = _X_BE_16 (this->buf+4); + if (version == 4) { + this->audio_sample_rate = _X_BE_16 (this->buf+48); + this->audio_bits = _X_BE_16 (this->buf+52); + this->audio_channels = _X_BE_16 (this->buf+54); + data_len = _X_BE_32 (this->buf+67); + extradata = 71; + } else { + this->audio_sample_rate = _X_BE_16 (this->buf+54); + this->audio_bits = _X_BE_16 (this->buf+58); + this->audio_channels = _X_BE_16 (this->buf+60); + data_len = _X_BE_32 (this->buf+74); + extradata = 78; + } + this->context->block_align = _X_BE_16 (this->buf+44); + + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "ffmpeg_audio_dec: cook audio channels %d bits %d sample rate %d block align %d\n", + this->audio_channels, this->audio_bits, this->audio_sample_rate, + this->context->block_align); + + if (extradata + data_len > this->size) + break; /* abort early - extradata length is bad */ + if (extradata > INT_MAX - data_len) + break;/*integer overflow*/ + + this->context->extradata_size = data_len; + this->context->extradata = malloc(this->context->extradata_size + + FF_INPUT_BUFFER_PADDING_SIZE); + xine_fast_memcpy (this->context->extradata, this->buf + extradata, + this->context->extradata_size); + break; + } default: xprintf(this->stream->xine, XINE_VERBOSITY_LOG, "ffmpeg_audio_dec: unknown header with buf type 0x%X\n", codec_type); @@ -228,11 +237,12 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->context->sample_rate = this->audio_sample_rate; this->context->channels = this->audio_channels; this->context->codec_id = this->codec->id; + this->context->codec_type = this->codec->type; this->context->codec_tag = _x_stream_info_get(this->stream, XINE_STREAM_INFO_AUDIO_FOURCC); this->size = 0; - this->decode_buffer = xine_xmalloc(AVCODEC_MAX_AUDIO_FRAME_SIZE); + this->decode_buffer = calloc(1, AVCODEC_MAX_AUDIO_FRAME_SIZE); return; } @@ -240,8 +250,8 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) (buf->decoder_info[1] == BUF_SPECIAL_STSD_ATOM)) { this->context->extradata_size = buf->decoder_info[2]; - this->context->extradata = xine_xmalloc(buf->decoder_info[2] + - FF_INPUT_BUFFER_PADDING_SIZE); + this->context->extradata = malloc(buf->decoder_info[2] + + FF_INPUT_BUFFER_PADDING_SIZE); memcpy(this->context->extradata, buf->decoder_info_ptr[2], buf->decoder_info[2]); @@ -267,7 +277,26 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->decoder_ok = 1; } + if( buf->decoder_flags & BUF_FLAG_PREVIEW ) + return; + + ff_audio_ensure_buffer_size(this, this->size + buf->size); + xine_fast_memcpy (&this->buf[this->size], buf->content, buf->size); + this->size += buf->size; + if (!this->output_open) { + if (!this->audio_bits || !this->audio_sample_rate || !this->audio_channels) { + avcodec_decode_audio2 (this->context, + (int16_t *)this->decode_buffer, + &decode_buffer_size, + &this->buf[0], + this->size); + this->audio_bits = this->context->bits_per_sample; + this->audio_sample_rate = this->context->sample_rate; + this->audio_channels = this->context->channels; + if (!this->audio_bits || !this->audio_sample_rate || !this->audio_channels) + return; + } this->output_open = (this->stream->audio_out->open) (this->stream->audio_out, this->stream, this->audio_bits, this->audio_sample_rate, _x_ao_channels2mode(this->audio_channels)); @@ -277,13 +306,6 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) if (!this->output_open) return; - if( buf->decoder_flags & BUF_FLAG_PREVIEW ) - return; - - ff_audio_ensure_buffer_size(this, this->size + buf->size); - xine_fast_memcpy (&this->buf[this->size], buf->content, buf->size); - this->size += buf->size; - if (buf->decoder_flags & BUF_FLAG_FRAME_END) { /* time to decode a frame */ offset = 0; @@ -309,6 +331,13 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) /* dispatch the decoded audio */ out = 0; while (out < decode_buffer_size) { + int stream_status = xine_get_status(this->stream); + + if (stream_status == XINE_STATUS_QUIT || stream_status == XINE_STATUS_STOP) { + this->size = 0; + return; + } + audio_buffer = this->stream->audio_out->get_buffer (this->stream->audio_out); if (audio_buffer->mem_size == 0) { @@ -324,7 +353,7 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) /* fill up this buffer */ xine_fast_memcpy(audio_buffer->mem, &this->decode_buffer[out], - bytes_to_send); + bytes_to_send); /* byte count / 2 (bytes / sample) / channels */ audio_buffer->num_frames = bytes_to_send / 2 / this->audio_channels; @@ -355,7 +384,8 @@ static void ff_audio_reset (audio_decoder_t *this_gen) { if( this->context && this->decoder_ok ) { pthread_mutex_lock (&ffmpeg_lock); avcodec_close (this->context); - avcodec_open (this->context, this->codec); + if (avcodec_open (this->context, this->codec) < 0) + this->decoder_ok = 0; pthread_mutex_unlock (&ffmpeg_lock); } } @@ -384,7 +414,7 @@ static void ff_audio_dispose (audio_decoder_t *this_gen) { free(this->context->extradata); if(this->context) - free(this->context); + av_free(this->context); free (this_gen); } @@ -393,7 +423,7 @@ static audio_decoder_t *ff_audio_open_plugin (audio_decoder_class_t *class_gen, ff_audio_decoder_t *this ; - this = (ff_audio_decoder_t *) xine_xmalloc (sizeof (ff_audio_decoder_t)); + this = calloc(1, sizeof (ff_audio_decoder_t)); this->audio_decoder.decode_data = ff_audio_decode_data; this->audio_decoder.reset = ff_audio_reset; @@ -429,7 +459,7 @@ void *init_audio_plugin (xine_t *xine, void *data) { ff_audio_class_t *this ; - this = (ff_audio_class_t *) xine_xmalloc (sizeof (ff_audio_class_t)); + this = calloc(1, sizeof (ff_audio_class_t)); this->decoder_class.open_plugin = ff_audio_open_plugin; this->decoder_class.get_identifier = ff_audio_get_identifier; @@ -441,111 +471,7 @@ void *init_audio_plugin (xine_t *xine, void *data) { return this; } -static uint32_t supported_audio_types[] = { - #ifdef CONFIG_WMAV1_DECODER - BUF_AUDIO_WMAV1, - #endif - #ifdef CONFIG_WMAV2_DECODER - BUF_AUDIO_WMAV2, - #endif - #ifdef CONFIG_RA_144_DECODER - BUF_AUDIO_14_4, - #endif - #ifdef CONFIG_RA_288_DECODER - BUF_AUDIO_28_8, - #endif - #ifdef CONFIG_MP3_DECODER - BUF_AUDIO_MPEG, - #endif - #ifdef CONFIG_ADPCM_MS_DECODER - BUF_AUDIO_MSADPCM, - #endif - #ifdef CONFIG_ADPCM_IMA_QT_DECODER - BUF_AUDIO_QTIMAADPCM, - #endif - #ifdef CONFIG_ADPCM_IMA_WAV_DECODER - BUF_AUDIO_MSIMAADPCM, - #endif - #ifdef CONFIG_ADPCM_IMA_DK3_DECODER - BUF_AUDIO_DK3ADPCM, - #endif - #ifdef CONFIG_ADPCM_IMA_DK4_DECODER - BUF_AUDIO_DK4ADPCM, - #endif - #ifdef CONFIG_ADPCM_IMA_WS_DECODER - BUF_AUDIO_VQA_IMA, - #endif - #ifdef CONFIG_ADPCM_IMA_SMJPEG_DECODER - BUF_AUDIO_SMJPEG_IMA, - #endif - #ifdef CONFIG_ADPCM_XA_DECODER - BUF_AUDIO_XA_ADPCM, - #endif - #ifdef CONFIG_ADPCM_4XM_DECODER - BUF_AUDIO_4X_ADPCM, - #endif - #ifdef CONFIG_ADPCM_EA_DECODER - BUF_AUDIO_EA_ADPCM, - #endif - #ifdef CONFIG_PCM_MULAW_DECODER - BUF_AUDIO_MULAW, - #endif - #ifdef CONFIG_PCM_ALAW_DECODER - BUF_AUDIO_ALAW, - #endif - #ifdef CONFIG_ROQ_DPCM_DECODER - BUF_AUDIO_ROQ, - #endif - #ifdef CONFIG_INTERPLAY_DPCM_DECODER - BUF_AUDIO_INTERPLAY, - #endif - #ifdef CONFIG_MACE3_DECODER - BUF_AUDIO_MAC3, - #endif - #ifdef CONFIG_MACE6_DECODER - BUF_AUDIO_MAC6, - #endif - #ifdef CONFIG_XAN_DPCM_DECODER - BUF_AUDIO_XAN_DPCM, - #endif - #ifdef CONFIG_VMDAUDIO_DECODER - BUF_AUDIO_VMD, - #endif - #ifdef CONFIG_FLAC_DECODER - BUF_AUDIO_FLAC, - #endif - #ifdef CONFIG_SHORTEN_DECODER - BUF_AUDIO_SHORTEN, - #endif - #ifdef CONFIG_ALAC_DECODER - BUF_AUDIO_ALAC, - #endif - #ifdef CONFIG_QDM2_DECODER - BUF_AUDIO_QDESIGN2, - #endif - #ifdef CONFIG_COOK_DECODER - BUF_AUDIO_COOK, - #endif - #ifdef CONFIG_TRUESPEECH_DECODER - BUF_AUDIO_TRUESPEECH, - #endif - #ifdef CONFIG_TTA_DECODER - BUF_AUDIO_TTA, - #endif - #ifdef CONFIG_SMACKAUDIO_DECODER - BUF_AUDIO_SMACKER, - #endif - #ifdef CONFIG_ADPCM_SWF_DECODER - BUF_AUDIO_FLVADPCM, - #endif - #ifdef CONFIG_WAVPACK_DECODER - BUF_AUDIO_WAVPACK, - #endif - - 0 -}; - decoder_info_t dec_info_ffmpeg_audio = { supported_audio_types, /* supported types */ - 6 /* priority */ + 7 /* priority */ }; diff --git a/src/libffmpeg/ff_dvaudio_decoder.c b/src/combined/ffmpeg/ff_dvaudio_decoder.c index 0796b3862..6a102f627 100644 --- a/src/libffmpeg/ff_dvaudio_decoder.c +++ b/src/combined/ffmpeg/ff_dvaudio_decoder.c @@ -52,14 +52,16 @@ # undef uint64_t #endif -#ifdef HAVE_FFMPEG +#ifdef HAVE_FFMPEG_AVUTIL_H # include <avcodec.h> -# include "libavcodec/dvdata.h" +#elif defined HAVE_FFMPEG +# include <libavcodec/avcodec.h> #else -# include "libavcodec/avcodec.h" -# include "libavcodec/dvdata.h" +# include "../../libffmpeg/libavcodec/avcodec.h" #endif +#include "../../libffmpeg/libavcodec/dvdata.h" + #ifdef _MSC_VER # undef malloc # undef free @@ -249,10 +251,10 @@ static void dvaudio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) return; if (buf->decoder_flags & BUF_FLAG_STDHEADER) { - this->buf = xine_xmalloc(AUDIOBUFSIZE); + this->buf = calloc(1, AUDIOBUFSIZE); this->bufsize = AUDIOBUFSIZE; this->size = 0; - this->decode_buffer = xine_xmalloc(MAXFRAMESIZE); + this->decode_buffer = calloc(1, MAXFRAMESIZE); this->audio_sample_rate = buf->decoder_info[1]; this->audio_bits = buf->decoder_info[2]; @@ -366,7 +368,7 @@ static audio_decoder_t *dvaudio_open_plugin (audio_decoder_class_t *class_gen, x dvaudio_decoder_t *this ; - this = (dvaudio_decoder_t *) xine_xmalloc (sizeof (dvaudio_decoder_t)); + this = calloc(1, sizeof (dvaudio_decoder_t)); this->audio_decoder.decode_data = dvaudio_decode_data; this->audio_decoder.reset = dvaudio_reset; @@ -399,7 +401,7 @@ static void *init_dvaudio_plugin (xine_t *xine, void *data) { dvaudio_class_t *this ; - this = (dvaudio_class_t *) xine_xmalloc (sizeof (dvaudio_class_t)); + this = calloc(1, sizeof (dvaudio_class_t)); this->decoder_class.open_plugin = dvaudio_open_plugin; this->decoder_class.get_identifier = dvaudio_get_identifier; diff --git a/src/libffmpeg/ff_mpeg_parser.c b/src/combined/ffmpeg/ff_mpeg_parser.c index 70901d93b..3c2c2cf48 100644 --- a/src/libffmpeg/ff_mpeg_parser.c +++ b/src/combined/ffmpeg/ff_mpeg_parser.c @@ -50,7 +50,7 @@ static const int frame_rate_tab[][2] = { void mpeg_parser_init (mpeg_parser_t *parser) { - parser->chunk_buffer = xine_xmalloc(BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE); + parser->chunk_buffer = malloc(BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE); mpeg_parser_reset(parser); } diff --git a/src/libffmpeg/ff_mpeg_parser.h b/src/combined/ffmpeg/ff_mpeg_parser.h index ea43a6ce4..ea43a6ce4 100644 --- a/src/libffmpeg/ff_mpeg_parser.h +++ b/src/combined/ffmpeg/ff_mpeg_parser.h diff --git a/src/libffmpeg/ff_video_decoder.c b/src/combined/ffmpeg/ff_video_decoder.c index dc07abb9f..2742e3f2e 100644 --- a/src/libffmpeg/ff_video_decoder.c +++ b/src/combined/ffmpeg/ff_video_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2007 the xine project + * Copyright (C) 2001-2008 the xine project * * This file is part of xine, a free video player. * @@ -22,7 +22,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" -#include "ffmpeg_config.h" +#include "../../libffmpeg/ffmpeg_config.h" #endif #include <stdlib.h> @@ -45,10 +45,10 @@ #include "ffmpeg_decoder.h" #include "ff_mpeg_parser.h" -#ifdef HAVE_FFMPEG +#ifdef HAVE_FFMPEG_AVUTIL_H # include <postprocess.h> #else -# include "libavcodec/libpostproc/postprocess.h" +# include <libpostproc/postprocess.h> #endif #define VIDEOBUFSIZE (128*1024) @@ -58,6 +58,12 @@ #define ENABLE_DIRECT_RENDERING +/* reordered_opaque appeared in libavcodec 51.68.0 */ +#define AVCODEC_HAS_REORDERED_OPAQUE +#if LIBAVCODEC_VERSION_INT < 0x334400 +# undef AVCODEC_HAS_REORDERED_OPAQUE +#endif + typedef struct ff_video_decoder_s ff_video_decoder_t; typedef struct ff_video_class_s { @@ -78,7 +84,14 @@ struct ff_video_decoder_s { xine_stream_t *stream; int64_t pts; +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + uint64_t pts_tag_mask; + uint64_t pts_tag; + int pts_tag_counter; + int pts_tag_stable_counter; +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ int video_step; + int reported_video_step; uint8_t decoder_ok:1; uint8_t decoder_init_mode:1; @@ -121,6 +134,10 @@ struct ff_video_decoder_s { yuv_planes_t yuv; AVPaletteControl palette_control; + +#ifdef LOG + enum PixelFormat debug_fmt; +#endif }; @@ -152,7 +169,7 @@ static int get_buffer(AVCodecContext *context, AVFrame *av_frame){ avcodec_align_dimensions(context, &width, &height); - if( this->context->pix_fmt != PIX_FMT_YUV420P ) { + if( this->context->pix_fmt != PIX_FMT_YUV420P && this->context->pix_fmt != PIX_FMT_YUVJ420P ) { if (!this->is_direct_rendering_disabled) { xprintf(this->stream->xine, XINE_VERBOSITY_LOG, _("ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n")); @@ -208,6 +225,11 @@ static int get_buffer(AVCodecContext *context, AVFrame *av_frame){ av_frame->type= FF_BUFFER_TYPE_USER; +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + /* take over pts for this frame to have it reordered */ + av_frame->reordered_opaque = context->reordered_opaque; +#endif + xine_list_push_back(this->dr1_frames, av_frame); return 0; @@ -240,84 +262,7 @@ static void release_buffer(struct AVCodecContext *context, AVFrame *av_frame){ } #endif -static const ff_codec_t ff_video_lookup[] = { - {BUF_VIDEO_MSMPEG4_V1, CODEC_ID_MSMPEG4V1, "Microsoft MPEG-4 v1 (ffmpeg)"}, - {BUF_VIDEO_MSMPEG4_V2, CODEC_ID_MSMPEG4V2, "Microsoft MPEG-4 v2 (ffmpeg)"}, - {BUF_VIDEO_MSMPEG4_V3, CODEC_ID_MSMPEG4V3, "Microsoft MPEG-4 v3 (ffmpeg)"}, - {BUF_VIDEO_WMV7, CODEC_ID_WMV1, "MS Windows Media Video 7 (ffmpeg)"}, - {BUF_VIDEO_WMV8, CODEC_ID_WMV2, "MS Windows Media Video 8 (ffmpeg)"}, - {BUF_VIDEO_WMV9, CODEC_ID_WMV3, "MS Windows Media Video 9 (ffmpeg)"}, - {BUF_VIDEO_VC1, CODEC_ID_VC1, "MS Windows Media Video VC-1 (ffmpeg)"}, - {BUF_VIDEO_MPEG4, CODEC_ID_MPEG4, "ISO MPEG-4 (ffmpeg)"}, - {BUF_VIDEO_XVID, CODEC_ID_MPEG4, "ISO MPEG-4 (XviD, ffmpeg)"}, - {BUF_VIDEO_DIVX5, CODEC_ID_MPEG4, "ISO MPEG-4 (DivX5, ffmpeg)"}, - {BUF_VIDEO_3IVX, CODEC_ID_MPEG4, "ISO MPEG-4 (3ivx, ffmpeg)"}, - {BUF_VIDEO_JPEG, CODEC_ID_MJPEG, "Motion JPEG (ffmpeg)"}, - {BUF_VIDEO_MJPEG, CODEC_ID_MJPEG, "Motion JPEG (ffmpeg)"}, - {BUF_VIDEO_MJPEG_B, CODEC_ID_MJPEGB, "Motion JPEG B (ffmpeg)"}, - {BUF_VIDEO_I263, CODEC_ID_H263I, "ITU H.263 (ffmpeg)"}, - {BUF_VIDEO_H263, CODEC_ID_H263, "H.263 (ffmpeg)"}, - {BUF_VIDEO_RV10, CODEC_ID_RV10, "Real Video 1.0 (ffmpeg)"}, - {BUF_VIDEO_RV20, CODEC_ID_RV20, "Real Video 2.0 (ffmpeg)"}, - {BUF_VIDEO_IV31, CODEC_ID_INDEO3, "Indeo Video 3.1 (ffmpeg)"}, - {BUF_VIDEO_IV32, CODEC_ID_INDEO3, "Indeo Video 3.2 (ffmpeg)"}, - {BUF_VIDEO_SORENSON_V1, CODEC_ID_SVQ1, "Sorenson Video 1 (ffmpeg)"}, - {BUF_VIDEO_SORENSON_V3, CODEC_ID_SVQ3, "Sorenson Video 3 (ffmpeg)"}, - {BUF_VIDEO_DV, CODEC_ID_DVVIDEO, "DV (ffmpeg)"}, - {BUF_VIDEO_HUFFYUV, CODEC_ID_HUFFYUV, "HuffYUV (ffmpeg)"}, - {BUF_VIDEO_VP31, CODEC_ID_VP3, "On2 VP3.1 (ffmpeg)"}, - {BUF_VIDEO_VP5, CODEC_ID_VP5, "On2 VP5 (ffmpeg)"}, - {BUF_VIDEO_VP6, CODEC_ID_VP6, "On2 VP6 (ffmpeg)"}, - {BUF_VIDEO_VP6F, CODEC_ID_VP6F, "On2 VP6 (ffmpeg)"}, - {BUF_VIDEO_4XM, CODEC_ID_4XM, "4X Video (ffmpeg)"}, - {BUF_VIDEO_CINEPAK, CODEC_ID_CINEPAK, "Cinepak (ffmpeg)"}, - {BUF_VIDEO_MSVC, CODEC_ID_MSVIDEO1, "Microsoft Video 1 (ffmpeg)"}, - {BUF_VIDEO_MSRLE, CODEC_ID_MSRLE, "Microsoft RLE (ffmpeg)"}, - {BUF_VIDEO_RPZA, CODEC_ID_RPZA, "Apple Quicktime Video/RPZA (ffmpeg)"}, - {BUF_VIDEO_CYUV, CODEC_ID_CYUV, "Creative YUV (ffmpeg)"}, - {BUF_VIDEO_ROQ, CODEC_ID_ROQ, "Id Software RoQ (ffmpeg)"}, - {BUF_VIDEO_IDCIN, CODEC_ID_IDCIN, "Id Software CIN (ffmpeg)"}, - {BUF_VIDEO_WC3, CODEC_ID_XAN_WC3, "Xan (ffmpeg)"}, - {BUF_VIDEO_VQA, CODEC_ID_WS_VQA, "Westwood Studios VQA (ffmpeg)"}, - {BUF_VIDEO_INTERPLAY, CODEC_ID_INTERPLAY_VIDEO, "Interplay MVE (ffmpeg)"}, - {BUF_VIDEO_FLI, CODEC_ID_FLIC, "FLIC Video (ffmpeg)"}, - {BUF_VIDEO_8BPS, CODEC_ID_8BPS, "Planar RGB (ffmpeg)"}, - {BUF_VIDEO_SMC, CODEC_ID_SMC, "Apple Quicktime Graphics/SMC (ffmpeg)"}, - {BUF_VIDEO_DUCKTM1, CODEC_ID_TRUEMOTION1,"Duck TrueMotion v1 (ffmpeg)"}, - {BUF_VIDEO_DUCKTM2, CODEC_ID_TRUEMOTION2,"Duck TrueMotion v2 (ffmpeg)"}, - {BUF_VIDEO_VMD, CODEC_ID_VMDVIDEO, "Sierra VMD Video (ffmpeg)"}, - {BUF_VIDEO_ZLIB, CODEC_ID_ZLIB, "ZLIB Video (ffmpeg)"}, - {BUF_VIDEO_MSZH, CODEC_ID_MSZH, "MSZH Video (ffmpeg)"}, - {BUF_VIDEO_ASV1, CODEC_ID_ASV1, "ASV v1 Video (ffmpeg)"}, - {BUF_VIDEO_ASV2, CODEC_ID_ASV2, "ASV v2 Video (ffmpeg)"}, - {BUF_VIDEO_ATIVCR1, CODEC_ID_VCR1, "ATI VCR-1 (ffmpeg)"}, - {BUF_VIDEO_FLV1, CODEC_ID_FLV1, "Flash Video (ffmpeg)"}, - {BUF_VIDEO_QTRLE, CODEC_ID_QTRLE, "Apple Quicktime Animation/RLE (ffmpeg)"}, - {BUF_VIDEO_H264, CODEC_ID_H264, "H.264/AVC (ffmpeg)"}, - {BUF_VIDEO_H261, CODEC_ID_H261, "H.261 (ffmpeg)"}, - {BUF_VIDEO_AASC, CODEC_ID_AASC, "Autodesk Video (ffmpeg)"}, - {BUF_VIDEO_LOCO, CODEC_ID_LOCO, "LOCO (ffmpeg)"}, - {BUF_VIDEO_QDRW, CODEC_ID_QDRAW, "QuickDraw (ffmpeg)"}, - {BUF_VIDEO_QPEG, CODEC_ID_QPEG, "Q-Team QPEG (ffmpeg)"}, - {BUF_VIDEO_TSCC, CODEC_ID_TSCC, "TechSmith Video (ffmpeg)"}, - {BUF_VIDEO_ULTI, CODEC_ID_ULTI, "IBM UltiMotion (ffmpeg)"}, - {BUF_VIDEO_WNV1, CODEC_ID_WNV1, "Winnow Video (ffmpeg)"}, - {BUF_VIDEO_XL, CODEC_ID_VIXL, "Miro/Pinnacle VideoXL (ffmpeg)"}, - {BUF_VIDEO_RT21, CODEC_ID_INDEO2, "Indeo/RealTime 2 (ffmpeg)"}, - {BUF_VIDEO_FPS1, CODEC_ID_FRAPS, "Fraps (ffmpeg)"}, - {BUF_VIDEO_MPEG, CODEC_ID_MPEG1VIDEO, "MPEG 1/2 (ffmpeg)"}, - {BUF_VIDEO_CSCD, CODEC_ID_CSCD, "CamStudio (ffmpeg)"}, - {BUF_VIDEO_AVS, CODEC_ID_AVS, "AVS (ffmpeg)"}, - {BUF_VIDEO_ALGMM, CODEC_ID_MMVIDEO, "American Laser Games MM (ffmpeg)"}, - {BUF_VIDEO_ZMBV, CODEC_ID_ZMBV, "Zip Motion Blocks Video (ffmpeg)"}, - {BUF_VIDEO_SMACKER, CODEC_ID_SMACKVIDEO, "Smacker (ffmpeg)"}, - {BUF_VIDEO_NUV, CODEC_ID_NUV, "NuppelVideo (ffmpeg)"}, - {BUF_VIDEO_KMVC, CODEC_ID_KMVC, "Karl Morton's Video Codec (ffmpeg)"}, - {BUF_VIDEO_FLASHSV, CODEC_ID_FLASHSV, "Flash Screen Video (ffmpeg)"}, - {BUF_VIDEO_CAVS, CODEC_ID_CAVS, "Chinese AVS (ffmpeg)"}, - {BUF_VIDEO_VMNC, CODEC_ID_VMNC, "VMware Screen Codec (ffmpeg)"}, - {BUF_VIDEO_THEORA_RAW, CODEC_ID_THEORA, "Theora (ffmpeg)"}, -}; +#include "ff_video_list.h" static const char *const skip_loop_filter_enum_names[] = { "default", /* AVDISCARD_DEFAULT */ @@ -377,7 +322,7 @@ static void init_video_codec (ff_video_decoder_t *this, unsigned int codec_type) /* Some codecs (eg rv10) copy flags in init so it's necessary to set * this flag here in case we are going to use direct rendering */ - if(this->codec->capabilities & CODEC_CAP_DR1) { + if(this->codec->capabilities & CODEC_CAP_DR1 && this->codec->id != CODEC_ID_H264) { this->context->flags |= CODEC_FLAG_EMU_EDGE; } @@ -589,6 +534,11 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { int y; uint8_t *dy, *du, *dv, *sy, *su, *sv; +#ifdef LOG + if (this->debug_fmt != this->context->pix_fmt) + printf ("frame format == %08x\n", this->debug_fmt = this->context->pix_fmt); +#endif + dy = img->base[0]; du = img->base[1]; dv = img->base[2]; @@ -596,6 +546,10 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { su = this->av_frame->data[1]; sv = this->av_frame->data[2]; + /* Some segfaults & heap corruption have been observed with img->height, + * so we use this->bih.biHeight instead (which is the displayed height) + */ + if (this->context->pix_fmt == PIX_FMT_YUV410P) { yuv9_to_yv12( @@ -616,7 +570,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { img->pitches[2], /* width x height */ img->width, - img->height); + this->bih.biHeight); } else if (this->context->pix_fmt == PIX_FMT_YUV411P) { @@ -638,15 +592,15 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { img->pitches[2], /* width x height */ img->width, - img->height); + this->bih.biHeight); - } else if (this->context->pix_fmt == PIX_FMT_RGBA32) { + } else if (this->context->pix_fmt == PIX_FMT_RGB32) { int x, plane_ptr = 0; uint32_t *argb_pixels; uint32_t argb; - for(y = 0; y < img->height; y++) { + for(y = 0; y < this->bih.biHeight; y++) { argb_pixels = (uint32_t *)sy; for(x = 0; x < img->width; x++) { uint8_t r, g, b; @@ -674,7 +628,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { uint8_t *src; uint16_t pixel16; - for(y = 0; y < img->height; y++) { + for(y = 0; y < this->bih.biHeight; y++) { src = sy; for(x = 0; x < img->width; x++) { uint8_t r, g, b; @@ -703,7 +657,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { uint8_t *src; uint16_t pixel16; - for(y = 0; y < img->height; y++) { + for(y = 0; y < this->bih.biHeight; y++) { src = sy; for(x = 0; x < img->width; x++) { uint8_t r, g, b; @@ -731,7 +685,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { int x, plane_ptr = 0; uint8_t *src; - for(y = 0; y < img->height; y++) { + for(y = 0; y < this->bih.biHeight; y++) { src = sy; for(x = 0; x < img->width; x++) { uint8_t r, g, b; @@ -755,7 +709,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { int x, plane_ptr = 0; uint8_t *src; - for(y = 0; y < img->height; y++) { + for(y = 0; y < this->bih.biHeight; y++) { src = sy; for(x = 0; x < img->width; x++) { uint8_t r, g, b; @@ -798,7 +752,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { v_palette[x] = COMPUTE_V(r, g, b); } - for(y = 0; y < img->height; y++) { + for(y = 0; y < this->bih.biHeight; y++) { src = sy; for(x = 0; x < img->width; x++) { pixel = *src++; @@ -815,7 +769,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { } else { - for (y=0; y<img->height; y++) { + for (y = 0; y < this->bih.biHeight; y++) { xine_fast_memcpy (dy, sy, img->width); dy += img->pitches[0]; @@ -823,7 +777,7 @@ static void ff_convert_frame(ff_video_decoder_t *this, vo_frame_t *img) { sy += this->av_frame->linesize[0]; } - for (y=0; y<(img->height/2); y++) { + for (y = 0; y < this->bih.biHeight / 2; y++) { if (this->context->pix_fmt != PIX_FMT_YUV444P) { @@ -886,7 +840,7 @@ static void ff_handle_preview_buffer (ff_video_decoder_t *this, buf_element_t *b if (codec_type == BUF_VIDEO_MPEG) { this->is_mpeg12 = 1; if ( this->mpeg_parser == NULL ) { - this->mpeg_parser = xine_xmalloc(sizeof(mpeg_parser_t)); + this->mpeg_parser = calloc(1, sizeof(mpeg_parser_t)); mpeg_parser_init(this->mpeg_parser); this->decoder_init_mode = 0; } @@ -941,9 +895,29 @@ static void ff_handle_header_buffer (ff_video_decoder_t *this, buf_element_t *bu this->context->sub_id = _X_BE_32(&this->buf[30]); - this->context->slice_offset = xine_xmalloc(sizeof(int)*SLICE_OFFSET_SIZE); + this->context->slice_offset = calloc(SLICE_OFFSET_SIZE, sizeof(int)); this->slice_offset_size = SLICE_OFFSET_SIZE; + this->context->extradata_size = this->size - 26; + if (this->context->extradata_size < 8) { + this->context->extradata_size= 8; + this->context->extradata = malloc(this->context->extradata_size + + FF_INPUT_BUFFER_PADDING_SIZE); + ((uint32_t *)this->context->extradata)[0] = 0; + if (codec_type == BUF_VIDEO_RV10) + ((uint32_t *)this->context->extradata)[1] = 0x10000000; + else + ((uint32_t *)this->context->extradata)[1] = 0x10003001; + } else { + this->context->extradata = malloc(this->context->extradata_size + + FF_INPUT_BUFFER_PADDING_SIZE); + memcpy(this->context->extradata, this->buf + 26, + this->context->extradata_size); + } + + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "ffmpeg_video_dec: buf size %d\n", this->size); + lprintf("w=%d, h=%d\n", this->bih.biWidth, this->bih.biHeight); break; @@ -969,8 +943,8 @@ static void ff_handle_special_buffer (ff_video_decoder_t *this, buf_element_t *b lprintf("BUF_SPECIAL_STSD_ATOM\n"); this->context->extradata_size = buf->decoder_info[2]; - this->context->extradata = xine_xmalloc(buf->decoder_info[2] + - FF_INPUT_BUFFER_PADDING_SIZE); + this->context->extradata = malloc(buf->decoder_info[2] + + FF_INPUT_BUFFER_PADDING_SIZE); memcpy(this->context->extradata, buf->decoder_info_ptr[2], buf->decoder_info[2]); @@ -979,8 +953,8 @@ static void ff_handle_special_buffer (ff_video_decoder_t *this, buf_element_t *b lprintf("BUF_SPECIAL_DECODER_CONFIG\n"); this->context->extradata_size = buf->decoder_info[2]; - this->context->extradata = xine_xmalloc(buf->decoder_info[2] + - FF_INPUT_BUFFER_PADDING_SIZE); + this->context->extradata = malloc(buf->decoder_info[2] + + FF_INPUT_BUFFER_PADDING_SIZE); memcpy(this->context->extradata, buf->decoder_info_ptr[2], buf->decoder_info[2]); @@ -1144,6 +1118,54 @@ static void ff_handle_mpeg12_buffer (ff_video_decoder_t *this, buf_element_t *bu } } +#ifdef AVCODEC_HAS_REORDERED_OPAQUE +static uint64_t ff_tag_pts(ff_video_decoder_t *this, uint64_t pts) +{ + return pts | this->pts_tag; +} + +static uint64_t ff_untag_pts(ff_video_decoder_t *this, uint64_t pts) +{ + if (this->pts_tag_mask == 0) + return pts; /* pts tagging inactive */ + + if (this->pts_tag != 0 && (pts & this->pts_tag_mask) != this->pts_tag) + return 0; /* reset pts if outdated while waiting for first pass (see below) */ + + return pts & ~this->pts_tag_mask; +} + +static void ff_check_pts_tagging(ff_video_decoder_t *this, uint64_t pts) +{ + if (this->pts_tag_mask == 0) + return; /* pts tagging inactive */ + if ((pts & this->pts_tag_mask) != this->pts_tag) { + this->pts_tag_stable_counter = 0; + return; /* pts still outdated */ + } + + /* the tag should be stable for 100 frames */ + this->pts_tag_stable_counter++; + + if (this->pts_tag != 0) { + if (this->pts_tag_stable_counter >= 100) { + /* first pass: reset pts_tag */ + this->pts_tag = 0; + this->pts_tag_stable_counter = 0; + } + } else if (pts == 0) + return; /* cannot detect second pass */ + else { + if (this->pts_tag_stable_counter >= 100) { + /* second pass: reset pts_tag_mask and pts_tag_counter */ + this->pts_tag_mask = 0; + this->pts_tag_counter = 0; + this->pts_tag_stable_counter = 0; + } + } +} + +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { uint8_t *chunk_buf = this->buf; AVRational avr00 = {0, 1}; @@ -1168,6 +1190,15 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { this->size = 0; } +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + if (this->size == 0) { + /* take over pts when we are about to buffer a frame */ + this->av_frame->reordered_opaque = ff_tag_pts(this, this->pts); + this->context->reordered_opaque = ff_tag_pts(this, this->pts); + this->pts = 0; + } +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ + /* data accumulation */ if (buf->size > 0) { if ((this->size == 0) && @@ -1220,6 +1251,12 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { len = avcodec_decode_video (this->context, this->av_frame, &got_picture, &chunk_buf[offset], this->size); + +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + /* reset consumed pts value */ + this->context->reordered_opaque = ff_tag_pts(this, 0); +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ + lprintf("consumed size: %d, got_picture: %d\n", len, got_picture); if ((len <= 0) || (len > this->size)) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, @@ -1235,12 +1272,27 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { ff_check_bufsize(this, this->size); memmove (this->buf, &chunk_buf[offset], this->size); chunk_buf = this->buf; + +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + /* take over pts for next access unit */ + this->av_frame->reordered_opaque = ff_tag_pts(this, this->pts); + this->context->reordered_opaque = ff_tag_pts(this, this->pts); + this->pts = 0; +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ } } } /* use externally provided video_step or fall back to stream's time_base otherwise */ - video_step_to_use = (this->video_step || !this->context->time_base.den) ? this->video_step : (int)(90000ll * this->context->time_base.num / this->context->time_base.den); + video_step_to_use = (this->video_step || !this->context->time_base.den) + ? this->video_step + : (int)(90000ll +#if LIBAVCODEC_VERSION_INT >= 0x341400 + * this->context->ticks_per_frame +#elif LIBAVCODEC_VERSION_INT >= 0x340000 +# warning Building without avcodec ticks_per_frame support; you should upgrade your libavcodec and recompile +#endif + * this->context->time_base.num / this->context->time_base.den); /* aspect ratio provided by ffmpeg, override previous setting */ if ((this->aspect_ratio_prio < 2) && @@ -1266,7 +1318,7 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { /* initialize the colorspace converter */ if (!this->cs_convert_init) { - if ((this->context->pix_fmt == PIX_FMT_RGBA32) || + if ((this->context->pix_fmt == PIX_FMT_RGB32) || (this->context->pix_fmt == PIX_FMT_RGB565) || (this->context->pix_fmt == PIX_FMT_RGB555) || (this->context->pix_fmt == PIX_FMT_BGR24) || @@ -1329,15 +1381,24 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { ff_convert_frame(this, img); } +#ifndef AVCODEC_HAS_REORDERED_OPAQUE img->pts = this->pts; this->pts = 0; +#else /* AVCODEC_HAS_REORDERED_OPAQUE */ + img->pts = ff_untag_pts(this, this->av_frame->reordered_opaque); + ff_check_pts_tagging(this, this->av_frame->reordered_opaque); /* only check for valid frames */ + this->av_frame->reordered_opaque = 0; +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ /* workaround for weird 120fps streams */ if( video_step_to_use == 750 ) { /* fallback to the VIDEO_PTS_MODE */ video_step_to_use = 0; } - + + if (video_step_to_use && video_step_to_use != this->reported_video_step) + _x_stream_info_set(this->stream, XINE_STREAM_INFO_FRAME_DURATION, (this->reported_video_step = video_step_to_use)); + if (this->av_frame->repeat_pict) img->duration = video_step_to_use * 3 / 2; else @@ -1370,8 +1431,13 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { this->output_format, VO_BOTH_FIELDS|this->frame_flags); /* set PTS to allow early syncing */ +#ifndef AVCODEC_HAS_REORDERED_OPAQUE img->pts = this->pts; this->pts = 0; +#else /* AVCODEC_HAS_REORDERED_OPAQUE */ + img->pts = ff_untag_pts(this, this->av_frame->reordered_opaque); + this->av_frame->reordered_opaque = 0; +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ img->duration = video_step_to_use; @@ -1396,7 +1462,7 @@ static void ff_decode_data (video_decoder_t *this_gen, buf_element_t *buf) { if (buf->decoder_flags & BUF_FLAG_FRAMERATE) { this->video_step = buf->decoder_info[0]; - _x_stream_info_set(this->stream, XINE_STREAM_INFO_FRAME_DURATION, this->video_step); + _x_stream_info_set(this->stream, XINE_STREAM_INFO_FRAME_DURATION, (this->reported_video_step = this->video_step)); } if (buf->decoder_flags & BUF_FLAG_PREVIEW) { @@ -1456,6 +1522,13 @@ static void ff_reset (video_decoder_t *this_gen) { if (this->is_mpeg12) mpeg_parser_reset(this->mpeg_parser); + +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + this->pts_tag_mask = 0; + this->pts_tag = 0; + this->pts_tag_counter = 0; + this->pts_tag_stable_counter = 0; +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ } static void ff_discontinuity (video_decoder_t *this_gen) { @@ -1463,6 +1536,41 @@ static void ff_discontinuity (video_decoder_t *this_gen) { lprintf ("ff_discontinuity\n"); this->pts = 0; + +#ifdef AVCODEC_HAS_REORDERED_OPAQUE + /* + * there is currently no way to reset all the pts which are stored in the decoder. + * therefore, we add a unique tag (generated from pts_tag_counter) to pts (see + * ff_tag_pts()) and wait for it to appear on returned frames. + * until then, any retrieved pts value will be reset to 0 (see ff_untag_pts()). + * when we see the tag returned, pts_tag will be reset to 0. from now on, any + * untagged pts value is valid already. + * when tag 0 appears too, there are no tags left in the decoder so pts_tag_mask + * and pts_tag_counter will be reset to 0 too (see ff_check_pts_tagging()). + */ + this->pts_tag_counter++; + this->pts_tag_mask = 0; + this->pts_tag = 0; + this->pts_tag_stable_counter = 0; + { + /* pts values typically don't use the uppermost bits. therefore we put the tag there */ + int counter_mask = 1; + int counter = 2 * this->pts_tag_counter + 1; /* always set the uppermost bit in tag_mask */ + uint64_t tag_mask = 0x8000000000000000ull; + while (this->pts_tag_counter >= counter_mask) + { + /* + * mirror the counter into the uppermost bits. this allows us to enlarge mask as + * necessary and while previous taggings can still be detected to be outdated. + */ + if (counter & counter_mask) + this->pts_tag |= tag_mask; + this->pts_tag_mask |= tag_mask; + tag_mask >>= 1; + counter_mask <<= 1; + } + } +#endif /* AVCODEC_HAS_REORDERED_OPAQUE */ } static void ff_dispose (video_decoder_t *this_gen) { @@ -1500,10 +1608,10 @@ static void ff_dispose (video_decoder_t *this_gen) { free_yuv_planes(&this->yuv); if( this->context ) - free( this->context ); + av_free( this->context ); if( this->av_frame ) - free( this->av_frame ); + av_free( this->av_frame ); if (this->buf) free(this->buf); @@ -1528,7 +1636,7 @@ static video_decoder_t *ff_video_open_plugin (video_decoder_class_t *class_gen, lprintf ("open_plugin\n"); - this = (ff_video_decoder_t *) xine_xmalloc (sizeof (ff_video_decoder_t)); + this = calloc(1, sizeof (ff_video_decoder_t)); this->video_decoder.decode_data = ff_decode_data; this->video_decoder.flush = ff_flush; @@ -1547,7 +1655,7 @@ static video_decoder_t *ff_video_open_plugin (video_decoder_class_t *class_gen, this->decoder_ok = 0; this->decoder_init_mode = 1; - this->buf = xine_xmalloc(VIDEOBUFSIZE + FF_INPUT_BUFFER_PADDING_SIZE); + this->buf = calloc(1, VIDEOBUFSIZE + FF_INPUT_BUFFER_PADDING_SIZE); this->bufsize = VIDEOBUFSIZE; this->is_mpeg12 = 0; @@ -1561,6 +1669,10 @@ static video_decoder_t *ff_video_open_plugin (video_decoder_class_t *class_gen, this->dr1_frames = xine_list_new(); +#ifdef LOG + this->debug_fmt = -1; +#endif + return &this->video_decoder; } @@ -1581,7 +1693,7 @@ void *init_video_plugin (xine_t *xine, void *data) { ff_video_class_t *this; config_values_t *config; - this = (ff_video_class_t *) xine_xmalloc (sizeof (ff_video_class_t)); + this = calloc(1, sizeof (ff_video_class_t)); this->decoder_class.open_plugin = ff_video_open_plugin; this->decoder_class.get_identifier = ff_video_get_identifier; @@ -1635,234 +1747,6 @@ void *init_video_plugin (xine_t *xine, void *data) { return this; } -static uint32_t supported_video_types[] = { - #ifdef CONFIG_MSMPEG4V1_DECODER - BUF_VIDEO_MSMPEG4_V1, - #endif - #ifdef CONFIG_MSMPEG4V2_DECODER - BUF_VIDEO_MSMPEG4_V2, - #endif - #ifdef CONFIG_MSMPEG4V3_DECODER - BUF_VIDEO_MSMPEG4_V3, - #endif - #ifdef CONFIG_WMV1_DECODER - BUF_VIDEO_WMV7, - #endif - #ifdef CONFIG_WMV2_DECODER - BUF_VIDEO_WMV8, - #endif - #ifdef CONFIG_WMV3_DECODER - BUF_VIDEO_WMV9, - #endif - #ifdef CONFIG_VC1_DECODER - BUF_VIDEO_VC1, - #endif - #ifdef CONFIG_MPEG4_DECODER - BUF_VIDEO_MPEG4, - #endif - #ifdef CONFIG_MPEG4_DECODER - BUF_VIDEO_XVID, - #endif - #ifdef CONFIG_MPEG4_DECODER - BUF_VIDEO_DIVX5, - #endif - #ifdef CONFIG_MPEG4_DECODER - BUF_VIDEO_3IVX, - #endif - #ifdef CONFIG_MJPEG_DECODER - BUF_VIDEO_JPEG, - #endif - #ifdef CONFIG_MJPEG_DECODER - BUF_VIDEO_MJPEG, - #endif - #ifdef CONFIG_MJPEGB_DECODER - BUF_VIDEO_MJPEG_B, - #endif - #ifdef CONFIG_H263I_DECODER - BUF_VIDEO_I263, - #endif - #ifdef CONFIG_H263_DECODER - BUF_VIDEO_H263, - #endif - #ifdef CONFIG_RV10_DECODER - BUF_VIDEO_RV10, - #endif - #ifdef CONFIG_RV20_DECODER - BUF_VIDEO_RV20, - #endif - #ifdef CONFIG_INDEO3_DECODER - BUF_VIDEO_IV31, - #endif - #ifdef CONFIG_INDEO3_DECODER - BUF_VIDEO_IV32, - #endif - #ifdef CONFIG_SVQ1_DECODER - BUF_VIDEO_SORENSON_V1, - #endif - #ifdef CONFIG_SVQ3_DECODER - BUF_VIDEO_SORENSON_V3, - #endif - #ifdef CONFIG_DVVIDEO_DECODER - BUF_VIDEO_DV, - #endif - #ifdef CONFIG_HUFFYUV_DECODER - BUF_VIDEO_HUFFYUV, - #endif - #ifdef CONFIG_VP3_DECODER - BUF_VIDEO_VP31, - #endif - #ifdef CONFIG_VP5_DECODER - BUF_VIDEO_VP5, - #endif - #ifdef CONFIG_VP6_DECODER - BUF_VIDEO_VP6, - BUF_VIDEO_VP6F, - #endif - #ifdef CONFIG_4XM_DECODER - BUF_VIDEO_4XM, - #endif - #ifdef CONFIG_CINEPAK_DECODER - BUF_VIDEO_CINEPAK, - #endif - #ifdef CONFIG_MSVIDEO1_DECODER - BUF_VIDEO_MSVC, - #endif - #ifdef CONFIG_MSRLE_DECODER - BUF_VIDEO_MSRLE, - #endif - #ifdef CONFIG_RPZA_DECODER - BUF_VIDEO_RPZA, - #endif - #ifdef CONFIG_CYUV_DECODER - BUF_VIDEO_CYUV, - #endif - #ifdef CONFIG_ROQ_DECODER - BUF_VIDEO_ROQ, - #endif - #ifdef CONFIG_IDCIN_DECODER - BUF_VIDEO_IDCIN, - #endif - #ifdef CONFIG_XAN_WC3_DECODER - BUF_VIDEO_WC3, - #endif - #ifdef CONFIG_WS_VQA_DECODER - BUF_VIDEO_VQA, - #endif - #ifdef CONFIG_INTERPLAY_VIDEO_DECODER - BUF_VIDEO_INTERPLAY, - #endif - #ifdef CONFIG_FLIC_DECODER - BUF_VIDEO_FLI, - #endif - #ifdef CONFIG_8BPS_DECODER - BUF_VIDEO_8BPS, - #endif - #ifdef CONFIG_SMC_DECODER - BUF_VIDEO_SMC, - #endif - #ifdef CONFIG_TRUEMOTION1_DECODER - BUF_VIDEO_DUCKTM1, - #endif - #ifdef CONFIG_TRUEMOTION2_DECODER - BUF_VIDEO_DUCKTM2, - #endif - #ifdef CONFIG_VMDVIDEO_DECODER - BUF_VIDEO_VMD, - #endif - #ifdef CONFIG_ZLIB_DECODER - BUF_VIDEO_ZLIB, - #endif - #ifdef CONFIG_MSZH_DECODER - BUF_VIDEO_MSZH, - #endif - #ifdef CONFIG_ASV1_DECODER - BUF_VIDEO_ASV1, - #endif - #ifdef CONFIG_ASV2_DECODER - BUF_VIDEO_ASV2, - #endif - #ifdef CONFIG_VCR1_DECODER - BUF_VIDEO_ATIVCR1, - #endif - #ifdef CONFIG_FLV_DECODER - BUF_VIDEO_FLV1, - #endif - #ifdef CONFIG_QTRLE_DECODER - BUF_VIDEO_QTRLE, - #endif - #ifdef CONFIG_H264_DECODER - BUF_VIDEO_H264, - #endif - #ifdef CONFIG_H261_DECODER - BUF_VIDEO_H261, - #endif - #ifdef CONFIG_AASC_DECODER - BUF_VIDEO_AASC, - #endif - #ifdef CONFIG_LOCO_DECODER - BUF_VIDEO_LOCO, - #endif - #ifdef CONFIG_QDRAW_DECODER - BUF_VIDEO_QDRW, - #endif - #ifdef CONFIG_QPEG_DECODER - BUF_VIDEO_QPEG, - #endif - #ifdef CONFIG_TSCC_DECODER - BUF_VIDEO_TSCC, - #endif - #ifdef CONFIG_ULTI_DECODER - BUF_VIDEO_ULTI, - #endif - #ifdef CONFIG_WNV1_DECODER - BUF_VIDEO_WNV1, - #endif - #ifdef CONFIG_VIXL_DECODER - BUF_VIDEO_XL, - #endif - #ifdef CONFIG_INDEO2_DECODER - BUF_VIDEO_RT21, - #endif - #ifdef CONFIG_FRAPS_DECODER - BUF_VIDEO_FPS1, - #endif - #ifdef CONFIG_MPEG1VIDEO_DECODER - BUF_VIDEO_MPEG, - #endif - #ifdef CONFIG_CSCD_DECODER - BUF_VIDEO_CSCD, - #endif - #ifdef CONFIG_AVS_DECODER - BUF_VIDEO_AVS, - #endif - #ifdef CONFIG_MMVIDEO_DECODER - BUF_VIDEO_ALGMM, - #endif - #ifdef CONFIG_ZMBV_DECODER - BUF_VIDEO_ZMBV, - #endif - #ifdef CONFIG_SMACKVIDEO_DECODER - BUF_VIDEO_SMACKER, - #endif - #ifdef CONFIG_NUV_DECODER - BUF_VIDEO_NUV, - #endif - #ifdef CONFIG_KMVC_DECODER - BUF_VIDEO_KMVC, - #endif - #ifdef CONFIG_FLASHSV_DECODER - BUF_VIDEO_FLASHSV, - #endif - #ifdef CONFIG_CAVS_DECODER - BUF_VIDEO_CAVS, - #endif - #ifdef CONFIG_VMNC_DECODER - BUF_VIDEO_VMNC, - #endif - BUF_VIDEO_THEORA_RAW, - 0 -}; - static uint32_t wmv8_video_types[] = { BUF_VIDEO_WMV8, 0 diff --git a/src/libffmpeg/ffmpeg_decoder.c b/src/combined/ffmpeg/ffmpeg_decoder.c index d0175184f..776e07df9 100644 --- a/src/libffmpeg/ffmpeg_decoder.c +++ b/src/combined/ffmpeg/ffmpeg_decoder.c @@ -22,7 +22,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" -#include "ffmpeg_config.h" +#include "../../libffmpeg/ffmpeg_config.h" #endif #include "xine_internal.h" diff --git a/src/libffmpeg/ffmpeg_decoder.h b/src/combined/ffmpeg/ffmpeg_decoder.h index 14788cf29..0f4ff1f1e 100644 --- a/src/libffmpeg/ffmpeg_decoder.h +++ b/src/combined/ffmpeg/ffmpeg_decoder.h @@ -25,10 +25,16 @@ #include "config.h" #endif -#ifdef HAVE_FFMPEG +#ifdef HAVE_FFMPEG_AVUTIL_H # include <avcodec.h> +#elif defined HAVE_FFMPEG +# include <libavcodec/avcodec.h> #else -# include "libavcodec/avcodec.h" +# include "../../libffmpeg/libavcodec/avcodec.h" +#endif + +#if LIBAVCODEC_VERSION_MAJOR > 51 +#define bits_per_sample bits_per_coded_sample #endif typedef struct ff_codec_s { diff --git a/src/libffmpeg/ffmpeg_encoder.c b/src/combined/ffmpeg/ffmpeg_encoder.c index c8a450b0d..84243a56f 100644 --- a/src/libffmpeg/ffmpeg_encoder.c +++ b/src/combined/ffmpeg/ffmpeg_encoder.c @@ -38,10 +38,12 @@ #include "video_out_dxr3.h" -#ifdef HAVE_FFMPEG +#ifdef HAVE_FFMPEG_AVUTIL_H # include <avcodec.h> +#elif defined HAVE_FFMPEG +# include <libavcodec/avcodec.h> #else -# include "libavcodec/avcodec.h" +# include "../../libffmpeg/libavcodec/avcodec.h" #endif /* buffer size for encoded mpeg1 stream; will hold one intra frame @@ -76,7 +78,7 @@ int dxr3_encoder_init(dxr3_driver_t *drv) avcodec_register_all(); lprintf("lavc init , version %x\n", avcodec_version()); - this = xine_xmalloc(sizeof(lavc_data_t)); + this = calloc(1, sizeof(lavc_data_t)); if (!this) return 0; this->encoder_data.type = ENC_LAVC; diff --git a/src/combined/ffmpeg/mkcodeclist.pl b/src/combined/ffmpeg/mkcodeclist.pl new file mode 100755 index 000000000..b4a10921a --- /dev/null +++ b/src/combined/ffmpeg/mkcodeclist.pl @@ -0,0 +1,95 @@ +#! /usr/bin/perl -w + +# Make codec lists for #inclusion by ff_*_decoder.c. +# Parameters: +# list of ffmpeg CODEC_ID_* (pre-processed, one per line) +# list of codecs recognised by xine-lib (see list for details) +# output file name, or "-" to generate a report on unhandled codecs + +my ($ffmpeg, $xine, $out) = @ARGV; +my $line; + +# Read in the ffmpeg codec IDs +my %codecs; +open LIST, "< $ffmpeg" or die $!; +$line = <LIST>; +while (defined $line) { + chomp $line; + $line =~ s/^CODEC_ID_//o; + $codecs{$line} = 0; + $line = <LIST>; +} +close LIST or die $!; + +# Read in the xine-lib codec IDs +my %config; +my @known; +my $type = 'audio'; # default type +my $Type = 'AUDIO'; +my ($a, $f, $t); +open LIST, "< $xine" or die $!; +while (defined ($line = <LIST>)) { + next if substr ($line, 0, 1) eq '#' or $line =~ /^\s*$/o; + chomp $line; + if (substr ($line, 0, 5) eq 'type=') { + # codec type; "FOO" in "BUF_FOO_BAR" + $type = substr ($line, 5); + $type =~ tr/A-Z/a-z/; + $Type = $type; + $Type =~ tr/a-z/A-Z/; + } elsif (substr ($line, 0, 7) eq 'config=') { + # "#ifdef CONFIG_FOO_DECODER" mappings + ($a, $f, $t) = split (/=/, $line, 3); + $config{$f} = $t; + } else { + # codec details + push @known, [split (/\s+/, $line, 3)]; + } +} +close LIST or die $!; + +# Look through the mappings. +# Mark what we can handle and report on what the installed ffmpeg can't +foreach $line (@known) { + if (defined $codecs{$line->[1]}) { + ++$codecs{$line->[1]}; + } else { + print "Ignored $line->[0] = $line->[1]\n"; + } +} + +my $w = ($out ne '-'); + +if ($w) { + # Write the C source code for the codec lists + open LIST, "> $out" or die $!; + print LIST "static const ff_codec_t ff_${type}_lookup[] = {\n" or die $!; + foreach $line (@known) { + next if $line->[0] eq '!'; + next unless defined $codecs{$line->[1]}; + print LIST " { BUF_${Type}_$line->[0], CODEC_ID_$line->[1], \"$line->[2] (ffmpeg)\" },\n" or die $!; + } + print LIST "};\n\nstatic uint32_t supported_${type}_types[] = {\n" or die $!; + foreach $line (@known) { + next if $line->[0] eq '!'; + next unless defined $codecs{$line->[1]}; + $a = $line->[1]; + $a = $config{$a} if defined $config{$a}; + if ($a eq '') { + print LIST " BUF_${Type}_$line->[0],\n" or die $!; + } else { + print LIST " #ifdef CONFIG_${a}_DECODER\n BUF_${Type}_$line->[0],\n #endif\n" or die $!; + } + } + print LIST " 0,\n};\n" or die $!; + close LIST or die $!; +} +else { + # Report on ffmpeg codecs which we don't handle + print "Unhandled $type codecs:\n"; + foreach $line (sort keys %codecs) { + print " $line\n" if $codecs{$line} == 0; + } +} + +exit 0; diff --git a/src/combined/ffmpeg/xine_audio.list b/src/combined/ffmpeg/xine_audio.list new file mode 100644 index 000000000..4b6932474 --- /dev/null +++ b/src/combined/ffmpeg/xine_audio.list @@ -0,0 +1,55 @@ +type=audio +config=MP3ADU= + +# xine-lib BUF_AUDIO_ ffmpeg CODEC_ID_ description or comment +# ("!"=ignore) (quote any "s) + +WMAV1 WMAV1 MS Windows Media Audio 1 +WMAV2 WMAV2 MS Windows Media Audio 2 +14_4 RA_144 Real 14.4 +28_8 RA_288 Real 28.8 +MPEG MP3 MP3 +MP3ADU MP3ADU MPEG-3 adu +MSADPCM ADPCM_MS MS ADPCM +QTIMAADPCM ADPCM_IMA_QT QT IMA ADPCM +MSIMAADPCM ADPCM_IMA_WAV MS IMA ADPCM +DK3ADPCM ADPCM_IMA_DK3 Duck DK3 ADPCM +DK4ADPCM ADPCM_IMA_DK4 Duck DK4 ADPCM +VQA_IMA ADPCM_IMA_WS Westwood Studios IMA +SMJPEG_IMA ADPCM_IMA_SMJPEG SMJPEG IMA +XA_ADPCM ADPCM_XA CD-ROM/XA ADPCM +4X_ADPCM ADPCM_4XM 4X ADPCM +EA_ADPCM ADPCM_EA Electronic Arts ADPCM +MULAW PCM_MULAW mu-law logarithmic PCM +ALAW PCM_ALAW A-law logarithmic PCM +ROQ ROQ_DPCM RoQ DPCM +INTERPLAY INTERPLAY_DPCM Interplay DPCM +MAC3 MACE3 MACE 3:1 +MAC6 MACE6 MACE 6:1 +XAN_DPCM XAN_DPCM Origin Xan DPCM +VMD VMDAUDIO Sierra VMD Audio +FLAC FLAC FLAC +SHORTEN SHORTEN Shorten +ALAC ALAC ALAC +QDESIGN2 QDM2 QDesign +COOK COOK RealAudio Cooker +TRUESPEECH TRUESPEECH TrueSpeech +TTA TTA True Audio Lossless +SMACKER SMACKAUDIO Smacker +FLVADPCM ADPCM_SWF Flash ADPCM +WAVPACK WAVPACK WavPack +AMR_NB AMR_NB AMR narrow band +AMR_WB AMR_WB AMR wide band + +# disabled codecs (ref. configure.ac) +! AAC +! AC3 +! ADPCM_ADX +! ADPCM_G726 +! DSICINAUDIO +! DVAUDIO +! IMC +! MP3ON4 +! SONIC +! SONIC_LS +! VORBIS diff --git a/src/combined/ffmpeg/xine_video.list b/src/combined/ffmpeg/xine_video.list new file mode 100644 index 000000000..a3c961d13 --- /dev/null +++ b/src/combined/ffmpeg/xine_video.list @@ -0,0 +1,109 @@ +type=video +config=VP6F=VP6 +config=FLV1=FLV +config=THEORA= + +# xine-lib BUF_VIDEO_ ffmpeg CODEC_ID_ description or comment +# ("!"=ignore) (quote any "s) + +MSMPEG4_V1 MSMPEG4V1 Microsoft MPEG-4 v1 +MSMPEG4_V2 MSMPEG4V2 Microsoft MPEG-4 v2 +MSMPEG4_V3 MSMPEG4V3 Microsoft MPEG-4 v3 +WMV7 WMV1 MS Windows Media Video 7 +WMV8 WMV2 MS Windows Media Video 8 +WMV9 WMV3 MS Windows Media Video 9 +VC1 VC1 MS Windows Media Video VC-1 +MPEG4 MPEG4 ISO MPEG-4 +XVID MPEG4 ISO MPEG-4 (XviD) +DIVX5 MPEG4 ISO MPEG-4 (DivX5) +3IVX MPEG4 ISO MPEG-4 (3ivx) +JPEG MJPEG Motion JPEG +MJPEG MJPEG Motion JPEG +MJPEG_B MJPEGB Motion JPEG B +I263 H263I ITU H.263 +H263 H263 H.263 +RV10 RV10 Real Video 1.0 +RV20 RV20 Real Video 2.0 +IV31 INDEO3 Indeo Video 3.1 +IV32 INDEO3 Indeo Video 3.2 +SORENSON_V1 SVQ1 Sorenson Video 1 +SORENSON_V3 SVQ3 Sorenson Video 3 +DV DVVIDEO DV +HUFFYUV HUFFYUV HuffYUV +VP31 VP3 On2 VP3.1 +VP5 VP5 On2 VP5 +VP6 VP6 On2 VP6 +VP6F VP6F On2 VP6 +4XM 4XM 4X Video +CINEPAK CINEPAK Cinepak +MSVC MSVIDEO1 Microsoft Video 1 +MSRLE MSRLE Microsoft RLE +RPZA RPZA Apple Quicktime Video/RPZA +CYUV CYUV Creative YUV +ROQ ROQ Id Software RoQ +IDCIN IDCIN Id Software CIN +WC3 XAN_WC3 Xan +VQA WS_VQA Westwood Studios VQA +INTERPLAY INTERPLAY_VIDEO Interplay MVE +FLI FLIC FLIC Video +8BPS 8BPS Planar RGB +SMC SMC Apple Quicktime Graphics/SMC +DUCKTM1 TRUEMOTION1 Duck TrueMotion v1 +DUCKTM2 TRUEMOTION2 Duck TrueMotion v2 +VMD VMDVIDEO Sierra VMD Video +ZLIB ZLIB ZLIB Video +MSZH MSZH MSZH Video +ASV1 ASV1 ASV v1 Video +ASV2 ASV2 ASV v2 Video +ATIVCR1 VCR1 ATI VCR-1 +FLV1 FLV1 Flash Video +QTRLE QTRLE Apple Quicktime Animation/RLE +H264 H264 H.264/AVC +H261 H261 H.261 +AASC AASC Autodesk Video +LOCO LOCO LOCO +QDRW QDRAW QuickDraw +QPEG QPEG Q-Team QPEG +TSCC TSCC TechSmith Video +ULTI ULTI IBM UltiMotion +WNV1 WNV1 Winnow Video +XL VIXL Miro/Pinnacle VideoXL +RT21 INDEO2 Indeo/RealTime 2 +FPS1 FRAPS Fraps +MPEG MPEG1VIDEO MPEG 1/2 +CSCD CSCD CamStudio +AVS AVS AVS +ALGMM MMVIDEO American Laser Games MM +ZMBV ZMBV Zip Motion Blocks Video +SMACKER SMACKVIDEO Smacker +NUV NUV NuppelVideo +KMVC KMVC Karl Morton's Video Codec +FLASHSV FLASHSV Flash Screen Video +CAVS CAVS Chinese AVS +VMNC VMNC VMware Screen Codec +THEORA_RAW THEORA Theora +SNOW SNOW Snow + +# disabled codecs (ref. configure.ac) +! BMP +! CLJR +! DSICINVIDEO +! FFV1 +! FFVHUFF +! GIF +! H263P +! JPEGLS +! LJPEG +! MDEC +! PAM +! PBM +! PGM +! PGMYUV +! PNG +! PPM +! RAWVIDEO +! SP5X +! TARGA +! TIERTEXSEQVIDEO +! TIFF +! XVID ⇒ MPEG4 diff --git a/src/demuxers/Makefile.am b/src/demuxers/Makefile.am index ffbfa0a8d..3bc1103ec 100644 --- a/src/demuxers/Makefile.am +++ b/src/demuxers/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CFLAGS = $(VISIBILITY_FLAG) @@ -70,10 +71,10 @@ xineplug_dmx_mpeg_pes_la_SOURCES = demux_mpeg_pes.c xineplug_dmx_mpeg_pes_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) xineplug_dmx_mpeg_ts_la_SOURCES = demux_ts.c -xineplug_dmx_mpeg_ts_la_LIBADD = $(XINE_LIB) +xineplug_dmx_mpeg_ts_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) xineplug_dmx_qt_la_SOURCES = demux_qt.c -xineplug_dmx_qt_la_LIBADD = $(XINE_LIB) $(ZLIB_LIBS) +xineplug_dmx_qt_la_LIBADD = $(XINE_LIB) $(ZLIB_LIBS) $(LTLIBINTL) xineplug_dmx_qt_la_CPPFLAGS = $(ZLIB_CPPFLAGS) xineplug_dmx_asf_la_SOURCES = demux_asf.c asfheader.c @@ -130,7 +131,7 @@ xineplug_dmx_nsv_la_SOURCES = demux_nsv.c xineplug_dmx_nsv_la_LIBADD = $(XINE_LIB) xineplug_dmx_matroska_la_SOURCES = demux_matroska.c ebml.c -xineplug_dmx_matroska_la_LIBADD = $(XINE_LIB) $(ZLIB_LIBS) +xineplug_dmx_matroska_la_LIBADD = $(XINE_LIB) $(ZLIB_LIBS) $(LTLIBINTL) xineplug_dmx_matroska_la_CPPFLAGS = $(ZLIB_CPPFLAGS) xineplug_dmx_matroska_la_CFLAGS = $(AM_CFLAGS) -fno-strict-aliasing @@ -141,4 +142,4 @@ xineplug_dmx_flv_la_SOURCES = demux_flv.c xineplug_dmx_flv_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) xineinclude_HEADERS = demux.h -noinst_HEADERS = asfheader.h qtpalette.h group_games.h group_audio.h id3.h ebml.h matroska.h iff.h flacutils.h +noinst_HEADERS = asfheader.h qtpalette.h group_games.h group_audio.h id3.h ebml.h matroska.h iff.h flacutils.h real_common.h diff --git a/src/demuxers/asfheader.c b/src/demuxers/asfheader.c index ea92f878b..e9a36fc29 100644 --- a/src/demuxers/asfheader.c +++ b/src/demuxers/asfheader.c @@ -142,9 +142,9 @@ static uint8_t *asf_reader_get_bytes(asf_reader_t *reader, size_t size) { static char *asf_reader_get_string(asf_reader_t *reader, size_t size, iconv_t cd) {
char *inbuf, *outbuf;
size_t inbytesleft, outbytesleft;
- char scratch[2048];
+ char scratch[2048];
- if ((reader->size - reader->pos) < size)
+ if ((size == 0) ||((reader->size - reader->pos) < size))
return NULL;
inbuf = (char *)reader->buffer + reader->pos;
@@ -399,7 +399,7 @@ static int asf_header_parse_stream_extended_properties(asf_header_t *header, uin if (asf_stream_extension->stream_name_count) {
asf_stream_extension->stream_names = malloc (asf_stream_extension->stream_name_count * sizeof(void*));
for (i = 0; i < asf_stream_extension->stream_name_count; i++) {
- uint16_t lang_index, length;
+ uint16_t lang_index, length = 0;
asf_reader_get_16(&reader, &lang_index);
asf_reader_get_16(&reader, &length);
asf_stream_extension->stream_names[i] = (char*)asf_reader_get_bytes(&reader, length); /* store them */
@@ -411,7 +411,7 @@ static int asf_header_parse_stream_extended_properties(asf_header_t *header, uin for (i = 0; i < asf_stream_extension->payload_extension_system_count; i++) {
GUID guid;
uint16_t data_size;
- uint32_t length;
+ uint32_t length = 0;
asf_reader_get_guid(&reader, &guid);
asf_reader_get_16(&reader, &data_size);
asf_reader_get_32(&reader, &length);
@@ -427,7 +427,7 @@ static int asf_header_parse_stream_extended_properties(asf_header_t *header, uin /* embeded stream properties */
if (asf_reader_get_size(&reader) >= 24) {
GUID guid;
- uint64_t object_length;
+ uint64_t object_length = 0;
asf_reader_get_guid(&reader, &guid);
asf_reader_get_64(&reader, &object_length);
@@ -490,8 +490,8 @@ static int asf_header_parse_stream_bitrate_properties(asf_header_t *header_pub, lprintf (" bitrate count: %d\n", bitrate_count);
for(i = 0; i < bitrate_count; i++) {
- uint16_t flags;
- uint32_t bitrate;
+ uint16_t flags = 0;
+ uint32_t bitrate = 0;
int stream_number;
uint8_t *bitrate_pointer;
@@ -511,6 +511,61 @@ static int asf_header_parse_stream_bitrate_properties(asf_header_t *header_pub, return 1;
}
+static int asf_header_parse_metadata(asf_header_t *header_pub, uint8_t *buffer, int buffer_len)
+{
+ asf_header_internal_t *header = (asf_header_internal_t *)header_pub;
+ asf_reader_t reader;
+ uint16_t i, records_count;
+ iconv_t iconv_cd;
+
+ if (buffer_len < 2)
+ return 0;
+
+ if ((iconv_cd = iconv_open ("UTF-8", "UCS-2LE")) == (iconv_t)-1)
+ return 0;
+
+ asf_reader_init(&reader, buffer, buffer_len);
+ asf_reader_get_16(&reader, &records_count);
+
+ for (i = 0; i < records_count; i++)
+ {
+ uint16_t index, stream, name_len = 0, data_type;
+ uint32_t data_len = 0;
+ int stream_id;
+
+ asf_reader_get_16 (&reader, &index);
+ asf_reader_get_16 (&reader, &stream);
+ stream &= 0x7f;
+ asf_reader_get_16 (&reader, &name_len);
+ asf_reader_get_16 (&reader, &data_type);
+ asf_reader_get_32 (&reader, &data_len);
+
+ stream_id = asf_header_get_stream_id (&header->pub, stream);
+
+ if (data_len >= 4)
+ {
+ char *name = asf_reader_get_string (&reader, name_len, iconv_cd);
+ if (name && !strcmp (name, "AspectRatioX"))
+ {
+ asf_reader_get_32 (&reader, &header->pub.aspect_ratios[stream_id].x);
+ data_len -= 4;
+ }
+ else if (name && !strcmp (name, "AspectRatioY"))
+ {
+ asf_reader_get_32 (&reader, &header->pub.aspect_ratios[stream_id].y);
+ data_len -= 4;
+ }
+ free (name);
+ asf_reader_skip (&reader, data_len);
+ }
+ else
+ asf_reader_skip (&reader, data_len + name_len);
+ }
+
+ iconv_close (iconv_cd);
+ return 1;
+}
+
static int asf_header_parse_header_extension(asf_header_t *header, uint8_t *buffer, int buffer_len) {
asf_reader_t reader;
@@ -533,7 +588,7 @@ static int asf_header_parse_header_extension(asf_header_t *header, uint8_t *buff GUID guid;
int object_id;
- uint64_t object_length, object_data_length;
+ uint64_t object_length = 0, object_data_length;
if (asf_reader_get_size(&reader) < 24) {
printf("invalid buffer size\n");
@@ -549,12 +604,14 @@ static int asf_header_parse_header_extension(asf_header_t *header, uint8_t *buff case GUID_EXTENDED_STREAM_PROPERTIES:
asf_header_parse_stream_extended_properties(header, asf_reader_get_buffer(&reader), object_data_length);
break;
+ case GUID_METADATA:
+ asf_header_parse_metadata(header, asf_reader_get_buffer(&reader), object_data_length);
+ break;
case GUID_ADVANCED_MUTUAL_EXCLUSION:
case GUID_GROUP_MUTUAL_EXCLUSION:
case GUID_STREAM_PRIORITIZATION:
case GUID_BANDWIDTH_SHARING:
case GUID_LANGUAGE_LIST:
- case GUID_METADATA:
case GUID_METADATA_LIBRARY:
case GUID_INDEX_PARAMETERS:
case GUID_MEDIA_OBJECT_INDEX_PARAMETERS:
@@ -581,10 +638,9 @@ static int asf_header_parse_content_description(asf_header_t *header_pub, uint8_ if (buffer_len < 10)
return 0;
- content = malloc(sizeof(asf_content_t));
+ content = calloc(1, sizeof(asf_content_t));
if (!content)
return 0;
- memset(content, 0, sizeof(asf_content_t));
asf_reader_init(&reader, buffer, buffer_len);
asf_reader_get_16(&reader, &title_length);
@@ -599,6 +655,12 @@ static int asf_header_parse_content_description(asf_header_t *header_pub, uint8_ content->description = asf_reader_get_string(&reader, description_length, header->iconv_cd);
content->rating = asf_reader_get_string(&reader, rating_length, header->iconv_cd);
+ lprintf("title: %d chars: \"%s\"\n", title_length, content->title);
+ lprintf("author: %d chars: \"%s\"\n", author_length, content->author);
+ lprintf("copyright: %d chars: \"%s\"\n", copyright_length, content->copyright);
+ lprintf("description: %d chars: \"%s\"\n", description_length, content->description);
+ lprintf("rating: %d chars: \"%s\"\n", rating_length, content->rating);
+
header->pub.content = content;
return 1;
}
@@ -611,10 +673,9 @@ asf_header_t *asf_header_new (uint8_t *buffer, int buffer_len) { uint32_t object_count;
uint16_t junk;
- asf_header = malloc(sizeof(asf_header_internal_t));
+ asf_header = calloc(1, sizeof(asf_header_internal_t));
if (!asf_header)
return NULL;
- memset(asf_header, 0, sizeof(asf_header_internal_t));
lprintf("parsing_asf_header\n");
if (buffer_len < 6) {
@@ -638,7 +699,7 @@ asf_header_t *asf_header_new (uint8_t *buffer, int buffer_len) { GUID guid;
int object_id;
- uint64_t object_length, object_data_length;
+ uint64_t object_length = 0, object_data_length;
if (asf_reader_get_size(&reader) < 24) {
printf("invalid buffer size\n");
@@ -697,10 +758,9 @@ asf_header_t *asf_header_new (uint8_t *buffer, int buffer_len) { }
if (!asf_header->pub.content) {
lprintf("no content object present\n");
- asf_header->pub.content = malloc(sizeof(asf_content_t));
+ asf_header->pub.content = calloc(1, sizeof(asf_content_t));
if (!asf_header->pub.content)
goto exit_error;
- memset(asf_header->pub.content, 0, sizeof(asf_content_t));
}
return &asf_header->pub;
diff --git a/src/demuxers/asfheader.h b/src/demuxers/asfheader.h index 4bd13ab3f..265f0e643 100644 --- a/src/demuxers/asfheader.h +++ b/src/demuxers/asfheader.h @@ -320,6 +320,7 @@ struct asf_header_s { asf_stream_t *streams[ASF_MAX_NUM_STREAMS];
asf_stream_extension_t *stream_extensions[ASF_MAX_NUM_STREAMS];
uint32_t bitrates[ASF_MAX_NUM_STREAMS];
+ struct { uint32_t x, y; } aspect_ratios[ASF_MAX_NUM_STREAMS];
};
struct asf_file_s {
@@ -389,7 +390,7 @@ struct asf_stream_extension_s { int asf_find_object_id (GUID *g);
void asf_get_guid (uint8_t *buffer, GUID *value);
-asf_header_t *asf_header_new (uint8_t *buffer, int buffer_len);
+asf_header_t *asf_header_new (uint8_t *buffer, int buffer_len) XINE_MALLOC;
void asf_header_choose_streams (asf_header_t *header, uint32_t bandwidth,
int *video_id, int *audio_id);
void asf_header_disable_streams (asf_header_t *header,
diff --git a/src/demuxers/demux_4xm.c b/src/demuxers/demux_4xm.c index 24aee1ac4..397a271b8 100644 --- a/src/demuxers/demux_4xm.c +++ b/src/demuxers/demux_4xm.c @@ -125,25 +125,15 @@ static float get_le_float(unsigned char *buffer) * This function is called from the _open() function of this demuxer. * It returns 1 if 4xm file was opened successfully. */ static int open_fourxm_file(demux_fourxm_t *fourxm) { - unsigned char preview[12]; - int header_size; - unsigned char *header; - int i; - unsigned int fourcc_tag; - unsigned int size; - unsigned int current_track; - unsigned int audio_type; - unsigned int total_frames; - float fps; /* the file signature will be in the first 12 bytes */ if (_x_demux_read_header(fourxm->input, preview, 12) != 12) return 0; /* check for the signature tags */ - if ((_X_LE_32(&preview[0]) != RIFF_TAG) || - (_X_LE_32(&preview[8]) != _4XMV_TAG)) + if (!_x_is_fourcc(&preview[0], "RIFF") || + !_x_is_fourcc(&preview[8], "4XMV")) return 0; /* file is qualified; skip over the header bytes in the stream */ @@ -152,14 +142,14 @@ static int open_fourxm_file(demux_fourxm_t *fourxm) { /* fetch the LIST-HEAD header */ if (fourxm->input->read(fourxm->input, preview, 12) != 12) return 0; - if ((_X_LE_32(&preview[0]) != LIST_TAG) || - (_X_LE_32(&preview[8]) != HEAD_TAG)) + if (!_x_is_fourcc(&preview[0], "LIST") || + !_x_is_fourcc(&preview[8], "HEAD") ) return 0; /* read the whole header */ - header_size = _X_LE_32(&preview[4]) - 4; - header = xine_xmalloc(header_size); - if (fourxm->input->read(fourxm->input, header, header_size) != header_size) { + const uint32_t header_size = _X_LE_32(&preview[4]) - 4; + uint8_t *const header = malloc(header_size); + if (!header || fourxm->input->read(fourxm->input, header, header_size) != header_size) { free(header); return 0; } @@ -171,12 +161,13 @@ static int open_fourxm_file(demux_fourxm_t *fourxm) { fourxm->video_pts_inc = 0; /* take the lazy approach and search for any and all vtrk and strk chunks */ + int i; for (i = 0; i < header_size - 8; i++) { - fourcc_tag = _X_LE_32(&header[i]); - size = _X_LE_32(&header[i + 4]); + const uint32_t fourcc_tag = _X_LE_32(&header[i]); + const uint32_t size = _X_LE_32(&header[i + 4]); if (fourcc_tag == std__TAG) { - fps = get_le_float(&header[i + 12]); + const float fps = get_le_float(&header[i + 12]); fourxm->video_pts_inc = (int64_t)(90000.0 / fps); } else if (fourcc_tag == vtrk_TAG) { /* check that there is enough data */ @@ -184,7 +175,7 @@ static int open_fourxm_file(demux_fourxm_t *fourxm) { free(header); return 0; } - total_frames = _X_LE_32(&header[i + 24]); + const uint32_t total_frames = _X_LE_32(&header[i + 24]); fourxm->duration_in_ms = total_frames; fourxm->duration_in_ms *= fourxm->video_pts_inc; fourxm->duration_in_ms /= 90000; @@ -198,9 +189,13 @@ static int open_fourxm_file(demux_fourxm_t *fourxm) { free(header); return 0; } - current_track = _X_LE_32(&header[i + 8]); - if (current_track + 1 > fourxm->track_count) { + const uint32_t current_track = _X_LE_32(&header[i + 8]); + if (current_track >= fourxm->track_count) { fourxm->track_count = current_track + 1; + if (!fourxm->track_count || fourxm->track_count >= UINT_MAX / sizeof(audio_track_t)) { + free(header); + return 0; + } fourxm->tracks = realloc(fourxm->tracks, fourxm->track_count * sizeof(audio_track_t)); if (!fourxm->tracks) { @@ -212,7 +207,7 @@ static int open_fourxm_file(demux_fourxm_t *fourxm) { fourxm->tracks[current_track].channels = _X_LE_32(&header[i + 36]); fourxm->tracks[current_track].sample_rate = _X_LE_32(&header[i + 40]); fourxm->tracks[current_track].bits = _X_LE_32(&header[i + 44]); - audio_type = _X_LE_32(&header[i + 12]); + const uint32_t audio_type = _X_LE_32(&header[i + 12]); if (audio_type == 0) fourxm->tracks[current_track].audio_type = BUF_AUDIO_LPCM_LE; else if (audio_type == 1) @@ -239,20 +234,18 @@ static int demux_fourxm_send_chunk(demux_plugin_t *this_gen) { demux_fourxm_t *this = (demux_fourxm_t *) this_gen; buf_element_t *buf = NULL; - unsigned int fourcc_tag; - unsigned int size; - unsigned char header[8]; unsigned int remaining_bytes; unsigned int current_track; /* read the next header */ + uint8_t header[8]; if (this->input->read(this->input, header, 8) != 8) { this->status = DEMUX_FINISHED; return this->status; } - fourcc_tag = _X_LE_32(&header[0]); - size = _X_LE_32(&header[4]); + const uint32_t fourcc_tag = _X_LE_32(&header[0]); + const uint32_t size = _X_LE_32(&header[4]); switch (fourcc_tag) { @@ -472,7 +465,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_fourxm_t *this; - this = xine_xmalloc (sizeof (demux_fourxm_t)); + this = calloc(1, sizeof(demux_fourxm_t)); this->stream = stream; this->input = input; @@ -491,10 +484,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str switch (stream->content_detection_method) { case METHOD_BY_EXTENSION: { - const char *extensions, *mrl; - - mrl = input->get_mrl (input); - extensions = class_gen->get_extensions (class_gen); + const char *const mrl = input->get_mrl (input); + const char *const extensions = class_gen->get_extensions (class_gen); if (!_x_demux_check_extension (mrl, extensions)) { free (this); @@ -546,7 +537,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_fourxm_init_plugin (xine_t *xine, void *data) { demux_fourxm_class_t *this; - this = xine_xmalloc (sizeof (demux_fourxm_class_t)); + this = calloc(1, sizeof(demux_fourxm_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_aac.c b/src/demuxers/demux_aac.c index d80413f83..68a684ffa 100644 --- a/src/demuxers/demux_aac.c +++ b/src/demuxers/demux_aac.c @@ -95,8 +95,7 @@ static int open_aac_file(demux_aac_t *this) { return 0; /* Check for an ADIF header - should be at the start of the file */ - if ((peak[0] == 'A') && (peak[1] == 'D') && - (peak[2] == 'I') && (peak[3] == 'F')) { + if (_x_is_fourcc(peak, "AIDF")) { lprintf("found ADIF header\n"); return 1; } @@ -134,9 +133,7 @@ static int open_aac_file(demux_aac_t *this) { if ((frame_size > 0) && (data_start+frame_size < MAX_PREVIEW_SIZE-1) && /* first 28 bits must be identical */ - (peak[data_start ] ==peak[data_start+frame_size ]) && - (peak[data_start+1] ==peak[data_start+frame_size+1]) && - (peak[data_start+2] ==peak[data_start+frame_size+2]) && + memcmp(&peak[data_start], &peak[data_start+frame_size], 4) == 0 && (peak[data_start+3]>>4==peak[data_start+frame_size+3]>>4)) { lprintf("found second ADTS header\n"); @@ -176,7 +173,7 @@ static int demux_aac_send_chunk(demux_plugin_t *this_gen) { buf->extra_info->input_time = (8*current_pos) / (bitrate/1000); bytes_read = this->input->read(this->input, buf->content, buf->max_size); - if (bytes_read == 0) { + if (bytes_read <= 0) { buf->free_buffer(buf); this->status = DEMUX_FINISHED; return this->status; @@ -262,7 +259,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_aac_t *this; - this = xine_xmalloc (sizeof (demux_aac_t)); + this = calloc(1, sizeof(demux_aac_t)); this->stream = stream; this->input = input; @@ -333,7 +330,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_aac_init_plugin (xine_t *xine, void *data) { demux_aac_class_t *this; - this = xine_xmalloc (sizeof (demux_aac_class_t)); + this = calloc(1, sizeof(demux_aac_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_ac3.c b/src/demuxers/demux_ac3.c index c0fae275b..711bb0b45 100644 --- a/src/demuxers/demux_ac3.c +++ b/src/demuxers/demux_ac3.c @@ -37,6 +37,9 @@ #ifdef HAVE_ALLOCA_H #include <alloca.h> #endif +#ifdef HAVE_MALLOC_H +#include <malloc.h> +#endif #define LOG_MODULE "demux_ac3" #define LOG_VERBOSE @@ -308,13 +311,7 @@ static int demux_ac3_send_chunk (demux_plugin_t *this_gen) { this->frame_size); } - if (buf->size == 0) { - buf->free_buffer(buf); - this->status = DEMUX_FINISHED; - return this->status; - } - - if (buf->size == 0) { + if (buf->size <= 0) { buf->free_buffer(buf); this->status = DEMUX_FINISHED; return this->status; @@ -417,7 +414,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_ac3_t *this; - this = xine_xmalloc (sizeof (demux_ac3_t)); + this = calloc(1, sizeof(demux_ac3_t)); this->stream = stream; this->input = input; @@ -491,7 +488,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_ac3_init_plugin (xine_t *xine, void *data) { demux_ac3_class_t *this; - this = xine_xmalloc (sizeof (demux_ac3_class_t)); + this = calloc(1, sizeof(demux_ac3_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_aiff.c b/src/demuxers/demux_aiff.c index 3f2d0df11..273992f64 100644 --- a/src/demuxers/demux_aiff.c +++ b/src/demuxers/demux_aiff.c @@ -46,6 +46,10 @@ #define COMM_TAG FOURCC_TAG('C', 'O', 'M', 'M') #define SSND_TAG FOURCC_TAG('S', 'S', 'N', 'D') #define APCM_TAG FOURCC_TAG('A', 'P', 'C', 'M') +#define NAME_TAG FOURCC_TAG('N', 'A', 'M', 'E') +#define AUTH_TAG FOURCC_TAG('A', 'U', 'T', 'H') +#define COPY_TAG FOURCC_TAG('(', 'c', ')', ' ') +#define ANNO_TAG FOURCC_TAG('A', 'N', 'N', 'O') #define PREAMBLE_SIZE 8 #define AIFF_SIGNATURE_SIZE 12 @@ -80,6 +84,24 @@ typedef struct { demux_class_t demux_class; } demux_aiff_class_t; +/* converts IEEE 80bit extended into int, based on FFMPEG code */ +static int extended_to_int(const unsigned char p[10]) +{ + uint64_t m = 0; + int e, i; + + for (i = 0; i < 8; i++) + m = (m<<8) + p[2+i];; + e = (((int)p[0]&0x7f)<<8) | p[1]; + if (e == 0x7fff && m) + return 0.0/0.0; + e -= 16383 + 63; + + if (p[0]&0x80) + m= -m; + return (int) ldexp(m, e); +} + /* returns 1 if the AIFF file was opened successfully, 0 otherwise */ static int open_aiff_file(demux_aiff_t *this) { @@ -87,13 +109,14 @@ static int open_aiff_file(demux_aiff_t *this) { unsigned char preamble[PREAMBLE_SIZE]; unsigned int chunk_type; unsigned int chunk_size; + unsigned char extended_sample_rate[10]; if (_x_demux_read_header(this->input, signature, AIFF_SIGNATURE_SIZE) != AIFF_SIGNATURE_SIZE) return 0; /* check the signature */ - if ((_X_BE_32(&signature[0]) != FORM_TAG) || - (_X_BE_32(&signature[8]) != AIFF_TAG)) + if( !_x_is_fourcc(&signature[0], "FORM") || + !_x_is_fourcc(&signature[8], "AIFF") ) return 0; /* file is qualified; skip over the header bytes in the stream */ @@ -135,7 +158,8 @@ static int open_aiff_file(demux_aiff_t *this) { this->audio_channels = _X_BE_16(&buffer[0]); this->audio_frames = _X_BE_32(&buffer[2]); this->audio_bits = _X_BE_16(&buffer[6]); - this->audio_sample_rate = _X_BE_16(&buffer[0x0A]); + memcpy(&extended_sample_rate, &buffer[8], sizeof(extended_sample_rate)); + this->audio_sample_rate = extended_to_int(extended_sample_rate); this->audio_bytes_per_second = this->audio_channels * (this->audio_bits / 8) * this->audio_sample_rate; @@ -150,11 +174,18 @@ static int open_aiff_file(demux_aiff_t *this) { (this->audio_bits / 8); this->running_time = (this->audio_frames / this->audio_sample_rate) * 1000; - this->audio_block_align = PCM_BLOCK_ALIGN; + /* we should send only complete frames to decoder, as it + * doesn't handle underconsumption yet */ + this->audio_block_align = PCM_BLOCK_ALIGN - PCM_BLOCK_ALIGN % (this->audio_bits / 8 * this->audio_channels); break; } else { + /* if chunk contains metadata, it will be word-aligned (as seen at sox and ffmpeg) */ + if ( ((chunk_type == NAME_TAG) || (chunk_type==AUTH_TAG) || + (chunk_type == COPY_TAG) || (chunk_type==ANNO_TAG)) && (chunk_size&1)) + chunk_size++; + /* unrecognized; skip it */ this->input->seek(this->input, chunk_size, SEEK_CUR); } @@ -338,7 +369,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_aiff_t *this; - this = xine_xmalloc (sizeof (demux_aiff_t)); + this = calloc(1, sizeof(demux_aiff_t)); this->stream = stream; this->input = input; @@ -414,7 +445,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_aiff_init_plugin (xine_t *xine, void *data) { demux_aiff_class_t *this; - this = xine_xmalloc (sizeof (demux_aiff_class_t)); + this = calloc(1, sizeof(demux_aiff_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_asf.c b/src/demuxers/demux_asf.c index 9aab59977..d79782026 100644 --- a/src/demuxers/demux_asf.c +++ b/src/demuxers/demux_asf.c @@ -70,6 +70,7 @@ #define ASF_MODE_HTTP_REF 2 #define ASF_MODE_ASF_REF 3 #define ASF_MODE_ENCRYPTED_CONTENT 4 +#define ASF_MODE_NO_CONTENT 5 typedef struct { int seq; @@ -351,6 +352,14 @@ static void asf_send_video_header (demux_asf_t *this, int stream) { BUF_FLAG_FRAME_END; buf->decoder_info[0] = 0; + + if (this->asf_header->aspect_ratios[stream].x && this->asf_header->aspect_ratios[stream].y) + { + buf->decoder_flags |= BUF_FLAG_ASPECT; + buf->decoder_info[1] = bih->biWidth * this->asf_header->aspect_ratios[stream].x; + buf->decoder_info[2] = bih->biHeight * this->asf_header->aspect_ratios[stream].y; + } + buf->size = asf_stream->private_data_length - 11; memcpy (buf->content, bih, buf->size); buf->type = this->streams[stream].buf_type; @@ -379,10 +388,21 @@ static int asf_read_header (demux_asf_t *this) { char *asf_header_buffer = NULL; asf_header_len = get_le64(this); - asf_header_buffer = alloca(asf_header_len); + if (asf_header_len > 4 * 1024 * 1024) + { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_asf: asf_read_header: overly-large header? (%"PRIu64" bytes)\n", + asf_header_len); + return 0; + } + + asf_header_buffer = malloc (asf_header_len); if (this->input->read (this->input, asf_header_buffer, asf_header_len) != asf_header_len) + { + free (asf_header_buffer); return 0; + } /* delete previous header */ if (this->asf_header) { @@ -395,7 +415,11 @@ static int asf_read_header (demux_asf_t *this) { */ this->asf_header = asf_header_new(asf_header_buffer, asf_header_len); if (!this->asf_header) + { + free (asf_header_buffer); return 0; + } + free (asf_header_buffer); lprintf("asf header parsing ok\n"); @@ -420,6 +444,17 @@ static int asf_read_header (demux_asf_t *this) { asf_stream_t *asf_stream = this->asf_header->streams[i]; asf_demux_stream_t *demux_stream = &this->streams[i]; + if (!asf_stream) { + if (this->mode != ASF_MODE_NO_CONTENT) { + xine_log(this->stream->xine, XINE_LOG_MSG, + _("demux_asf: warning: A stream appears to be missing.\n")); + _x_message(this->stream, XINE_MSG_READ_ERROR, + _("Media stream missing?"), NULL); + this->mode = ASF_MODE_NO_CONTENT; + } + return 0; + } + if (asf_stream->encrypted_flag) { if (this->mode != ASF_MODE_ENCRYPTED_CONTENT) { xine_log(this->stream->xine, XINE_LOG_MSG, @@ -703,7 +738,10 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_demux_stream_t *str bufsize = stream->fifo->buffer_pool_buf_size; buf = stream->fifo->buffer_pool_alloc (stream->fifo); - this->input->read (this->input, buf->content, bufsize); + if (this->input->read (this->input, buf->content, bufsize) != bufsize) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_asf: input buffer starved\n"); + return ; + } lprintf ("data: %d %d %d %d\n", buf->content[0], buf->content[1], buf->content[2], buf->content[3]); @@ -723,6 +761,9 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_demux_stream_t *str buf->size = bufsize; timestamp = 0; + if (stream->frag_offset == 0) + buf->decoder_flags |= BUF_FLAG_FRAME_START; + stream->frag_offset += bufsize; frag_len -= bufsize; @@ -733,10 +774,6 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_demux_stream_t *str else check_newpts (this, buf->pts, PTS_AUDIO, package_done); - - if (frag_offset == 0) - buf->decoder_flags |= BUF_FLAG_FRAME_START; - /* test if whole packet read */ if (package_done) { buf->decoder_flags |= BUF_FLAG_FRAME_END; @@ -783,7 +820,10 @@ static void asf_send_buffer_defrag (demux_asf_t *this, asf_demux_stream_t *strea if( stream->frag_offset + frag_len > DEFRAG_BUFSIZE ) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_asf: buffer overflow on defrag!\n"); } else { - this->input->read (this->input, &stream->buffer[stream->frag_offset], frag_len); + if (this->input->read (this->input, &stream->buffer[stream->frag_offset], frag_len) != frag_len) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_asf: input buffer starved\n"); + return ; + } stream->frag_offset += frag_len; } @@ -1657,6 +1697,7 @@ static int demux_asf_send_chunk (demux_plugin_t *this_gen) { return demux_asf_parse_asf_references(this); case ASF_MODE_ENCRYPTED_CONTENT: + case ASF_MODE_NO_CONTENT: this->status = DEMUX_FINISHED; return this->status; @@ -2059,7 +2100,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, return NULL; } - this = xine_xmalloc (sizeof (demux_asf_t)); + this = calloc(1, sizeof(demux_asf_t)); this->stream = stream; this->input = input; @@ -2134,7 +2175,7 @@ static void *init_class (xine_t *xine, void *data) { demux_asf_class_t *this; - this = xine_xmalloc (sizeof (demux_asf_class_t)); + this = calloc(1, sizeof(demux_asf_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/demuxers/demux_aud.c b/src/demuxers/demux_aud.c index a6f88ff48..7730de1fa 100644 --- a/src/demuxers/demux_aud.c +++ b/src/demuxers/demux_aud.c @@ -143,7 +143,7 @@ static int demux_aud_send_chunk(demux_plugin_t *this_gen) { } /* validate the chunk */ - if (_X_LE_32(&chunk_preamble[4]) != 0x0000DEAF) { + if (!_x_is_fourcc(&chunk_preamble[4], "\xAF\xDE\x00\x00")) { this->status = DEMUX_FINISHED; return this->status; } @@ -270,7 +270,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_aud_t *this; - this = xine_xmalloc (sizeof (demux_aud_t)); + this = calloc(1, sizeof(demux_aud_t)); this->stream = stream; this->input = input; @@ -343,7 +343,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_aud_init_plugin (xine_t *xine, void *data) { demux_aud_class_t *this; - this = xine_xmalloc (sizeof (demux_aud_class_t)); + this = calloc(1, sizeof(demux_aud_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_avi.c b/src/demuxers/demux_avi.c index 6bb0b289c..0ab3448bb 100644 --- a/src/demuxers/demux_avi.c +++ b/src/demuxers/demux_avi.c @@ -317,6 +317,8 @@ typedef struct { getIndex==0, but an operation has been performed that needs an index */ +#define AVI_ERR_BAD_SIZE 14 /* A chunk has an invalid size */ + #define AVI_HEADER_UNKNOWN -1 #define AVI_HEADER_AUDIO 0 #define AVI_HEADER_VIDEO 1 @@ -719,7 +721,7 @@ static void reset_idx(demux_avi_t *this, avi_t *AVI) { } } -static avi_t *AVI_init(demux_avi_t *this) { +static avi_t *XINE_MALLOC AVI_init(demux_avi_t *this) { avi_t *AVI; int i, j, idx_type; @@ -739,7 +741,7 @@ static avi_t *AVI_init(demux_avi_t *this) { /* Create avi_t structure */ lprintf("start\n"); - AVI = (avi_t *) xine_xmalloc(sizeof(avi_t)); + AVI = (avi_t *) calloc(1, sizeof(avi_t)); if(AVI==NULL) { this->AVI_errno = AVI_ERR_NO_MEM; return 0; @@ -780,7 +782,7 @@ static avi_t *AVI_init(demux_avi_t *this) { lprintf("chunk: %c%c%c%c, size: %" PRId64 "\n", data[0], data[1], data[2], data[3], (int64_t)n); - if((strncasecmp(data,"LIST",4) == 0) && (n >= 4)) { + if (n >= 4 && strncasecmp(data,"LIST",4) == 0) { if( this->input->read(this->input, data,4) != 4 ) ERR_EXIT(AVI_ERR_READ); n -= 4; @@ -790,7 +792,7 @@ static avi_t *AVI_init(demux_avi_t *this) { if(strncasecmp(data,"hdrl",4) == 0) { hdrl_len = n; - hdrl_data = (unsigned char *) xine_xmalloc(n); + hdrl_data = (unsigned char *) malloc(n); if(hdrl_data==0) ERR_EXIT(AVI_ERR_NO_MEM); if (this->input->read(this->input, hdrl_data,n) != n ) @@ -812,9 +814,8 @@ static avi_t *AVI_init(demux_avi_t *this) { break if this is not the case */ AVI->n_idx = AVI->max_idx = n / 16; - if (AVI->idx) - free(AVI->idx); /* On the off chance there are multiple index chunks */ - AVI->idx = (unsigned char((*)[16])) xine_xmalloc(n); + free(AVI->idx); /* On the off chance there are multiple index chunks */ + AVI->idx = (unsigned char((*)[16])) malloc(n); if (AVI->idx == 0) ERR_EXIT(AVI_ERR_NO_MEM); @@ -836,6 +837,8 @@ static avi_t *AVI_init(demux_avi_t *this) { /* Interpret the header list */ for (i = 0; i < hdrl_len;) { + const int old_i = i; + /* List tags are completly ignored */ lprintf("tag: %c%c%c%c\n", hdrl_data[i], hdrl_data[i+1], hdrl_data[i+2], hdrl_data[i+3]); @@ -877,12 +880,11 @@ static avi_t *AVI_init(demux_avi_t *this) { } else if (strncasecmp (hdrl_data+i,"auds",4) ==0 /* && ! auds_strh_seen*/) { if(AVI->n_audio < MAX_AUDIO_STREAMS) { - avi_audio_t *a = (avi_audio_t *) xine_xmalloc(sizeof(avi_audio_t)); + avi_audio_t *a = (avi_audio_t *) calloc(1, sizeof(avi_audio_t)); if(a==NULL) { this->AVI_errno = AVI_ERR_NO_MEM; return 0; } - memset((void *)a,0,sizeof(avi_audio_t)); AVI->audio[AVI->n_audio] = a; a->audio_strn = num_stream; @@ -922,7 +924,7 @@ static avi_t *AVI_init(demux_avi_t *this) { if(lasttag == 1) { /* lprintf ("size : %d\n",sizeof(AVI->bih)); */ AVI->bih = (xine_bmiheader *) - xine_xmalloc((n < sizeof(xine_bmiheader)) ? sizeof(xine_bmiheader) : n); + malloc((n < sizeof(xine_bmiheader)) ? sizeof(xine_bmiheader) : n); if(AVI->bih == NULL) { this->AVI_errno = AVI_ERR_NO_MEM; return 0; @@ -973,6 +975,10 @@ static avi_t *AVI_init(demux_avi_t *this) { xine_waveformatex *wavex; wavex = (xine_waveformatex *)malloc(n); + if (!wavex) { + this->AVI_errno = AVI_ERR_NO_MEM; + return 0; + } memcpy((void *)wavex, hdrl_data+i, n); _x_waveformatex_le2me( wavex ); @@ -1079,6 +1085,8 @@ static avi_t *AVI_init(demux_avi_t *this) { lasttag = 0; } i += n; + if (i <= old_i) + ERR_EXIT(AVI_ERR_BAD_SIZE); } if( hdrl_data ) @@ -1237,6 +1245,9 @@ static avi_t *AVI_init(demux_avi_t *this) { /* read from file */ chunk_start = en = malloc (AVI->video_superindex->aIndex[j].dwSize+hdrl_len); + if (!chunk_start) + ERR_EXIT(AVI_ERR_NO_MEM); + if (this->input->seek(this->input, AVI->video_superindex->aIndex[j].qwOffset, SEEK_SET) == (off_t)-1) { lprintf("cannot seek to 0x%" PRIx64 "\n", AVI->video_superindex->aIndex[j].qwOffset); free(chunk_start); @@ -1308,6 +1319,9 @@ static avi_t *AVI_init(demux_avi_t *this) { /* read from file */ chunk_start = en = malloc (audio->audio_superindex->aIndex[j].dwSize+hdrl_len); + if (!chunk_start) + ERR_EXIT(AVI_ERR_NO_MEM); + if (this->input->seek(this->input, audio->audio_superindex->aIndex[j].qwOffset, SEEK_SET) == (off_t)-1) { lprintf("cannot seek to 0x%" PRIx64 "\n", audio->audio_superindex->aIndex[j].qwOffset); free(chunk_start); @@ -2271,7 +2285,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_avi_t)); + this = calloc(1, sizeof(demux_avi_t)); this->stream = stream; this->input = input; @@ -2337,7 +2351,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_class (xine_t *xine, void *data) { demux_avi_class_t *this; - this = xine_xmalloc (sizeof (demux_avi_class_t)); + this = calloc(1, sizeof(demux_avi_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_cdda.c b/src/demuxers/demux_cdda.c index 0f34a7cec..8e9ad3679 100644 --- a/src/demuxers/demux_cdda.c +++ b/src/demuxers/demux_cdda.c @@ -187,7 +187,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_cdda_t *this; - this = xine_xmalloc (sizeof (demux_cdda_t)); + this = calloc(1, sizeof(demux_cdda_t)); this->stream = stream; this->input = input; @@ -250,7 +250,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_cdda_init_plugin (xine_t *xine, void *data) { demux_cdda_class_t *this; - this = xine_xmalloc (sizeof (demux_cdda_class_t)); + this = calloc(1, sizeof(demux_cdda_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_dts.c b/src/demuxers/demux_dts.c index 7c9b47fcd..ed1f16d33 100644 --- a/src/demuxers/demux_dts.c +++ b/src/demuxers/demux_dts.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 the xine project + * Copyright (C) 2005-2008 the xine project * * This file is part of xine, a free video player. * @@ -33,6 +33,9 @@ #ifdef HAVE_ALLOCA_H #include <alloca.h> #endif +#ifdef HAVE_MALLOC_H +#include <malloc.h> +#endif #define LOG_MODULE "demux_dts" #define LOG_VERBOSE @@ -140,29 +143,69 @@ static int open_dts_file(demux_dts_t *this) { } } + /* DTS bitstream encoding version + * -1 - not detected + * 0 - 16 bits and big endian + * 1 - 16 bits and low endian (detection not implemented) + * 2 - 14 bits and big endian (detection not implemented) + * 3 - 14 bits and low endian + */ + int dts_version = -1; + /* Look for a valid DTS syncword */ for (i=offset; i<peak_size-1; i++) { + /* 16 bits and big endian bitstream */ + if (syncword == 0x7ffe8001) { + dts_version = 0; + break; + } /* 14 bits and little endian bitstream */ - if ((syncword == 0xff1f00e8) && - ((peak[i] & 0xf0) == 0xf0) && (peak[i+1] == 0x07)) { - this->data_start = i-4; - lprintf("found DTS syncword at offset %d\n", i-4); - break; + else if ((syncword == 0xff1f00e8) && + ((peak[i] & 0xf0) == 0xf0) && (peak[i+1] == 0x07)) { + dts_version = 3; + break; } syncword = (syncword << 8) | peak[i]; } + if (dts_version == -1) { + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + LOG_MODULE ": unsupported DTS stream type, or not a DTS stream\n"); + return 0; + } + + this->data_start = i-4; + lprintf("found DTS syncword at offset %d\n", i-4); + if (i < peak_size-9) { unsigned int nblks, fsize, sfreq; + switch (dts_version) + { + case 0: /* BE16 */ + nblks = ((peak[this->data_start+4] & 0x01) << 6) | + ((peak[this->data_start+5] & 0xfc) >> 2); + fsize = (((peak[this->data_start+5] & 0x03) << 12) |(peak[this->data_start+6] << 4) | + ((peak[this->data_start+7] & 0xf0) >> 4)) + 1; + sfreq = (peak[this->data_start+8] & 0x3c) >> 2; + break; - /* 14 bits and little endian bitstream */ - nblks = ((peak[this->data_start+4] & 0x07) << 4) | - ((peak[this->data_start+7] & 0x3c) >> 2); - fsize = (((peak[this->data_start+7] & 0x03) << 12) | - (peak[this->data_start+6] << 4) | - ((peak[this->data_start+9] & 0x3c) >> 2)) + 1; - sfreq = peak[this->data_start+8] & 0x0f; + case 3: /* LE14 */ + nblks = ((peak[this->data_start+4] & 0x07) << 4) | + ((peak[this->data_start+7] & 0x3c) >> 2); + fsize = (((peak[this->data_start+7] & 0x03) << 12) | + (peak[this->data_start+6] << 4) | + ((peak[this->data_start+9] & 0x3c) >> 2)) + 1; + sfreq = peak[this->data_start+8] & 0x0f; + break; + + default: + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + LOG_MODULE ": unsupported DTS bitstream encoding %d\n", + dts_version); + return 0; + + } if ((sfreq > sizeof(dts_sample_rates)/sizeof(int)) || (dts_sample_rates[sfreq] == 0)) @@ -170,7 +213,19 @@ static int open_dts_file(demux_dts_t *this) { /* Big assumption - this is CBR data */ this->samples_per_frame = (nblks + 1) * 32; - this->frame_size = fsize * 8 / 14 * 2; + + switch (dts_version) + { + case 0: /* BE16 */ + case 1: /* LE16 */ + this->frame_size = fsize * 8 / 16 * 2; + break; + case 2: /* BE14 */ + case 3: /* LE14 */ + this->frame_size = fsize * 8 / 14 * 2; + break; + } + this->sample_rate = dts_sample_rates[sfreq]; lprintf("samples per frame: %d\n", this->samples_per_frame); @@ -223,7 +278,7 @@ static int demux_dts_send_chunk (demux_plugin_t *this_gen) { this->frame_size); } - if (buf->size == 0) { + if (buf->size <= 0) { buf->free_buffer(buf); this->status = DEMUX_FINISHED; return this->status; @@ -346,7 +401,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_dts_t *this; - this = xine_xmalloc (sizeof (demux_dts_t)); + this = calloc(1, sizeof(demux_dts_t)); this->stream = stream; this->input = input; @@ -418,7 +473,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_dts_init_plugin (xine_t *xine, void *data) { demux_dts_class_t *this; - this = xine_xmalloc (sizeof (demux_dts_class_t)); + this = calloc(1, sizeof(demux_dts_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_eawve.c b/src/demuxers/demux_eawve.c index 2359d3baf..7a21635cb 100644 --- a/src/demuxers/demux_eawve.c +++ b/src/demuxers/demux_eawve.c @@ -78,16 +78,16 @@ typedef struct { */ static uint32_t read_arbitary(input_plugin_t *input){ - uint8_t size, byte; - int i; - uint32_t word; + uint8_t size; if (input->read(input, (void*)&size, 1) != 1) { return 0; } - word = 0; + uint32_t word = 0; + int i; for (i=0;i<size;i++) { + uint8_t byte; if (input->read(input, (void*)&byte, 1) != 1) { return 0; } @@ -104,33 +104,25 @@ static uint32_t read_arbitary(input_plugin_t *input){ */ static int process_header(demux_eawve_t *this){ - int inHeader; - uint32_t blockid, size; + uint8_t header[12]; if (this->input->get_current_pos(this->input) != 0) this->input->seek(this->input, 0, SEEK_SET); - if (this->input->read(this->input, (void*)&blockid, 4) != 4) { - return 0; - } - if (be2me_32(blockid) != FOURCC_TAG('S', 'C', 'H', 'l')) { + if (this->input->read(this->input, header, sizeof(header)) != sizeof(header)) return 0; - } - if (this->input->read(this->input, (void*)&size, 4) != 4) { + if (!_x_is_fourcc(&header[0], "SCHl")) return 0; - } - size = le2me_32(size); - if (this->input->read(this->input, (void*)&blockid, 4) != 4) { - return 0; - } - if (be2me_32(blockid) != FOURCC_TAG('P', 'T', '\0', '\0')) { + if (!_x_is_fourcc(&header[8], "PT\0\0")) { lprintf("PT header missing\n"); return 0; } - inHeader = 1; + const uint32_t size = _X_LE_32(&header[4]); + + int inHeader = 1; while (inHeader) { int inSubheader; uint8_t byte; @@ -349,7 +341,7 @@ static demux_plugin_t* open_plugin(demux_class_t *class_gen, xine_stream_t *stre if (!INPUT_IS_SEEKABLE(input)) return NULL; - this = xine_xmalloc(sizeof(demux_eawve_t)); + this = calloc(1, sizeof(demux_eawve_t)); this->stream = stream; this->input = input; @@ -421,7 +413,7 @@ static void class_dispose(demux_class_t *this){ void *demux_eawve_init_plugin(xine_t *xine, void *data) { demux_eawve_class_t *this; - this = xine_xmalloc(sizeof(demux_eawve_class_t)); + this = calloc(1, sizeof(demux_eawve_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_elem.c b/src/demuxers/demux_elem.c index d0a821504..a66befe01 100644 --- a/src/demuxers/demux_elem.c +++ b/src/demuxers/demux_elem.c @@ -240,7 +240,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_mpeg_elem_t)); + this = calloc(1, sizeof(demux_mpeg_elem_t)); this->stream = stream; this->input = input; @@ -284,7 +284,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_mpeg_elem_class_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_elem_class_t)); + this = calloc(1, sizeof(demux_mpeg_elem_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_film.c b/src/demuxers/demux_film.c index 13036afc1..dcd57f76c 100644 --- a/src/demuxers/demux_film.c +++ b/src/demuxers/demux_film.c @@ -141,9 +141,9 @@ static int open_film_file(demux_film_t *film) { return 0; /* FILM signature correct? */ - if (strncmp(scratch, "FILM", 4)) { + if (!_x_is_fourcc(scratch, "FILM")) return 0; - } + llprintf(DEBUG_FILM_LOAD, "found 'FILM' signature\n"); /* file is qualified; skip over the header bytes in the stream */ @@ -151,7 +151,7 @@ static int open_film_file(demux_film_t *film) { /* header size = header size - 16-byte FILM signature */ film_header_size = _X_BE_32(&scratch[4]) - 16; - film_header = xine_xmalloc(film_header_size); + film_header = malloc(film_header_size); if (!film_header) return 0; strncpy(film->version, &scratch[8], 4); @@ -256,7 +256,9 @@ static int open_film_file(demux_film_t *film) { film->frequency = _X_BE_32(&film_header[i + 8]); film->sample_count = _X_BE_32(&film_header[i + 12]); film->sample_table = - xine_xmalloc(film->sample_count * sizeof(film_sample_t)); + calloc(film->sample_count, sizeof(film_sample_t)); + if (!film->sample_table) + goto film_abort; for (j = 0; j < film->sample_count; j++) { film->sample_table[j].sample_offset = @@ -329,15 +331,16 @@ static int open_film_file(demux_film_t *film) { /* allocate enough space in the interleave preload buffer for the * first chunk (which will be more than enough for successive chunks) */ if (film->audio_type) { - if (film->interleave_buffer) - free(film->interleave_buffer); - film->interleave_buffer = - xine_xmalloc(film->sample_table[0].sample_size); + free(film->interleave_buffer); + film->interleave_buffer = calloc(1, film->sample_table[0].sample_size); + if (!film->interleave_buffer) + goto film_abort; } break; default: xine_log(film->stream->xine, XINE_LOG_MSG, _("unrecognized FILM chunk\n")); + film_abort: free (film->interleave_buffer); free (film->sample_table); free (film_header); @@ -853,7 +856,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_film_t *this; - this = xine_xmalloc (sizeof (demux_film_t)); + this = calloc(1, sizeof(demux_film_t)); this->stream = stream; this->input = input; @@ -927,7 +930,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_film_init_plugin (xine_t *xine, void *data) { demux_film_class_t *this; - this = xine_xmalloc (sizeof (demux_film_class_t)); + this = calloc(1, sizeof(demux_film_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_flac.c b/src/demuxers/demux_flac.c index 3afb5b031..c14536040 100644 --- a/src/demuxers/demux_flac.c +++ b/src/demuxers/demux_flac.c @@ -164,8 +164,10 @@ static int open_flac_file(demux_flac_t *flac) { case 3: lprintf ("SEEKTABLE metadata, %d bytes\n", block_length); flac->seekpoint_count = block_length / FLAC_SEEKPOINT_SIZE; - flac->seekpoints = xine_xmalloc(flac->seekpoint_count * + flac->seekpoints = calloc(flac->seekpoint_count, sizeof(flac_seekpoint_t)); + if (flac->seekpoint_count && !flac->seekpoints) + return 0; for (i = 0; i < flac->seekpoint_count; i++) { if (flac->input->read(flac->input, buffer, FLAC_SEEKPOINT_SIZE) != FLAC_SEEKPOINT_SIZE) return 0; @@ -189,7 +191,7 @@ static int open_flac_file(demux_flac_t *flac) { case 4: lprintf ("VORBIS_COMMENT metadata\n"); { - char comments[block_length]; + char comments[block_length + 1]; /* last byte for NUL termination */ char *ptr = comments; uint32_t length, user_comment_list_length; int cn; @@ -202,18 +204,25 @@ static int open_flac_file(demux_flac_t *flac) { length = _X_LE_32(ptr); ptr += 4 + length; + if (length > block_length - 8) + return 0; /* bad length or too little left in the buffer */ user_comment_list_length = _X_LE_32(ptr); ptr += 4; cn = 0; for (; cn < user_comment_list_length; cn++) { + if (ptr > comments + block_length - 4) + return 0; /* too little left in the buffer */ + length = _X_LE_32(ptr); ptr += 4; + if (length >= block_length || ptr + length > comments + block_length) + return 0; /* bad length */ comment = (char*) ptr; c = comment[length]; - comment[length] = 0; + comment[length] = 0; /* NUL termination */ lprintf ("comment[%02d] = %s\n", cn, comment); @@ -223,6 +232,9 @@ static int open_flac_file(demux_flac_t *flac) { } else if ((strncasecmp ("ARTIST=", comment, 7) == 0) && (length - 7 > 0)) { _x_meta_info_set_utf8 (flac->stream, XINE_META_INFO_ARTIST, comment + 7); + } else if ((strncasecmp ("COMPOSER=", comment, 9) == 0) + && (length - 9 > 0)) { + _x_meta_info_set_utf8 (flac->stream, XINE_META_INFO_COMPOSER, comment + 9); } else if ((strncasecmp ("ALBUM=", comment, 6) == 0) && (length - 6 > 0)) { _x_meta_info_set_utf8 (flac->stream, XINE_META_INFO_ALBUM, comment + 6); @@ -248,8 +260,8 @@ static int open_flac_file(demux_flac_t *flac) { } if ((tracknumber > 0) && (tracktotal > 0)) { - char tn[16]; - snprintf (tn, 16, "%02d/%02d", tracknumber, tracktotal); + char tn[24]; + snprintf (tn, 24, "%02d/%02d", tracknumber, tracktotal); _x_meta_info_set(flac->stream, XINE_META_INFO_TRACK_NUMBER, tn); } else if (tracknumber > 0) { @@ -381,12 +393,13 @@ static int demux_flac_seek (demux_plugin_t *this_gen, demux_flac_t *this = (demux_flac_t *) this_gen; int seekpoint_index = 0; int64_t start_pts; + unsigned char buf[4]; start_pos = (off_t) ( (double) start_pos / 65535 * this->data_size ); /* if thread is not running, initialize demuxer */ - if( !playing ) { + if( !playing && !start_pos) { /* send new pts */ _x_demux_control_newpts(this->stream, 0, 0); @@ -394,28 +407,39 @@ static int demux_flac_seek (demux_plugin_t *this_gen, this->status = DEMUX_OK; } else { - if (this->seekpoints == NULL) { + if (this->seekpoints == NULL && !start_pos) { /* cannot seek if there is no seekpoints */ this->status = DEMUX_OK; return this->status; } - /* do a lazy, linear seek based on the assumption that there are not - * that many seek points */ + /* Don't use seekpoints if start_pos != 0. This allows smooth seeking */ if (start_pos) { /* offset-based seek */ - if (start_pos < this->seekpoints[0].offset) - seekpoint_index = 0; - else { - for (seekpoint_index = 0; seekpoint_index < this->seekpoint_count - 1; - seekpoint_index++) { - if (start_pos < this->seekpoints[seekpoint_index + 1].offset) { - break; - } - } + this->status = DEMUX_OK; + start_pos += this->data_start; + this->input->seek(this->input, start_pos, SEEK_SET); + while(1){ /* here we try to find something that resembles a frame header */ + + if (this->input->read(this->input, buf, 2) != 2){ + this->status = DEMUX_FINISHED; /* we sought past the end of stream ? */ + break; + } + + if (buf[0] == 0xff && buf[1] == 0xf8) + break; /* this might be the frame header... or it may be not. We pass it to the decoder + * to decide, but this way we reduce the number of warnings */ + start_pos +=2; } + + _x_demux_flush_engine(this->stream); + this->input->seek(this->input, start_pos, SEEK_SET); + _x_demux_control_newpts(this->stream, 0, BUF_FLAG_SEEK); + return this->status; + } else { - /* time-based seek */ + /* do a lazy, linear seek based on the assumption that there are not + * that many seek points; time-based seek */ start_pts = start_time; start_pts *= 90; if (start_pts < this->seekpoints[0].pts) @@ -482,7 +506,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_flac_t)); + this = calloc(1, sizeof(demux_flac_t)); this->stream = stream; this->input = input; @@ -544,7 +568,8 @@ static const char *get_extensions (demux_class_t *this_gen) { } static const char *get_mimetypes (demux_class_t *this_gen) { - return NULL; + return "audio/x-flac: flac: FLAC Audio;" + "audio/flac: flac: FLAC Audio;"; } static void class_dispose (demux_class_t *this_gen) { @@ -556,7 +581,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_flac_init_plugin (xine_t *xine, void *data) { demux_flac_class_t *this; - this = xine_xmalloc (sizeof (demux_flac_class_t)); + this = calloc(1, sizeof(demux_flac_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_fli.c b/src/demuxers/demux_fli.c index 99843a68c..12ae81609 100644 --- a/src/demuxers/demux_fli.c +++ b/src/demuxers/demux_fli.c @@ -244,7 +244,7 @@ static void demux_fli_send_headers(demux_plugin_t *this_gen) { BUF_FLAG_FRAME_END; buf->decoder_info[0] = this->frame_pts_inc; /* initial video_step */ buf->size = this->bih.biSize; - memcpy(buf->content, &this->bih, sizeof(xine_bmiheader) + this->bih.biSize); + memcpy(buf->content, &this->bih, this->bih.biSize); buf->type = BUF_VIDEO_FLI; this->video_fifo->put (this->video_fifo, buf); } @@ -303,7 +303,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_fli_t *this; - this = xine_xmalloc (sizeof (demux_fli_t)); + this = calloc(1, sizeof(demux_fli_t)); this->stream = stream; this->input = input; @@ -377,7 +377,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_fli_class_t *this; - this = xine_xmalloc (sizeof (demux_fli_class_t)); + this = calloc(1, sizeof(demux_fli_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_flv.c b/src/demuxers/demux_flv.c index bdb33d21d..d3da20136 100644 --- a/src/demuxers/demux_flv.c +++ b/src/demuxers/demux_flv.c @@ -21,10 +21,10 @@ /* * Flash Video (.flv) File Demuxer * by Mike Melanson (melanson@pcisys.net) and - * Claudio Ciccani (klan@directfb.org) + * Claudio Ciccani (klan@users.sf.net) * * For more information on the FLV file format, visit: - * http://download.macromedia.com/pub/flash/flash_file_format_specification.pdf + * http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v9.pdf */ #ifdef HAVE_CONFIG_H @@ -85,7 +85,7 @@ typedef struct { off_t filesize; flv_index_entry_t *index; - int num_indices; + unsigned int num_indices; unsigned int cur_pts; @@ -110,14 +110,20 @@ typedef struct { #define FLV_SOUND_FORMAT_ADPCM 0x01 #define FLV_SOUND_FORMAT_MP3 0x02 #define FLV_SOUND_FORMAT_PCM_LE 0x03 +#define FLV_SOUND_FORMAT_NELLY16 0x04 /* Nellymoser 16KHz */ #define FLV_SOUND_FORMAT_NELLY8 0x05 /* Nellymoser 8KHz */ #define FLV_SOUND_FORMAT_NELLY 0x06 /* Nellymoser */ +#define FLV_SOUND_FORMAT_ALAW 0x07 /* G.711 A-LAW */ +#define FLV_SOUND_FORMAT_MULAW 0x08 /* G.711 MU-LAW */ +#define FLV_SOUND_FORMAT_AAC 0x0a +#define FLV_SOUND_FORMAT_MP38 0x0e /* MP3 8KHz */ #define FLV_VIDEO_FORMAT_FLV1 0x02 /* Sorenson H.263 */ #define FLV_VIDEO_FORMAT_SCREEN 0x03 #define FLV_VIDEO_FORMAT_VP6 0x04 /* On2 VP6 */ #define FLV_VIDEO_FORMAT_VP6A 0x05 /* On2 VP6 with alphachannel */ #define FLV_VIDEO_FORMAT_SCREEN2 0x06 +#define FLV_VIDEO_FORMAT_H264 0x07 #define FLV_DATA_TYPE_NUMBER 0x00 #define FLV_DATA_TYPE_BOOL 0x01 @@ -209,7 +215,7 @@ static int parse_flv_var(demux_flv_t *this, unsigned char *end = buf + size; char *str; unsigned char type; - int len, num; + unsigned int len, num; if (size < 1) return 0; @@ -283,6 +289,8 @@ static int parse_flv_var(demux_flv_t *this, str = tmp + 2; tmp += len + 2; len = parse_flv_var(this, tmp, end-tmp, str, len); + if (!len) + return 0; tmp += len; } if (*tmp++ != FLV_DATA_TYPE_ENDOBJECT) @@ -298,6 +306,8 @@ static int parse_flv_var(demux_flv_t *this, str = tmp + 2; tmp += len + 2; len = parse_flv_var(this, tmp, end-tmp, str, len); + if (!len) + return 0; tmp += len; } break; @@ -306,10 +316,14 @@ static int parse_flv_var(demux_flv_t *this, num = _X_BE_32(tmp); tmp += 4; if (key && keylen == 5 && !strncmp(key, "times", 5)) { - if (this->index) - free (this->index); - this->index = xine_xmalloc(num*sizeof(flv_index_entry_t)); - this->num_indices = num; + if (!this->index || this->num_indices != num) { + if (this->index) + free(this->index); + this->index = calloc(num, sizeof(flv_index_entry_t)); + if (!this->index) + return 0; + this->num_indices = num; + } for (num = 0; num < this->num_indices && tmp < end; num++) { if (*tmp++ == FLV_DATA_TYPE_NUMBER) { lprintf(" got number (%f)\n", BE_F64(tmp)); @@ -320,19 +334,27 @@ static int parse_flv_var(demux_flv_t *this, break; } if (key && keylen == 13 && !strncmp(key, "filepositions", 13)) { - if (this->index && this->num_indices == num) { - for (num = 0; num < this->num_indices && tmp < end; num++) { - if (*tmp++ == FLV_DATA_TYPE_NUMBER) { - lprintf(" got number (%f)\n", BE_F64(tmp)); - this->index[num].offset = BE_F64(tmp); - tmp += 8; - } + if (!this->index || this->num_indices != num) { + if (this->index) + free(this->index); + this->index = calloc(num, sizeof(flv_index_entry_t)); + if (!this->index) + return 0; + this->num_indices = num; + } + for (num = 0; num < this->num_indices && tmp < end; num++) { + if (*tmp++ == FLV_DATA_TYPE_NUMBER) { + lprintf(" got number (%f)\n", BE_F64(tmp)); + this->index[num].offset = BE_F64(tmp); + tmp += 8; } - break; } + break; } while (num-- && tmp < end) { len = parse_flv_var(this, tmp, end-tmp, NULL, 0); + if (!len) + return 0; tmp += len; } break; @@ -349,12 +371,12 @@ static int parse_flv_var(demux_flv_t *this, } static void parse_flv_script(demux_flv_t *this, int size) { - unsigned char *buf = xine_xmalloc(size); + unsigned char *buf = malloc(size); unsigned char *tmp = buf; unsigned char *end = buf + size; int len; - if (this->input->read(this->input, buf, size ) != size) { + if (!buf || this->input->read(this->input, buf, size ) != size) { this->status = DEMUX_FINISHED; free(buf); return; @@ -413,11 +435,24 @@ static int read_flv_packet(demux_flv_t *this, int preview) { buf_type = BUF_AUDIO_FLVADPCM; break; case FLV_SOUND_FORMAT_MP3: + case FLV_SOUND_FORMAT_MP38: buf_type = BUF_AUDIO_MPEG; break; case FLV_SOUND_FORMAT_PCM_LE: buf_type = BUF_AUDIO_LPCM_LE; break; + case FLV_SOUND_FORMAT_ALAW: + buf_type = BUF_AUDIO_ALAW; + break; + case FLV_SOUND_FORMAT_MULAW: + buf_type = BUF_AUDIO_MULAW; + break; + case FLV_SOUND_FORMAT_AAC: + buf_type = BUF_AUDIO_AAC; + /* AAC extra header */ + this->input->read(this->input, buffer, 1 ); + remaining_bytes--; + break; default: lprintf(" unsupported audio format (%d)...\n", buffer[0] >> 4); buf_type = BUF_AUDIO_UNKNOWN; @@ -448,8 +483,17 @@ static int read_flv_packet(demux_flv_t *this, int preview) { } remaining_bytes--; - if ((buffer[0] >> 4) == 0x01) - buf_flags = BUF_FLAG_KEYFRAME; + switch ((buffer[0] >> 4)) { + case 0x01: + buf_flags = BUF_FLAG_KEYFRAME; + break; + case 0x05: + /* skip server command */ + this->input->seek(this->input, remaining_bytes, SEEK_CUR); + continue; + default: + break; + } this->videocodec = buffer[0] & 0x0F; /* override */ switch (this->videocodec) { @@ -468,6 +512,12 @@ static int read_flv_packet(demux_flv_t *this, int preview) { this->input->read(this->input, buffer, 4); remaining_bytes -= 4; break; + case FLV_VIDEO_FORMAT_H264: + buf_type = BUF_VIDEO_H264; + /* AVC extra header */ + this->input->read(this->input, buffer, 4); + remaining_bytes -= 4; + break; default: lprintf(" unsupported video format (%d)...\n", buffer[0] & 0x0F); buf_type = BUF_VIDEO_UNKNOWN; @@ -495,6 +545,23 @@ static int read_flv_packet(demux_flv_t *this, int preview) { bih->biSize++; buf->size++; } + else if (buf_type == BUF_VIDEO_H264 && buffer[0] == 0) { + /* AVC sequence header */ + if (remaining_bytes > buf->max_size-buf->size) { + xprintf(this->xine, XINE_VERBOSITY_LOG, + _("sequence header too big (%u bytes)!\n"), remaining_bytes); + this->input->read(this->input, buf->content+buf->size, buf->max_size-buf->size); + this->input->seek(this->input, remaining_bytes-buf->max_size-buf->size, SEEK_CUR); + bih->biSize = buf->max_size; + buf->size = buf->max_size; + } + else { + this->input->read(this->input, buf->content+buf->size, remaining_bytes); + bih->biSize += remaining_bytes; + buf->size += remaining_bytes; + } + remaining_bytes = 0; + } fifo->put(fifo, buf); this->got_video_header = 1; } @@ -502,9 +569,9 @@ static int read_flv_packet(demux_flv_t *this, int preview) { case FLV_TAG_TYPE_SCRIPT: lprintf(" got script tag...\n"); - parse_flv_script(this, remaining_bytes); - if (preview) { + parse_flv_script(this, remaining_bytes); + /* send init info to decoders using script information as reference */ if (!this->got_audio_header && this->audiocodec) { buf = this->audio_fifo->buffer_pool_alloc(this->audio_fifo); @@ -521,11 +588,21 @@ static int read_flv_packet(demux_flv_t *this, int preview) { buf->type = BUF_AUDIO_FLVADPCM; break; case FLV_SOUND_FORMAT_MP3: + case FLV_SOUND_FORMAT_MP38: buf->type = BUF_AUDIO_MPEG; break; case FLV_SOUND_FORMAT_PCM_LE: buf->type = BUF_AUDIO_LPCM_LE; break; + case FLV_SOUND_FORMAT_ALAW: + buf->type = BUF_AUDIO_ALAW; + break; + case FLV_SOUND_FORMAT_MULAW: + buf->type = BUF_AUDIO_MULAW; + break; + case FLV_SOUND_FORMAT_AAC: + buf->type = BUF_AUDIO_AAC; + break; default: buf->type = BUF_AUDIO_UNKNOWN; break; @@ -533,9 +610,10 @@ static int read_flv_packet(demux_flv_t *this, int preview) { buf->size = 0; this->audio_fifo->put(this->audio_fifo, buf); this->got_audio_header = 1; + lprintf(" got audio header from metadata...\n"); } - if (!this->got_video_header && this->videocodec) { + if (!this->got_video_header && this->videocodec && this->videocodec != FLV_VIDEO_FORMAT_H264) { xine_bmiheader *bih; buf = this->video_fifo->buffer_pool_alloc(this->video_fifo); buf->decoder_flags = BUF_FLAG_HEADER | BUF_FLAG_STDHEADER | @@ -567,10 +645,13 @@ static int read_flv_packet(demux_flv_t *this, int preview) { } this->video_fifo->put(this->video_fifo, buf); this->got_video_header = 1; + lprintf(" got video header from metadata...\n"); } return this->status; - } + } + /* no preview */ + this->input->seek(this->input, remaining_bytes, SEEK_CUR); continue; default: @@ -582,33 +663,61 @@ static int read_flv_packet(demux_flv_t *this, int preview) { while (remaining_bytes) { buf = fifo->buffer_pool_alloc(fifo); buf->type = buf_type; - buf->pts = (int64_t) pts * 90; - - if (!preview) - check_newpts(this, buf->pts, (tag_type == FLV_TAG_TYPE_VIDEO)); buf->extra_info->input_time = pts; if (this->input->get_length(this->input)) { buf->extra_info->input_normpos = (int)((double)this->input->get_current_pos(this->input) * 65535.0 / this->size); } + + if ((buf_type == BUF_VIDEO_H264 || buf_type == BUF_AUDIO_AAC) && buffer[0] == 0) { + /* AVC/AAC sequence header */ + buf->pts = 0; + buf->size = 0; + + buf->decoder_flags = BUF_FLAG_SPECIAL | BUF_FLAG_HEADER; + if (preview) + buf->decoder_flags |= BUF_FLAG_PREVIEW; - if (remaining_bytes > buf->max_size) - buf->size = buf->max_size; - else - buf->size = remaining_bytes; - remaining_bytes -= buf->size; - - buf->decoder_flags = buf_flags; - if (preview) - buf->decoder_flags |= BUF_FLAG_PREVIEW; - if (!remaining_bytes) - buf->decoder_flags |= BUF_FLAG_FRAME_END; - - if (this->input->read(this->input, buf->content, buf->size) != buf->size) { - buf->free_buffer(buf); - this->status = DEMUX_FINISHED; - break; + buf->decoder_info[1] = BUF_SPECIAL_DECODER_CONFIG; + buf->decoder_info[2] = MIN(remaining_bytes, buf->max_size); + buf->decoder_info_ptr[2] = buf->mem; + + if (this->input->read(this->input, buf->mem, buf->decoder_info[2]) != buf->decoder_info[2]) { + buf->free_buffer(buf); + this->status = DEMUX_FINISHED; + break; + } + + if (remaining_bytes > buf->max_size) { + xprintf(this->xine, XINE_VERBOSITY_LOG, + _("sequence header too big (%u bytes)!\n"), remaining_bytes); + this->input->seek(this->input, remaining_bytes-buf->max_size, SEEK_CUR); + } + remaining_bytes = 0; + } + else { + buf->pts = (int64_t) pts * 90; + if (!preview) + check_newpts(this, buf->pts, (tag_type == FLV_TAG_TYPE_VIDEO)); + + if (remaining_bytes > buf->max_size) + buf->size = buf->max_size; + else + buf->size = remaining_bytes; + remaining_bytes -= buf->size; + + buf->decoder_flags = buf_flags; + if (preview) + buf->decoder_flags |= BUF_FLAG_PREVIEW; + if (!remaining_bytes) + buf->decoder_flags |= BUF_FLAG_FRAME_END; + + if (this->input->read(this->input, buf->content, buf->size) != buf->size) { + buf->free_buffer(buf); + this->status = DEMUX_FINISHED; + break; + } } fifo->put(fifo, buf); @@ -631,8 +740,8 @@ static void seek_flv_file(demux_flv_t *this, off_t seek_pos, int seek_pts) { lprintf(" seeking %s to %d...\n", do_rewind ? "backward" : "forward", seek_pts); - - if (seek_pts == 0) { + + if (seek_pos == 0 && seek_pts == 0) { this->input->seek(this->input, this->start, SEEK_SET); this->cur_pts = 0; return; @@ -658,11 +767,9 @@ static void seek_flv_file(demux_flv_t *this, off_t seek_pos, int seek_pts) { this->input->seek(this->input, this->index[i].offset-4, SEEK_SET); this->cur_pts = this->index[i].pts; - return; } } - - if (seek_pos && this->videocodec) { + else if (seek_pos && this->videocodec && abs(seek_pts-this->cur_pts) > 300000) { off_t pos, size; pos = this->input->get_current_pos(this->input); @@ -697,49 +804,50 @@ static void seek_flv_file(demux_flv_t *this, off_t seek_pos, int seek_pts) { lprintf(" ...resync failed!\n"); this->input->seek(this->input, pos, SEEK_SET); - return; } - - while (do_rewind ? (seek_pts < this->cur_pts) : (seek_pts > this->cur_pts)) { - unsigned char tag_type; - int data_size; - int ptag_size; + else if (seek_pts) { + while (do_rewind ? (seek_pts < this->cur_pts) : (seek_pts > this->cur_pts)) { + unsigned char tag_type; + int data_size; + int ptag_size; - if (next_tag) - this->input->seek(this->input, next_tag, SEEK_CUR); + if (next_tag) + this->input->seek(this->input, next_tag, SEEK_CUR); - len = this->input->read(this->input, buffer, 16); - if (len != 16) { - len = (len < 0) ? 0 : len; - break; - } + len = this->input->read(this->input, buffer, 16); + if (len != 16) { + len = (len < 0) ? 0 : len; + break; + } - ptag_size = _X_BE_32(&buffer[0]); - tag_type = buffer[4]; - data_size = _X_BE_24(&buffer[5]); - pts = _X_BE_24(&buffer[8]) | (buffer[11] << 24); + ptag_size = _X_BE_32(&buffer[0]); + tag_type = buffer[4]; + data_size = _X_BE_24(&buffer[5]); + pts = _X_BE_24(&buffer[8]) | (buffer[11] << 24); - if (do_rewind) { - if (!ptag_size) break; /* beginning of movie */ - next_tag = -(ptag_size + 16 + 4); - } - else { - next_tag = data_size - 1; - } + if (do_rewind) { + if (!ptag_size) + break; /* beginning of movie */ + next_tag = -(ptag_size + 16 + 4); + } + else { + next_tag = data_size - 1; + } - if (this->flags & FLV_FLAG_HAS_VIDEO) { - /* sync to video key frame */ - if (tag_type != FLV_TAG_TYPE_VIDEO || (buffer[15] >> 4) != 0x01) - continue; - lprintf(" video keyframe found at %d...\n", pts); + if (this->flags & FLV_FLAG_HAS_VIDEO) { + /* sync to video key frame */ + if (tag_type != FLV_TAG_TYPE_VIDEO || (buffer[15] >> 4) != 0x01) + continue; + lprintf(" video keyframe found at %d...\n", pts); + } + this->cur_pts = pts; } - this->cur_pts = pts; - } - /* seek back to the beginning of the tag */ - this->input->seek(this->input, -len, SEEK_CUR); + /* seek back to the beginning of the tag */ + this->input->seek(this->input, -len, SEEK_CUR); - lprintf( " seeked to %d.\n", pts); + lprintf( " seeked to %d.\n", pts); + } } @@ -789,8 +897,12 @@ static int demux_flv_seek (demux_plugin_t *this_gen, this->status = DEMUX_OK; if (INPUT_IS_SEEKABLE(this->input)) { - if (start_pos && !start_time) - start_time = (int64_t) this->length * start_pos / 65535; + if (start_pos && !start_time) { + if (this->length) + start_time = (int64_t) this->length * start_pos / 65535; + else if (this->index) + start_time = this->index[(int)(start_pos * (this->num_indices-1) / 65535)].pts; + } if (!this->length || start_time < this->length) { seek_flv_file(this, start_pos, start_time); @@ -838,7 +950,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str input_plugin_t *input) { demux_flv_t *this; - this = xine_xmalloc(sizeof (demux_flv_t)); + this = calloc(1, sizeof(demux_flv_t)); this->xine = stream->xine; this->stream = stream; this->input = input; @@ -857,12 +969,6 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str switch (stream->content_detection_method) { case METHOD_BY_EXTENSION: - if (!_x_demux_check_extension(input->get_mrl(input), "flv")) { - free (this); - return NULL; - } - - /* falling through is intended */ case METHOD_BY_CONTENT: case METHOD_EXPLICIT: if (!open_flv_file(this)) { @@ -906,7 +1012,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_flv_class_t *this; - this = xine_xmalloc (sizeof (demux_flv_class_t)); + this = calloc(1, sizeof(demux_flv_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_idcin.c b/src/demuxers/demux_idcin.c index 99754c797..d44f03ab3 100644 --- a/src/demuxers/demux_idcin.c +++ b/src/demuxers/demux_idcin.c @@ -472,7 +472,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_idcin_t *this; - this = xine_xmalloc (sizeof (demux_idcin_t)); + this = calloc(1, sizeof(demux_idcin_t)); this->stream = stream; this->input = input; @@ -547,7 +547,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_idcin_init_plugin (xine_t *xine, void *data) { demux_idcin_class_t *this; - this = xine_xmalloc (sizeof (demux_idcin_class_t)); + this = calloc(1, sizeof(demux_idcin_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_iff.c b/src/demuxers/demux_iff.c index d914405db..1785e86d7 100644 --- a/src/demuxers/demux_iff.c +++ b/src/demuxers/demux_iff.c @@ -212,7 +212,7 @@ static int read_iff_chunk(demux_iff_t *this) { break; case IFF_VHDR_CHUNK: if( this->vhdr == NULL ) - this->vhdr = (Voice8Header *)xine_xmalloc(sizeof(Voice8Header)); + this->vhdr = (Voice8Header *)calloc(1, sizeof(Voice8Header)); this->vhdr->oneShotHiSamples = _X_BE_32(&buffer[0]); this->vhdr->repeatHiSamples = _X_BE_32(&buffer[4]); this->vhdr->samplesPerHiCycle = _X_BE_32(&buffer[8]); @@ -330,7 +330,7 @@ static int read_iff_chunk(demux_iff_t *this) { break; case IFF_BMHD_CHUNK: if( this->bmhd == NULL ) - this->bmhd = (BitMapHeader *)xine_xmalloc(sizeof(BitMapHeader)); + this->bmhd = (BitMapHeader *)calloc(1, sizeof(BitMapHeader)); this->bmhd->w = _X_BE_16(&buffer[0]); this->bmhd->h = _X_BE_16(&buffer[2]); this->bmhd->x = _X_BE_16(&buffer[4]); @@ -399,20 +399,20 @@ static int read_iff_chunk(demux_iff_t *this) { case IFF_CMAP_CHUNK: /* every color contains red, green and blue componente using 8Bit */ this->cmap_num = junk_size / PIC_SIZE_OF_COLOR_REGISTER; - this->cmap = (ColorRegister *)xine_xmalloc(junk_size); + this->cmap = (ColorRegister *)malloc(junk_size); this->video_send_palette = 1; - if (this->input->read(this->input, (char *)this->cmap, junk_size) != junk_size) + if (!this->cmap || this->input->read(this->input, (char *)this->cmap, junk_size) != junk_size) return 0; break; case IFF_GRAB_CHUNK: if( this->grab == NULL ) - this->grab = (Point2D *)xine_xmalloc(sizeof(Point2D)); + this->grab = (Point2D *)calloc(1, sizeof(Point2D)); this->grab->x = _X_BE_16(&buffer[0]); this->grab->y = _X_BE_16(&buffer[2]); break; case IFF_DEST_CHUNK: if( this->dest == NULL ) - this->dest = (DestMerge *)xine_xmalloc(sizeof(DestMerge)); + this->dest = (DestMerge *)calloc(1, sizeof(DestMerge)); this->dest->depth = buffer[0]; this->dest->pad1 = buffer[1]; this->dest->plane_pick = _X_BE_16(&buffer[2]); @@ -424,7 +424,7 @@ static int read_iff_chunk(demux_iff_t *this) { break; case IFF_CAMG_CHUNK: if( this->camg == NULL ) - this->camg = (CamgChunk *)xine_xmalloc(sizeof(CamgChunk)); + this->camg = (CamgChunk *)calloc(1, sizeof(CamgChunk)); this->camg->view_modes = _X_BE_32(&buffer[0]); this->bih.biCompression = this->camg->view_modes; if( this->camg->view_modes & CAMG_PAL && @@ -443,7 +443,7 @@ static int read_iff_chunk(demux_iff_t *this) { break; case IFF_CCRT_CHUNK: if( this->ccrt == NULL ) - this->ccrt = (CcrtChunk *)xine_xmalloc(sizeof(CcrtChunk)); + this->ccrt = (CcrtChunk *)calloc(1, sizeof(CcrtChunk)); this->ccrt->direction = _X_BE_16(&buffer[0]); this->ccrt->start = buffer[2]; this->ccrt->end = buffer[3]; @@ -453,13 +453,13 @@ static int read_iff_chunk(demux_iff_t *this) { break; case IFF_DPI_CHUNK: if( this->dpi == NULL ) - this->dpi = (DPIHeader *)xine_xmalloc(sizeof(DPIHeader)); + this->dpi = (DPIHeader *)calloc(1, sizeof(DPIHeader)); this->dpi->x = _X_BE_16(&buffer[0]); this->dpi->y = _X_BE_16(&buffer[0]); break; case IFF_ANHD_CHUNK: if( this->anhd == NULL ) - this->anhd = (AnimHeader *)xine_xmalloc(sizeof(AnimHeader)); + this->anhd = (AnimHeader *)calloc(1, sizeof(AnimHeader)); this->anhd->operation = buffer[0]; this->anhd->mask = buffer[1]; this->anhd->w = _X_BE_16(&buffer[2]); @@ -500,7 +500,7 @@ static int read_iff_chunk(demux_iff_t *this) { break; case IFF_DPAN_CHUNK: if( this->dpan == NULL ) - this->dpan = (DPAnimChunk *)xine_xmalloc(sizeof(DPAnimChunk)); + this->dpan = (DPAnimChunk *)calloc(1, sizeof(DPAnimChunk)); this->dpan->version = _X_BE_16(&buffer[0]); this->dpan->nframes = _X_BE_16(&buffer[2]); this->dpan->fps = buffer[4]; @@ -709,11 +709,19 @@ static int demux_iff_send_chunk(demux_plugin_t *this_gen) { /* load the whole chunk into the buffer */ if (this->audio_buffer_filled == 0) { if (this->audio_interleave_buffer_size > 0) + { this->audio_interleave_buffer = - xine_xmalloc(this->audio_interleave_buffer_size); + calloc(1, this->audio_interleave_buffer_size); + if (!this->audio_interleave_buffer) + return this->status = DEMUX_FINISHED; + } if (this->audio_read_buffer_size > 0) + { this->audio_read_buffer = - xine_xmalloc(this->audio_read_buffer_size); + calloc(1, this->audio_read_buffer_size); + if (!this->audio_read_buffer) + return this->status = DEMUX_FINISHED; + } if (this->audio_read_buffer) { if (this->input->read(this->input, this->audio_read_buffer, this->data_size) != this->data_size) { @@ -1234,7 +1242,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_iff_t *this; - this = xine_xmalloc (sizeof (demux_iff_t)); + this = calloc(1, sizeof(demux_iff_t)); this->stream = stream; this->input = input; @@ -1315,7 +1323,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_iff_class_t *this; - this = xine_xmalloc (sizeof (demux_iff_class_t)); + this = calloc(1, sizeof(demux_iff_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_image.c b/src/demuxers/demux_image.c index 9f53e4173..feaf3ceaa 100644 --- a/src/demuxers/demux_image.c +++ b/src/demuxers/demux_image.c @@ -198,7 +198,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, * if we reach this point, the input has been accepted. */ - this = xine_xmalloc (sizeof (demux_image_t)); + this = calloc(1, sizeof(demux_image_t)); this->stream = stream; this->input = input; @@ -249,7 +249,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_class (xine_t *xine, void *data) { demux_image_class_t *this; - this = xine_xmalloc (sizeof (demux_image_class_t)); + this = calloc(1, sizeof(demux_image_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_ipmovie.c b/src/demuxers/demux_ipmovie.c index cd21896c0..4ef877988 100644 --- a/src/demuxers/demux_ipmovie.c +++ b/src/demuxers/demux_ipmovie.c @@ -283,9 +283,10 @@ static int process_ipmovie_chunk(demux_ipmovie_t *this) { this->bih.biWidth = _X_LE_16(&scratch[0]) * 8; this->bih.biHeight = _X_LE_16(&scratch[2]) * 8; /* set up staging area for decode map */ - this->decode_map_size = (this->bih.biWidth * this->bih.biHeight) / - (8 * 8) / 2; + this->decode_map_size = (this->bih.biWidth / 8) * (this->bih.biHeight / 8) / 2; this->decode_map = xine_xmalloc(this->decode_map_size); + if (!this->decode_map) + this->status = DEMUX_FINISHED; lprintf("video resolution: %d x %d\n", this->bih.biWidth, this->bih.biHeight); break; @@ -671,7 +672,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_ipmovie_t *this; - this = xine_xmalloc (sizeof (demux_ipmovie_t)); + this = calloc(1, sizeof(demux_ipmovie_t)); this->stream = stream; this->input = input; @@ -746,7 +747,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_ipmovie_init_plugin (xine_t *xine, void *data) { demux_ipmovie_class_t *this; - this = xine_xmalloc (sizeof (demux_ipmovie_class_t)); + this = calloc(1, sizeof(demux_ipmovie_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c index b973c1caf..5cf783bf5 100644 --- a/src/demuxers/demux_matroska.c +++ b/src/demuxers/demux_matroska.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2007 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -58,13 +58,6 @@ #define WRAP_THRESHOLD 90000 -#if !defined(MIN) -#define MIN(a, b) ((a)<(b)?(a):(b)) -#endif -#if !defined(MAX) -#define MAX(a, b) ((a)>(b)?(a):(b)) -#endif - typedef struct { int track_num; off_t *pos; @@ -113,7 +106,7 @@ typedef struct { /* block */ uint8_t *block_data; - int block_data_size; + size_t block_data_size; /* current tracks */ matroska_track_t *video_track; /* to remove */ @@ -614,6 +607,8 @@ static void init_codec_xiph(demux_matroska_t *this, matroska_track_t *track) { int i; uint8_t *data; + if (track->codec_private_len < 3) + return; nb_lace = track->codec_private[0]; if (nb_lace != 2) return; @@ -621,6 +616,8 @@ static void init_codec_xiph(demux_matroska_t *this, matroska_track_t *track) { frame[0] = track->codec_private[1]; frame[1] = track->codec_private[2]; frame[2] = track->codec_private_len - frame[0] - frame[1] - 3; + if (frame[2] < 0) + return; data = track->codec_private + 3; for (i = 0; i < 3; i++) { @@ -635,9 +632,7 @@ static void init_codec_xiph(demux_matroska_t *this, matroska_track_t *track) { } buf->size = frame[i]; - buf->decoder_flags = BUF_FLAG_HEADER; - if (i == 2) - buf->decoder_flags |= BUF_FLAG_FRAME_END; + buf->decoder_flags = BUF_FLAG_HEADER | BUF_FLAG_FRAME_START | BUF_FLAG_FRAME_END; buf->type = track->buf_type; buf->pts = 0; @@ -685,7 +680,11 @@ static void init_codec_aac(demux_matroska_t *this, matroska_track_t *track) { /* Create a DecoderSpecificInfo for initialising libfaad */ sr_index = aac_get_sr_index(atrack->sampling_freq); - if (!strncmp (&track->codec_id[12], "MAIN", 4)) + /* newer specification with appended CodecPrivate */ + if (strlen(track->codec_id) <= 12) + profile = 3; + /* older specification */ + else if (!strncmp (&track->codec_id[12], "MAIN", 4)) profile = 0; else if (!strncmp (&track->codec_id[12], "LC", 2)) profile = 1; @@ -884,7 +883,7 @@ static void init_codec_vobsub(demux_matroska_t *this, static void handle_realvideo (demux_plugin_t *this_gen, matroska_track_t *track, int decoder_flags, - uint8_t *data, int data_len, + uint8_t *data, size_t data_len, int64_t data_pts, int data_duration, int input_normpos, int input_time) { demux_matroska_t *this = (demux_matroska_t *) this_gen; @@ -933,7 +932,7 @@ static void handle_realvideo (demux_plugin_t *this_gen, matroska_track_t *track, static void handle_sub_ssa (demux_plugin_t *this_gen, matroska_track_t *track, int decoder_flags, - uint8_t *data, int data_len, + uint8_t *data, size_t data_len, int64_t data_pts, int data_duration, int input_normpos, int input_time) { buf_element_t *buf; @@ -1008,7 +1007,7 @@ static void handle_sub_ssa (demux_plugin_t *this_gen, matroska_track_t *track, static void handle_sub_utf8 (demux_plugin_t *this_gen, matroska_track_t *track, int decoder_flags, - uint8_t *data, int data_len, + uint8_t *data, size_t data_len, int64_t data_pts, int data_duration, int input_normpos, int input_time) { demux_matroska_t *this = (demux_matroska_t *) this_gen; @@ -1055,7 +1054,7 @@ static void handle_sub_utf8 (demux_plugin_t *this_gen, matroska_track_t *track, */ static void handle_vobsub (demux_plugin_t *this_gen, matroska_track_t *track, int decoder_flags, - uint8_t *data, int data_len, + uint8_t *data, size_t data_len, int64_t data_pts, int data_duration, int input_normpos, int input_time) { demux_matroska_t *this = (demux_matroska_t *) this_gen; @@ -1179,19 +1178,21 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { break; case MATROSKA_ID_TR_CODECID: { - char *codec_id = malloc (elem.len + 1); + char *codec_id = ebml_alloc_read_ascii (ebml, &elem); lprintf("CodecID\n"); - if (!ebml_read_ascii(ebml, &elem, codec_id)) { - free(codec_id); + if (!codec_id) return 0; - } - codec_id[elem.len] = '\0'; track->codec_id = codec_id; } break; case MATROSKA_ID_TR_CODECPRIVATE: { - char *codec_private = malloc (elem.len); + char *codec_private; + if (elem.len >= 0x80000000) + return 0; + codec_private = malloc (elem.len); + if (! codec_private) + return 0; lprintf("CodecPrivate\n"); if (!ebml_read_binary(ebml, &elem, codec_private)) { free(codec_private); @@ -1203,13 +1204,10 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { break; case MATROSKA_ID_TR_LANGUAGE: { - char *language = malloc (elem.len + 1); + char *language = ebml_alloc_read_ascii (ebml, &elem); lprintf("Language\n"); - if (!ebml_read_ascii(ebml, &elem, language)) { - free(language); + if (!language) return 0; - } - language[elem.len] = '\0'; track->language = language; } break; @@ -1218,7 +1216,7 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { lprintf("Video\n"); if (track->video_track) return 1; - track->video_track = (matroska_video_track_t *)xine_xmalloc(sizeof(matroska_video_track_t)); + track->video_track = (matroska_video_track_t *)calloc(1, sizeof(matroska_video_track_t)); if (!ebml_read_master (ebml, &elem)) return 0; if ((elem.len > 0) && !parse_video_track(this, track->video_track)) @@ -1229,7 +1227,7 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { lprintf("Audio\n"); if (track->audio_track) return 1; - track->audio_track = (matroska_audio_track_t *)xine_xmalloc(sizeof(matroska_audio_track_t)); + track->audio_track = (matroska_audio_track_t *)calloc(1, sizeof(matroska_audio_track_t)); if (!ebml_read_master (ebml, &elem)) return 0; if ((elem.len > 0) && !parse_audio_track(this, track->audio_track)) @@ -1298,12 +1296,14 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_VFW_FOURCC)) { xine_bmiheader *bih; - lprintf("MATROSKA_CODEC_ID_V_VFW_FOURCC\n"); - bih = (xine_bmiheader*)track->codec_private; - _x_bmiheader_le2me(bih); + if (track->codec_private_len >= sizeof(xine_bmiheader)) { + lprintf("MATROSKA_CODEC_ID_V_VFW_FOURCC\n"); + bih = (xine_bmiheader*)track->codec_private; + _x_bmiheader_le2me(bih); - track->buf_type = _x_fourcc_to_buf_video(bih->biCompression); - init_codec = init_codec_video; + track->buf_type = _x_fourcc_to_buf_video(bih->biCompression); + init_codec = init_codec_video; + } } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_UNCOMPRESSED)) { } else if ((!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_MPEG4_SP)) || @@ -1312,8 +1312,11 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { xine_bmiheader *bih; lprintf("MATROSKA_CODEC_ID_V_MPEG4_*\n"); + if (track->codec_private_len > 0x7fffffff - sizeof(xine_bmiheader)) + track->codec_private_len = 0x7fffffff - sizeof(xine_bmiheader); + /* create a bitmap info header struct for MPEG 4 */ - bih = malloc(sizeof(xine_bmiheader) + track->codec_private_len); + bih = calloc(1, sizeof(xine_bmiheader) + track->codec_private_len); bih->biSize = sizeof(xine_bmiheader) + track->codec_private_len; bih->biCompression = ME_FOURCC('M', 'P', '4', 'S'); bih->biWidth = track->video_track->pixel_width; @@ -1333,8 +1336,11 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { xine_bmiheader *bih; lprintf("MATROSKA_CODEC_ID_V_MPEG4_AVC\n"); + if (track->codec_private_len > 0x7fffffff - sizeof(xine_bmiheader)) + track->codec_private_len = 0x7fffffff - sizeof(xine_bmiheader); + /* create a bitmap info header struct for h264 */ - bih = malloc(sizeof(xine_bmiheader) + track->codec_private_len); + bih = calloc(1, sizeof(xine_bmiheader) + track->codec_private_len); bih->biSize = sizeof(xine_bmiheader) + track->codec_private_len; bih->biCompression = ME_FOURCC('a', 'v', 'c', '1'); bih->biWidth = track->video_track->pixel_width; @@ -1409,11 +1415,13 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { xine_waveformatex *wfh; lprintf("MATROSKA_CODEC_ID_A_ACM\n"); - wfh = (xine_waveformatex*)track->codec_private; - _x_waveformatex_le2me(wfh); + if (track->codec_private_len >= sizeof(xine_waveformatex)) { + wfh = (xine_waveformatex*)track->codec_private; + _x_waveformatex_le2me(wfh); - track->buf_type = _x_formattag_to_buf_audio(wfh->wFormatTag); - init_codec = init_codec_audio; + track->buf_type = _x_formattag_to_buf_audio(wfh->wFormatTag); + init_codec = init_codec_audio; + } } else if (!strncmp(track->codec_id, MATROSKA_CODEC_ID_A_AAC, sizeof(MATROSKA_CODEC_ID_A_AAC) - 1)) { lprintf("MATROSKA_CODEC_ID_A_AAC\n"); @@ -1494,9 +1502,14 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) { break; } - if (init_codec) + if (init_codec) { + if (! track->fifo) { + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "demux_matroska: Error: fifo not set up for track of type type %" PRIu32 "\n", track->track_type); + return 0; + } init_codec(this, track); - + } } } @@ -1519,7 +1532,7 @@ static int parse_tracks(demux_matroska_t *this) { matroska_track_t *track; /* alloc and initialize a track with 0 */ - track = xine_xmalloc(sizeof(matroska_track_t)); + track = calloc(1, sizeof(matroska_track_t)); track->compress_algo = MATROSKA_COMPRESS_NONE; this->tracks[this->num_tracks] = track; @@ -1746,7 +1759,7 @@ static int parse_tags(demux_matroska_t *this) { return 1; } -static void alloc_block_data (demux_matroska_t *this, int len) { +static void alloc_block_data (demux_matroska_t *this, size_t len) { /* memory management */ if (this->block_data_size < len) { if (this->block_data) @@ -1818,10 +1831,15 @@ static int find_track_by_id(demux_matroska_t *this, int track_num, } -static int read_block_data (demux_matroska_t *this, int len) { +static int read_block_data (demux_matroska_t *this, size_t len) { alloc_block_data(this, len); /* block datas */ + if (! this->block_data) { + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "demux_matroska: memory allocation error\n"); + return 0; + } if (this->input->read(this->input, this->block_data, len) != len) { off_t pos = this->input->get_current_pos(this->input); xprintf(this->stream->xine, XINE_VERBOSITY_LOG, @@ -1832,15 +1850,24 @@ static int read_block_data (demux_matroska_t *this, int len) { return 1; } -static int parse_block (demux_matroska_t *this, uint64_t block_size, +static int parse_int16(uint8_t *data) { + int value = (int)_X_BE_16(data); + if (value & 1<<15) + { + value -= 1<<16; + } + return value; +} + +static int parse_block (demux_matroska_t *this, size_t block_size, uint64_t cluster_timecode, uint64_t block_duration, int normpos, int is_key) { matroska_track_t *track; - int64_t track_num; + uint64_t track_num; uint8_t *data; uint8_t flags; int gap, lacing, num_len; - int timecode_diff; + int16_t timecode_diff; int64_t pts, xduration; int decoder_flags = 0; @@ -1848,14 +1875,15 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size, if (!(num_len = parse_ebml_uint(this, data, &track_num))) return 0; data += num_len; - - timecode_diff = (int)_X_BE_16(data); + + /* timecode_diff is signed */ + timecode_diff = (int16_t)parse_int16(data); data += 2; flags = *data; data += 1; - lprintf("track_num: %" PRId64 ", timecode_diff: %d, flags: 0x%x\n", track_num, timecode_diff, flags); + lprintf("track_num: %" PRIu64 ", timecode_diff: %d, flags: 0x%x\n", track_num, timecode_diff, flags); gap = flags & 1; lacing = (flags >> 1) & 0x3; @@ -1863,7 +1891,7 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size, if (!find_track_by_id(this, (int)track_num, &track)) { xprintf(this->stream->xine, XINE_VERBOSITY_LOG, - "demux_matroska: invalid track id: %" PRId64 "\n", track_num); + "demux_matroska: invalid track id: %" PRIu64 "\n", track_num); return 0; } @@ -1897,11 +1925,11 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size, } if (lacing == MATROSKA_NO_LACING) { - int block_size_left; + size_t block_size_left; lprintf("no lacing\n"); block_size_left = (this->block_data + block_size) - data; - lprintf("size: %d, block_size: %" PRIu64 "\n", block_size_left, block_size); + lprintf("size: %d, block_size: %u\n", block_size_left, block_size); if (track->handle_content != NULL) { track->handle_content((demux_plugin_t *)this, track, @@ -1917,9 +1945,9 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size, } } else { - int block_size_left; + size_t block_size_left; uint8_t lace_num; - int frame[MAX_FRAMES]; + size_t frame[MAX_FRAMES]; int i; /* number of laced frames */ @@ -1972,24 +2000,51 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size, break; case MATROSKA_EBML_LACING: { - int64_t tmp; + uint64_t first_frame_size; lprintf("ebml lacing\n"); /* size of each frame */ - if (!(num_len = parse_ebml_uint(this, data, &tmp))) + if (!(num_len = parse_ebml_uint(this, data, &first_frame_size))) + return 0; + if (num_len > block_size_left) { + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "demux_matroska: block too small\n"); + return 0; + } + if (first_frame_size > INT_MAX) { + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "demux_matroska: invalid first frame size (%" PRId64 ")\n", + first_frame_size); return 0; + } data += num_len; block_size_left -= num_len; - frame[0] = (int) tmp; + frame[0] = (int) first_frame_size; lprintf("first frame len: %d\n", frame[0]); block_size_left -= frame[0]; for (i = 1; i < lace_num; i++) { - if (!(num_len = parse_ebml_sint(this, data, &tmp))) + int64_t frame_size_diff; + int64_t frame_size; + + if (!(num_len = parse_ebml_sint(this, data, &frame_size_diff))) return 0; + if (num_len > block_size_left) { + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "demux_matroska: block too small\n"); + return 0; + } data += num_len; block_size_left -= num_len; - frame[i] = frame[i-1] + tmp; + + frame_size = frame[i-1] + frame_size_diff; + if (frame_size > INT_MAX || frame_size < 0) { + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "demux_matroska: invalid frame size (%" PRId64 ")\n", + frame_size); + return 0; + } + frame[i] = frame_size; block_size_left -= frame[i]; } @@ -2023,6 +2078,31 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size, return 1; } +static int parse_simpleblock(demux_matroska_t *this, size_t block_len, uint64_t cluster_timecode, uint64_t block_duration) +{ + int has_block = 0; + off_t block_pos = 0; + off_t file_len = 0; + int normpos = 0; + int is_key = 1; + + lprintf("simpleblock\n"); + block_pos = this->input->get_current_pos(this->input); + file_len = this->input->get_length(this->input); + if( file_len ) + normpos = (int) ( (double) block_pos * 65535 / file_len ); + + if (!read_block_data(this, block_len)) + return 0; + + has_block = 1; + /* we have the duration, we can parse the block now */ + if (!parse_block(this, block_len, cluster_timecode, block_duration, + normpos, is_key)) + return 0; + return 1; +} + static int parse_block_group(demux_matroska_t *this, uint64_t cluster_timecode, uint64_t cluster_duration) { @@ -2033,7 +2113,7 @@ static int parse_block_group(demux_matroska_t *this, off_t block_pos = 0; off_t file_len = 0; int normpos = 0; - int block_len = 0; + size_t block_len = 0; int is_key = 1; while (next_level == 3) { @@ -2087,7 +2167,8 @@ static int parse_block_group(demux_matroska_t *this, static int parse_cluster(demux_matroska_t *this) { ebml_parser_t *ebml = this->ebml; - int next_level = 2; + int this_level = ebml->level; + int next_level = this_level; uint64_t timecode = 0; uint64_t duration = 0; @@ -2104,7 +2185,7 @@ static int parse_cluster(demux_matroska_t *this) { this->first_cluster_found = 1; } - while (next_level == 2) { + while (next_level == this_level) { ebml_elem_t elem; if (!ebml_read_elem_head(ebml, &elem)) @@ -2128,6 +2209,11 @@ static int parse_cluster(demux_matroska_t *this) { if ((elem.len > 0) && !parse_block_group(this, timecode, duration)) return 0; break; + case MATROSKA_ID_CL_SIMPLEBLOCK: + lprintf("simpleblock\n"); + if (!parse_simpleblock(this, elem.len, timecode, duration)) + return 0; + break; case MATROSKA_ID_CL_BLOCK: lprintf("block\n"); if (!ebml_skip(ebml, &elem)) @@ -2274,6 +2360,7 @@ static int parse_top_level_head(demux_matroska_t *this, int *next_level) { ebml_elem_t elem; int ret_value = 1; off_t current_pos; + current_pos = this->input->get_current_pos(this->input); lprintf("current_pos: %" PRIdMAX "\n", (intmax_t)current_pos); @@ -2824,7 +2911,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_matroska_t)); + this = calloc(1, sizeof(demux_matroska_t)); this->demux_plugin.send_headers = demux_matroska_send_headers; this->demux_plugin.send_chunk = demux_matroska_send_chunk; @@ -2884,7 +2971,8 @@ static const char *get_extensions (demux_class_t *this_gen) { static const char *get_mimetypes (demux_class_t *this_gen) { - return "video/mkv: mkv: matroska;"; + return "video/mkv: mkv: matroska;" + "video/x-matroska: mkv: matroska;"; } @@ -2899,7 +2987,7 @@ static void *init_class (xine_t *xine, void *data) { demux_matroska_class_t *this; - this = xine_xmalloc (sizeof (demux_matroska_class_t)); + this = calloc(1, sizeof(demux_matroska_class_t)); this->xine = xine; this->demux_class.open_plugin = open_plugin; diff --git a/src/demuxers/demux_mng.c b/src/demuxers/demux_mng.c index 12da8ca86..d0d83ff80 100644 --- a/src/demuxers/demux_mng.c +++ b/src/demuxers/demux_mng.c @@ -104,7 +104,12 @@ static mng_bool mymng_close_stream(mng_handle mngh){ static mng_bool mymng_read_stream(mng_handle mngh, mng_ptr buffer, mng_uint32 size, mng_uint32 *bytesread){ demux_mng_t *this = (demux_mng_t*)mng_get_userdata(mngh); - *bytesread = this->input->read(this->input, buffer, size); + off_t n = this->input->read(this->input, buffer, size); + if (n < 0) { + *bytesread = 0; + return MNG_FALSE; + } + *bytesread = n; return MNG_TRUE; } @@ -112,11 +117,16 @@ static mng_bool mymng_read_stream(mng_handle mngh, mng_ptr buffer, mng_uint32 si static mng_bool mymng_process_header(mng_handle mngh, mng_uint32 width, mng_uint32 height){ demux_mng_t *this = (demux_mng_t*)mng_get_userdata(mngh); + if (width > 0x8000 || height > 0x8000) + return MNG_FALSE; + this->bih.biWidth = (width + 7) & ~7; this->bih.biHeight = height; this->left_edge = (this->bih.biWidth - width) / 2; - this->image = malloc(this->bih.biWidth * height * 3); + this->image = malloc((mng_size_t)this->bih.biWidth * (mng_size_t)height * 3); + if (!this->image) + return MNG_FALSE; mng_set_canvasstyle(mngh, MNG_CANVAS_RGB8); @@ -260,7 +270,7 @@ static demux_plugin_t* open_plugin(demux_class_t *class_gen, xine_stream_t *stre demux_mng_t *this; - this = xine_xmalloc (sizeof (demux_mng_t)); + this = calloc(1, sizeof(demux_mng_t)); this->stream = stream; this->input = input; @@ -360,7 +370,7 @@ static void class_dispose(demux_class_t *this){ static void *init_plugin(xine_t *xine, void *data){ demux_mng_class_t *this; - this = xine_xmalloc (sizeof (demux_mng_class_t)); + this = calloc(1, sizeof(demux_mng_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_mod.c b/src/demuxers/demux_mod.c index e7c6f86b3..34b8ebabe 100644 --- a/src/demuxers/demux_mod.c +++ b/src/demuxers/demux_mod.c @@ -73,7 +73,7 @@ typedef struct { char *title; char *artist; char *copyright; - off_t filesize; + size_t filesize; char *buffer; @@ -130,11 +130,22 @@ static int probe_mod_file(demux_mod_t *this) { /* returns 1 if the MOD file was opened successfully, 0 otherwise */ static int open_mod_file(demux_mod_t *this) { int total_read; + off_t input_length; /* Get size and create buffer */ - this->filesize = this->input->get_length(this->input); + input_length = this->input->get_length(this->input); + /* Avoid potential issues with signed variables and e.g. read() returning -1 */ + if (input_length > 0x7FFFFFFF || input_length < 0) { + xine_log(this->stream->xine, XINE_LOG_PLUGIN, "modplug - size overflow\n"); + return 0; + } + this->filesize = input_length; this->buffer = (char *)malloc(this->filesize); - + if(!this->buffer) { + xine_log(this->stream->xine, XINE_LOG_PLUGIN, "modplug - allocation failure\n"); + return 0; + } + /* Seek to beginning */ this->input->seek(this->input, 0, SEEK_SET); @@ -305,7 +316,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_mod_t)); + this = calloc(1, sizeof(demux_mod_t)); this->stream = stream; this->input = input; @@ -368,7 +379,19 @@ static const char *get_extensions (demux_class_t *this_gen) { } static const char *get_mimetypes (demux_class_t *this_gen) { - return NULL; + return "audio/x-mod: mod: SoundTracker/NoiseTracker/ProTracker Module;" + "audio/mod: mod: SoundTracker/NoiseTracker/ProTracker Module;" + "audio/it: it: ImpulseTracker Module;" + "audio/x-it: it: ImpulseTracker Module;" + "audio/x-stm: stm: ScreamTracker 2 Module;" + "audio/x-s3m: s3m: ScreamTracker 3 Module;" + "audio/s3m: s3m: ScreamTracker 3 Module;" + "application/playerpro: 669: 669 Tracker Module;" + "application/adrift: amf: ADRIFT Module File;" + "audio/med: med: Amiga MED/OctaMED Tracker Module Sound File;" + "audio/x-amf: amf: ADRIFT Module File;" + "audio/x-xm: xm: FastTracker II Audio;" + "audio/xm: xm: FastTracker II Audio;"; } static void class_dispose (demux_class_t *this_gen) { @@ -380,7 +403,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_mod_init_plugin (xine_t *xine, void *data) { demux_mod_class_t *this; - this = xine_xmalloc (sizeof (demux_mod_class_t)); + this = calloc(1, sizeof(demux_mod_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_mpc.c b/src/demuxers/demux_mpc.c index 346f0c2e6..220e1b8b6 100644 --- a/src/demuxers/demux_mpc.c +++ b/src/demuxers/demux_mpc.c @@ -47,6 +47,7 @@ #include "buffer.h" #include "bswap.h" #include "group_audio.h" +#include "id3.h" /* Note that the header is actually 25 bytes long, so we'd only read 28 * (because of byte swapping we have to round up to nearest multiple of 4) @@ -89,17 +90,13 @@ static int open_mpc_file(demux_mpc_t *this) { /* TODO: non-seeking version */ if (INPUT_IS_SEEKABLE(this->input)) { /* Check for id3v2 tag */ - if ((this->header[0] == 'I') || - (this->header[1] == 'D') || - (this->header[2] == '3')) { + if (id3v2_istag(this->header)) { lprintf("found id3v2 header\n"); /* Read tag size */ - id3v2_size = (this->header[6] << 21) + - (this->header[7] << 14) + - (this->header[8] << 7) + - this->header[9] + 10; + + id3v2_size = _X_BE_32_synchsafe(&this->header[6]) + 10; /* Add footer size if one is present */ if (this->header[5] & 0x10) @@ -118,9 +115,7 @@ static int open_mpc_file(demux_mpc_t *this) { } /* Validate signature - We only support SV 7.x at the moment */ - if ((this->header[0] != 'M') || - (this->header[1] != 'P') || - (this->header[2] != '+') || + if ( memcmp(this->header, "MP+", 3) != 0 || ((this->header[3]&0x0f) != 0x07)) return 0; @@ -214,7 +209,7 @@ static int demux_mpc_send_chunk(demux_plugin_t *this_gen) { /* Read data */ bytes_read = this->input->read(this->input, buf->content, bytes_to_read); - if(bytes_read == 0) { + if(bytes_read <= 0) { buf->free_buffer(buf); this->status = DEMUX_FINISHED; return this->status; @@ -324,7 +319,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_mpc_t *this; - this = xine_xmalloc (sizeof (demux_mpc_t)); + this = calloc(1, sizeof(demux_mpc_t)); this->stream = stream; this->input = input; @@ -381,11 +376,12 @@ static const char *get_identifier (demux_class_t *this_gen) { } static const char *get_extensions (demux_class_t *this_gen) { - return "mpc mp+"; + return "mpc mp+ mpp"; } static const char *get_mimetypes (demux_class_t *this_gen) { - return NULL; + return "audio/musepack: mpc, mp+, mpp: Musepack audio;" + "audio/x-musepack: mpc, mp+, mpp: Musepack audio;"; } static void class_dispose (demux_class_t *this_gen) { @@ -397,7 +393,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_mpc_init_plugin (xine_t *xine, void *data) { demux_mpc_class_t *this; - this = xine_xmalloc (sizeof (demux_mpc_class_t)); + this = calloc(1, sizeof(demux_mpc_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_mpeg.c b/src/demuxers/demux_mpeg.c index 4419f8404..85b62f48e 100644 --- a/src/demuxers/demux_mpeg.c +++ b/src/demuxers/demux_mpeg.c @@ -279,6 +279,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) if((this->dummy_space[0] & 0xE0) == 0x20) { buf = this->input->read_block (this->input, this->video_fifo, len-1); + if (! buf) { + this->status = DEMUX_FINISHED; + return; + } track = (this->dummy_space[0] & 0x1f); @@ -298,6 +302,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) int spu_id = this->dummy_space[1] & 0x03; buf = this->input->read_block (this->input, this->video_fifo, len-1); + if (! buf) { + this->status = DEMUX_FINISHED; + return; + } buf->type = BUF_SPU_SVCD + spu_id; buf->pts = pts; @@ -318,6 +326,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) if((this->dummy_space[0] & 0xfc) == 0x00) { buf = this->input->read_block (this->input, this->video_fifo, len-1); + if (! buf) { + this->status = DEMUX_FINISHED; + return; + } buf->type = BUF_SPU_CVD + (this->dummy_space[0] & 0x03); buf->pts = pts; @@ -330,7 +342,7 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) if((this->dummy_space[0] & 0xf0) == 0x80) { /* read rest of header - AC3 */ - i = this->input->read (this->input, this->dummy_space+1, 3); + this->input->read (this->input, this->dummy_space+1, 3); /* contents */ for (i = len - 4; i > 0; i -= (this->audio_fifo) @@ -376,6 +388,10 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) i = this->input->read (this->input, this->dummy_space+1, 6); buf = this->input->read_block (this->input, this->video_fifo, len-7); + if (! buf) { + this->status = DEMUX_FINISHED; + return; + } buf->type = BUF_AUDIO_LPCM_BE + track; buf->decoder_flags |= BUF_FLAG_SPECIAL; @@ -431,7 +447,7 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) header_len -= 5 ; } - i = this->input->read (this->input, this->dummy_space, header_len); + this->input->read (this->input, this->dummy_space, header_len); for (i = len; i > 0; i -= (this->audio_fifo) ? this->audio_fifo->buffer_pool_buf_size : this->video_fifo->buffer_pool_buf_size) { @@ -503,7 +519,7 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr) } /* read rest of header */ - i = this->input->read (this->input, this->dummy_space, header_len); + this->input->read (this->input, this->dummy_space, header_len); /* contents */ @@ -920,7 +936,7 @@ static void demux_mpeg_resync (demux_mpeg_t *this, uint32_t buf) { if (pos == len) { len = this->input->read(this->input, dummy_buf, sizeof(dummy_buf)); pos = 0; - if (len == 0) { + if (len <= 0) { this->status = DEMUX_FINISHED; break; } @@ -1067,7 +1083,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str input_plugin_t *input) { demux_mpeg_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_t)); + this = calloc(1, sizeof(demux_mpeg_t)); this->stream = stream; this->input = input; @@ -1246,7 +1262,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_mpeg_class_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_class_t)); + this = calloc(1, sizeof(demux_mpeg_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c index 32638129d..ffbc63f3d 100644 --- a/src/demuxers/demux_mpeg_block.c +++ b/src/demuxers/demux_mpeg_block.c @@ -1190,14 +1190,14 @@ static int demux_mpeg_detect_blocksize(demux_mpeg_block_t *this, input_plugin_t *input) { input->seek(input, 2048, SEEK_SET); - if (!input->read(input, this->scratch, 4)) + if (input->read(input, this->scratch, 4) != 4) return 0; if (this->scratch[0] || this->scratch[1] || (this->scratch[2] != 0x01) || (this->scratch[3] != 0xba)) { input->seek(input, 2324, SEEK_SET); - if (!input->read(input, this->scratch, 4)) + if (input->read(input, this->scratch, 4) != 4) return 0; if (this->scratch[0] || this->scratch[1] || (this->scratch[2] != 0x01) || (this->scratch[3] != 0xba)) @@ -1371,7 +1371,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str input_plugin_t *input = (input_plugin_t *) input_gen; demux_mpeg_block_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_block_t)); + this = calloc(1, sizeof(demux_mpeg_block_t)); this->stream = stream; this->input = input; @@ -1417,6 +1417,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str } input->seek(input, 0, SEEK_SET); + memset (this->scratch, 255, 5); /* result of input->read() won't matter */ if (input->read(input, this->scratch, this->blocksize)) { lprintf("open_plugin:read worked\n"); @@ -1540,7 +1541,7 @@ static void *init_plugin (xine_t *xine, void *data) { demux_mpeg_block_class_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_block_class_t)); + this = calloc(1, sizeof(demux_mpeg_block_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/demuxers/demux_mpeg_pes.c b/src/demuxers/demux_mpeg_pes.c index 423da5e24..b7c0e7e6d 100644 --- a/src/demuxers/demux_mpeg_pes.c +++ b/src/demuxers/demux_mpeg_pes.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2006 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -257,7 +257,6 @@ static void demux_mpeg_pes_parse_pack (demux_mpeg_pes_t *this, int preview_mode) uint8_t *p; int32_t result; off_t i; - int32_t n; uint8_t buf6[ 6 ]; this->scr = 0; @@ -274,7 +273,7 @@ static void demux_mpeg_pes_parse_pack (demux_mpeg_pes_t *this, int preview_mode) while ((p[2] != 1) || p[0] || p[1]) { /* resync code */ - for(n=0;n<5;n++) p[n]=p[n+1]; + memmove(p, p+1, 5); i = read_data(this, p+5, (off_t) 1); if (i != 1) { this->status = DEMUX_FINISHED; @@ -306,8 +305,7 @@ static void demux_mpeg_pes_parse_pack (demux_mpeg_pes_t *this, int preview_mode) p = buf->mem; /* copy local buffer to fifo element. */ - for (n = 0; n < sizeof (buf6); n++) - p[ n ] = buf6[ n ]; + memcpy(p, buf6, sizeof(buf6)); if (preview_mode) buf->decoder_flags = BUF_FLAG_PREVIEW; @@ -1613,7 +1611,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str input_plugin_t *input = (input_plugin_t *) input_gen; demux_mpeg_pes_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_pes_t)); + this = calloc(1, sizeof(demux_mpeg_pes_t)); this->stream = stream; this->input = input; @@ -1688,7 +1686,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str if (((input->get_capabilities(input) & INPUT_CAP_SEEKABLE) != 0) ) { input->seek(input, 0, SEEK_SET); - if (input->read(input, (char *)this->scratch, 6)) { + if (input->read(input, (char *)this->scratch, 6) == 6) { lprintf("open_plugin:read worked\n"); if (this->scratch[0] || this->scratch[1] @@ -1786,7 +1784,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_mpeg_pes_class_t *this; - this = xine_xmalloc (sizeof (demux_mpeg_pes_class_t)); + this = calloc(1, sizeof(demux_mpeg_pes_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c index 3730da6e4..a87de5f97 100644 --- a/src/demuxers/demux_mpgaudio.c +++ b/src/demuxers/demux_mpgaudio.c @@ -33,7 +33,7 @@ #include <string.h> #include <stdlib.h> -#define LOG_MODULE "demux_mpeg_audio" +#define LOG_MODULE "demux_mpgaudio" #define LOG_VERBOSE /* #define LOG @@ -51,8 +51,8 @@ * the second mp3 frame is sent to the decoder */ #define NUM_PREVIEW_BUFFERS 2 +#define NUM_VALID_FRAMES 3 -#define WRAP_THRESHOLD 120000 #define FOURCC_TAG BE_FOURCC #define RIFF_CHECK_BYTES 1024 @@ -79,16 +79,16 @@ /* mp3 frame struct */ typedef struct { /* header */ - double duration; - uint32_t size; /* in bytes */ + double duration; /* in milliseconds */ + uint32_t size; /* in bytes; including padding */ uint32_t bitrate; /* in bit per second */ uint16_t freq; /* in Hz */ - uint8_t layer; - uint8_t version_idx:2; /* 0: mpeg1, 1: mpeg2, 2: mpeg2.5 */ uint8_t lsf_bit:1; uint8_t channel_mode:3; + uint8_t padding:3; /* in bytes */ + uint8_t is_free_bitrate:1; } mpg_audio_frame_t; /* Xing Vbr Header struct */ @@ -131,7 +131,13 @@ typedef struct { int br; /* bitrate in bits/second */ uint32_t blocksize; + /* current mp3 frame */ mpg_audio_frame_t cur_frame; + + /* next mp3 frame, used when the frame size cannot be computed from the + * current frame header */ + mpg_audio_frame_t next_frame; + double cur_time; /* in milliseconds */ off_t mpg_frame_start; /* offset */ @@ -141,7 +147,15 @@ typedef struct { int check_vbr_header; xing_header_t *xing_header; vbri_header_t *vbri_header; - + + int found_next_frame:1; + int free_bitrate_count; + off_t free_bitrate_size; /* use this size if 3 free bitrate frames are encountered */ + uint8_t next_header[4]; + int mpg_version; + int mpg_layer; + int valid_frames; + } demux_mpgaudio_t ; /* demuxer class struct */ @@ -212,14 +226,14 @@ static int parse_frame_header(mpg_audio_frame_t *const frame, const uint8_t *con const uint32_t head = _X_BE_32(buf); const uint16_t frame_sync = head >> 21; - lprintf("header: %08X\n", head); if (frame_sync != 0x7ff) { - lprintf("invalid frame sync\n"); + lprintf("invalid frame sync %08X\n", head); return 0; } + lprintf("header: %08X\n", head); frame_header.mpeg25_bit = (head >> 20) & 0x1; - frame->lsf_bit = (head >> 19) & 0x1; + frame->lsf_bit = (head >> 19) & 0x1; if (!frame_header.mpeg25_bit) { if (frame->lsf_bit) { lprintf("reserved mpeg25 lsf combination\n"); @@ -240,14 +254,14 @@ static int parse_frame_header(mpg_audio_frame_t *const frame, const uint8_t *con } frame_header.bitrate_idx = (head >> 12) & 0xf; - if ((frame_header.bitrate_idx == 0) || (frame_header.bitrate_idx == 15)) { - lprintf("invalid bitrate index\n"); + if (frame_header.bitrate_idx == 15) { + lprintf("invalid bitrate index: %d\n", frame_header.bitrate_idx); return 0; } frame_header.freq_idx = (head >> 10) & 0x3; if (frame_header.freq_idx == 3) { - lprintf("invalid frequence index\n"); + lprintf("invalid frequence index: %d\n", frame_header.freq_idx); return 0; } @@ -280,19 +294,27 @@ static int parse_frame_header(mpg_audio_frame_t *const frame, const uint8_t *con const uint16_t samples = mp3_samples[frame->version_idx][frame->layer - 1]; frame->bitrate = mp3_bitrates[frame->version_idx][frame->layer - 1][frame_header.bitrate_idx] * 1000; frame->freq = mp3_freqs[frame->version_idx][frame_header.freq_idx]; - - frame->size = samples * (frame->bitrate / 8); - frame->size /= frame->freq; - /* Padding: only if padding_bit is set; 4 bytes for Layer 1 and 1 byte for others */ - frame->size += ( frame_header.padding_bit ? ( frame->layer == 1 ? 4 : 1 ) : 0 ); - frame->duration = 1000.0f * (double)samples / (double)frame->freq; + frame->padding = ( frame_header.padding_bit ? ( frame->layer == 1 ? 4 : 1 ) : 0 ); + frame->channel_mode = frame_header.channel_mode; + + if (frame->bitrate > 0) { + frame->size = samples * (frame->bitrate / 8); + frame->size /= frame->freq; + /* Padding: only if padding_bit is set; 4 bytes for Layer 1 and 1 byte for others */ + frame->size += frame->padding; + } else { + /* Free bitrate frame, the size of the frame cannot be computed from the header. */ + frame->is_free_bitrate = 1; + frame->size = 0; + } } - lprintf("mpeg %d, layer %d\n", frame->version_idx + 1, frame->layer); - lprintf("bitrate: %d bps, samplerate: %d Hz\n", frame->bitrate, frame->freq); + lprintf("mpeg %d, layer %d, channel_mode: %d\n", frame->version_idx + 1, + frame->layer, frame->channel_mode); + lprintf("bitrate: %d bps, output freq: %d Hz\n", frame->bitrate, frame->freq); lprintf("length: %d bytes, %f ms\n", frame->size, frame->duration); - lprintf("padding: %d bytes\n", ( frame_header.padding_bit ? ( frame->layer == 1 ? 4 : 1 ) : 0 )); + lprintf("padding: %d bytes\n", frame->padding); return 1; } @@ -300,8 +322,8 @@ static int parse_frame_header(mpg_audio_frame_t *const frame, const uint8_t *con * Parse a Xing header * return the Xing header or NULL on error */ -static xing_header_t* parse_xing_header(mpg_audio_frame_t *frame, - uint8_t *buf, int bufsize) { +static xing_header_t *XINE_MALLOC parse_xing_header(mpg_audio_frame_t *frame, + uint8_t *buf, int bufsize) { uint8_t *ptr = buf; xing_header_t *xing = NULL; @@ -325,11 +347,11 @@ static xing_header_t* parse_xing_header(mpg_audio_frame_t *frame, int has_frames_flag = 0; int has_bytes_flag = 0; - xing = xine_xmalloc (sizeof (xing_header_t)); + xing = calloc(1, sizeof(xing_header_t)); if (!xing) goto exit_error; - lprintf("Xing header found\n"); + lprintf("found Xing header\n"); ptr += 4; if (ptr >= (buf + bufsize - 4)) goto exit_error; @@ -416,14 +438,14 @@ exit_error: * Parse a Vbri header * return the Vbri header or NULL on error */ -static vbri_header_t* parse_vbri_header(mpg_audio_frame_t *frame, - uint8_t *buf, int bufsize) { +static vbri_header_t *XINE_MALLOC parse_vbri_header(mpg_audio_frame_t *frame, + uint8_t *buf, int bufsize) { int i; uint8_t *ptr = buf; vbri_header_t *vbri; - vbri = xine_xmalloc (sizeof (vbri_header_t)); + vbri = calloc(1, sizeof(vbri_header_t)); if (!vbri) return NULL; @@ -432,7 +454,7 @@ static vbri_header_t* parse_vbri_header(mpg_audio_frame_t *frame, if ((ptr + 4) >= (buf + bufsize)) return 0; lprintf("Checking %08X\n", *ptr); if (_X_BE_32(ptr) == VBRI_TAG) { - lprintf("Vbri header found\n"); + lprintf("found Vbri header\n"); ptr += 4; if ((ptr + 22) >= (buf + bufsize)) return 0; @@ -456,7 +478,7 @@ static vbri_header_t* parse_vbri_header(mpg_audio_frame_t *frame, lprintf("entry_frames: %d\n", vbri->entry_frames); if ((ptr + (vbri->toc_entries + 1) * vbri->entry_size) >= (buf + bufsize)) return 0; - vbri->toc = xine_xmalloc (sizeof(int) * (vbri->toc_entries + 1)); + vbri->toc = calloc (vbri->toc_entries + 1, sizeof (int)); if (!vbri->toc) { free (vbri); return NULL; @@ -496,6 +518,7 @@ static vbri_header_t* parse_vbri_header(mpg_audio_frame_t *frame, } } + /* * Parse a mp3 frame paylod * return 1 on success, 0 on error @@ -506,43 +529,97 @@ static int parse_frame_payload(demux_mpgaudio_t *this, buf_element_t *buf; off_t frame_pos, len; uint64_t pts = 0; + int payload_size = 0; frame_pos = this->input->get_current_pos(this->input) - 4; - lprintf("frame_pos = %"PRId64"\n", frame_pos); + lprintf("frame_pos = %"PRId64", header: %08X\n", frame_pos, _X_BE_32(frame_header)); buf = this->audio_fifo->buffer_pool_alloc(this->audio_fifo); if (this->cur_frame.size > buf->max_size) { xprintf(this->stream->xine, XINE_VERBOSITY_LOG, - "demux_mpgaudio: frame size is greater than fifo buffer size\n"); + LOG_MODULE ": frame size is greater than fifo buffer size\n"); buf->free_buffer(buf); return 0; } - - /* the decoder needs the frame header */ - memcpy(buf->mem, frame_header, 4); - len = this->input->read(this->input, buf->mem + 4, this->cur_frame.size - 4); - if (len != (this->cur_frame.size - 4)) { - buf->free_buffer(buf); - return 0; + memcpy(buf->content, frame_header, 4); + + /* compute the payload size */ + if (this->cur_frame.size > 0) { + payload_size = this->cur_frame.size - 4; + this->free_bitrate_count = 0; + } else if (this->free_bitrate_count >= NUM_VALID_FRAMES) { + payload_size = this->free_bitrate_size + this->cur_frame.padding - 4; + this->cur_frame.size = payload_size + 4; + } else { + this->free_bitrate_count++; + payload_size = 0; + } + + /* Read the payload data. */ + if (payload_size > 0) { + off_t len; + + /* If we know the payload size, it's easy */ + this->found_next_frame = 0; + len = this->input->read(this->input, buf->content + 4, payload_size); + if (len != payload_size) { + buf->free_buffer(buf); + return 0; + } + } else { + /* Search for the beginning of the next frame and deduce the size of the + * current frame from the position of the next one. */ + int payload_size = 0; + int max_size = buf->max_size - 4; + + while (payload_size < max_size) { + len = this->input->read(this->input, &buf->content[4 + payload_size], 1); + if (len != 1) { + lprintf("EOF\n"); + buf->free_buffer(buf); + return 0; + } + payload_size += len; + + if (parse_frame_header(&this->next_frame, &buf->content[payload_size])) { + lprintf("found next frame header\n"); + + if (this->free_bitrate_size == 0) { + this->free_bitrate_size = payload_size - this->cur_frame.padding; + } + + /* don't read the frame header twice */ + this->found_next_frame = 1; + memcpy(&this->next_header[0], &buf->content[payload_size], 4); + payload_size -= 4; + break; + } + } + this->cur_frame.size = payload_size + 4; + this->cur_frame.bitrate = 8000 * this->cur_frame.size / this->cur_frame.duration; + lprintf("free bitrate: bitrate: %d, frame size: %d\n", this->br, this->cur_frame.size); } if (this->check_vbr_header) { this->check_vbr_header = 0; this->mpg_frame_start = frame_pos; - this->xing_header = parse_xing_header(&this->cur_frame, buf->mem, this->cur_frame.size); + this->xing_header = parse_xing_header(&this->cur_frame, buf->content, this->cur_frame.size); if (this->xing_header) { buf->free_buffer(buf); + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + LOG_MODULE ": found Xing header at offset %"PRId64"\n", frame_pos); return 1; } - this->vbri_header = parse_vbri_header(&this->cur_frame, buf->mem, this->cur_frame.size); + this->vbri_header = parse_vbri_header(&this->cur_frame, buf->content, this->cur_frame.size); if (this->vbri_header) { buf->free_buffer(buf); + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + LOG_MODULE ": found Vbri header at offset %"PRId64"\n", frame_pos); return 1; } } - pts = (int64_t)(this->cur_time * 90.0f); @@ -551,8 +628,7 @@ static int parse_frame_payload(demux_mpgaudio_t *this, buf->extra_info->input_time = this->cur_time; buf->pts = pts; - buf->size = len + 4; - buf->content = buf->mem; + buf->size = this->cur_frame.size; buf->type = BUF_AUDIO_MPEG; buf->decoder_info[0] = 1; buf->decoder_flags = decoder_flags | BUF_FLAG_FRAME_END; @@ -572,8 +648,8 @@ static int parse_frame_payload(demux_mpgaudio_t *this, } } + lprintf("send buffer: size=%d, pts=%"PRId64"\n", buf->size, pts); this->audio_fifo->put(this->audio_fifo, buf); - lprintf("send buffer: pts=%"PRId64"\n", pts); this->cur_time += this->cur_frame.duration; return 1; } @@ -583,11 +659,12 @@ static int parse_frame_payload(demux_mpgaudio_t *this, * 32-bit MP3 frame header. * return 1 if found, 0 if not found */ -static int sniff_buffer_looks_like_mp3 (uint8_t *buf, int buflen) +static int sniff_buffer_looks_like_mp3 (uint8_t *buf, int buflen, int *version, int *layer) { int offset; mpg_audio_frame_t frame; + *version = *layer = 0; if (buf == NULL) return 0; @@ -596,20 +673,21 @@ static int sniff_buffer_looks_like_mp3 (uint8_t *buf, int buflen) if (parse_frame_header(&frame, buf + offset)) { size_t size = frame.size; - /* Since one frame is available, is there another frame - * just to be sure this is more likely to be a real MP3 - * buffer? */ - offset += size; - - if (offset + 4 >= buflen) { - return 0; - } + if (size > 0) { + /* Since one frame is available, is there another frame + * just to be sure this is more likely to be a real MP3 + * buffer? */ + if (offset + size + 4 >= buflen) { + return 0; + } - if (parse_frame_header(&frame, buf + offset)) { - lprintf("mpeg audio frame detected\n"); - return 1; + if (parse_frame_header(&frame, buf + offset + size)) { + *version = frame.version_idx + 1; + *layer = frame.layer; + lprintf("frame detected, mpeg %d layer %d\n", *version, *layer); + return 1; + } } - break; } } return 0; @@ -637,40 +715,51 @@ static int read_frame_header(demux_mpgaudio_t *this, uint8_t *header_buf, int by * Parse next mp3 frame */ static int demux_mpgaudio_next (demux_mpgaudio_t *this, int decoder_flags, int send_header) { - uint8_t header_buf[4]; - int bytes = 4; - - for (;;) { - - if (read_frame_header(this, header_buf, bytes)) { - - if (parse_frame_header(&this->cur_frame, header_buf)) { - - /* send header buffer */ - if ( send_header ) { - buf_element_t *buf; - - buf = this->audio_fifo->buffer_pool_alloc(this->audio_fifo); - - buf->type = BUF_AUDIO_MPEG; - buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_STDHEADER|BUF_FLAG_FRAME_END; - - buf->decoder_info[0] = 0; - buf->decoder_info[1] = this->cur_frame.freq; - buf->decoder_info[2] = 0; /* bits_per_sample */ - - /* Only for channel_mode == 3 (mono) there is one channel, for any other case, there are 2 */ - buf->decoder_info[3] = ( this->cur_frame.channel_mode == 3 ) ? 1 : 2; - - buf->size = 0; /* No extra header data */ - - this->audio_fifo->put(this->audio_fifo, buf); - } - - return parse_frame_payload(this, header_buf, decoder_flags); - - } else if ( id3v2_istag(header_buf) ) { - if (!id3v2_parse_tag(this->input, this->stream, header_buf)) { + uint8_t buffer[4]; + uint8_t *header = buffer; + + if (this->found_next_frame) { + lprintf("skip header reading\n"); + header = this->next_header; + memcpy(&this->cur_frame, &this->next_frame, sizeof(mpg_audio_frame_t)); + } else { + int bytes = 4; + int loose_sync = 0; + + for (;;) { + if (!read_frame_header(this, header, bytes)) + return 0; + if (parse_frame_header(&this->cur_frame, header)) { + lprintf("frame found\n"); + + /* additionnal checks */ + if ((this->mpg_version == (this->cur_frame.version_idx + 1)) && + (this->mpg_layer == this->cur_frame.layer)) { + this->valid_frames++; + break; + } else { + if (this->valid_frames >= NUM_VALID_FRAMES) { + lprintf("invalid frame. expected mpeg %d, layer %d\n", this->mpg_version, this->mpg_layer); + } else { + this->mpg_version = this->cur_frame.version_idx + 1; + this->mpg_layer = this->cur_frame.layer; + this->valid_frames = 0; + break; + } + } + } + + if (!loose_sync) { + off_t frame_pos = this->input->get_current_pos(this->input) - 4; + loose_sync = 1; + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + LOG_MODULE ": loose mp3 sync at offset %"PRId64"\n", frame_pos); + } + /* the stream is broken, don't keep info about previous frames */ + this->free_bitrate_size = 0; + + if ( id3v2_istag(header) ) { + if (!id3v2_parse_tag(this->input, this->stream, header)) { xprintf(this->stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2 tag parsing error\n"); bytes = 1; /* resync */ @@ -681,12 +770,31 @@ static int demux_mpgaudio_next (demux_mpgaudio_t *this, int decoder_flags, int s /* skip */ bytes = 1; } - - } else { - lprintf("read error\n"); - return 0; } } + + /* send header buffer */ + if ( send_header ) { + buf_element_t *buf; + + buf = this->audio_fifo->buffer_pool_alloc(this->audio_fifo); + + buf->type = BUF_AUDIO_MPEG; + buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_STDHEADER|BUF_FLAG_FRAME_END; + + buf->decoder_info[0] = 0; + buf->decoder_info[1] = this->cur_frame.freq; + buf->decoder_info[2] = 0; /* bits_per_sample */ + + /* Only for channel_mode == 3 (mono) there is one channel, for any other case, there are 2 */ + buf->decoder_info[3] = ( this->cur_frame.channel_mode == 3 ) ? 1 : 2; + + buf->size = 0; /* No extra header data */ + + this->audio_fifo->put(this->audio_fifo, buf); + } + + return parse_frame_payload(this, header, decoder_flags); } static int demux_mpgaudio_send_chunk (demux_plugin_t *this_gen) { @@ -742,12 +850,13 @@ static int demux_mpgaudio_read_head(input_plugin_t *input, uint8_t *buf) { * mp3 stream detection * return 1 if detected, 0 otherwise */ -static int detect_mpgaudio_file(input_plugin_t *input) { - mpg_audio_frame_t frame; +static int detect_mpgaudio_file(input_plugin_t *input, + int *version, int *layer) { uint8_t buf[MAX_PREVIEW_SIZE]; int preview_len; uint32_t head; + *version = *layer = 0; preview_len = demux_mpgaudio_read_head(input, buf); if (preview_len < 4) return 0; @@ -774,15 +883,15 @@ static int detect_mpgaudio_file(input_plugin_t *input) { lprintf("cannot read mp3 frame header\n"); return 0; } - if (!parse_frame_header(&frame, &buf[10 + tag_size])) { - lprintf ("invalid mp3 frame header\n"); + if (!sniff_buffer_looks_like_mp3(&buf[10 + tag_size], preview_len - 10 - tag_size, version, layer)) { + lprintf ("sniff_buffer_looks_like_mp3 failed\n"); return 0; } else { lprintf ("a valid mp3 frame follows the id3v2 tag\n"); } } else if (head == MPEG_MARKER) { return 0; - } else if (!sniff_buffer_looks_like_mp3(buf, preview_len)) { + } else if (!sniff_buffer_looks_like_mp3(buf, preview_len, version, layer)) { lprintf ("sniff_buffer_looks_like_mp3 failed\n"); return 0; } @@ -821,11 +930,12 @@ static void demux_mpgaudio_send_headers (demux_plugin_t *this_gen) { */ this->check_vbr_header = 1; for (i = 0; i < NUM_PREVIEW_BUFFERS; i++) { + lprintf("preview buffer number %d / %d\n", i + 1, NUM_PREVIEW_BUFFERS); if (!demux_mpgaudio_next (this, BUF_FLAG_PREVIEW, i == 0)) { break; } } - + if (this->xing_header) { xing_header_t *xing = this->xing_header; @@ -836,7 +946,7 @@ static void demux_mpgaudio_send_headers (demux_plugin_t *this_gen) { if (this->stream_length) { this->br = ((uint64_t)xing->stream_size * 8 * 1000) / this->stream_length; } - + } else if (this->vbri_header) { vbri_header_t *vbri = this->vbri_header; @@ -879,7 +989,7 @@ static void demux_mpgaudio_send_headers (demux_plugin_t *this_gen) { { char scratch_buf[256]; char *mpeg_ver[3] = {"1", "2", "2.5"}; - + snprintf(scratch_buf, 256, "MPEG %s Layer %1d%s", mpeg_ver[this->cur_frame.version_idx], this->cur_frame.layer, (this->xing_header)? " VBR" : " CBR" ); @@ -1007,7 +1117,8 @@ static int demux_mpgaudio_seek (demux_plugin_t *this_gen, /* assume seeking is always perfect... */ this->cur_time = start_time; this->input->seek (this->input, seek_pos, SEEK_SET); - + this->found_next_frame = 0; + if (playing) { _x_demux_flush_engine(this->stream); } @@ -1047,13 +1158,15 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str input_plugin_t *input) { demux_mpgaudio_t *this; + int version = 0; + int layer = 0; lprintf("trying to open %s...\n", input->get_mrl(input)); switch (stream->content_detection_method) { case METHOD_BY_CONTENT: { - if (!detect_mpgaudio_file(input)) + if (!detect_mpgaudio_file(input, &version, &layer)) return NULL; } break; @@ -1076,8 +1189,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str default: return NULL; } - - this = xine_xmalloc (sizeof (demux_mpgaudio_t)); + + this = calloc(1, sizeof(demux_mpgaudio_t)); this->demux_plugin.send_headers = demux_mpgaudio_send_headers; this->demux_plugin.send_chunk = demux_mpgaudio_send_chunk; @@ -1088,12 +1201,17 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str this->demux_plugin.get_capabilities = demux_mpgaudio_get_capabilities; this->demux_plugin.get_optional_data = demux_mpgaudio_get_optional_data; this->demux_plugin.demux_class = class_gen; - - this->input = input; - this->audio_fifo = stream->audio_fifo; - this->status = DEMUX_FINISHED; - this->stream = stream; - + + this->input = input; + this->audio_fifo = stream->audio_fifo; + this->status = DEMUX_FINISHED; + this->stream = stream; + + this->mpg_version = version; + this->mpg_layer = layer; + if (version || layer) { + this->valid_frames = NUM_VALID_FRAMES; + } return &this->demux_plugin; } @@ -1147,7 +1265,7 @@ void *demux_mpgaudio_init_class (xine_t *xine, void *data) { demux_mpgaudio_class_t *this; - this = xine_xmalloc (sizeof (demux_mpgaudio_class_t)); + this = calloc(1, sizeof(demux_mpgaudio_class_t)); this->xine = xine; this->demux_class.open_plugin = open_plugin; diff --git a/src/demuxers/demux_nsf.c b/src/demuxers/demux_nsf.c index 81f42044f..926ea97e1 100644 --- a/src/demuxers/demux_nsf.c +++ b/src/demuxers/demux_nsf.c @@ -97,18 +97,14 @@ static int open_nsf_file(demux_nsf_t *this) { return 0; /* check for the signature */ - if ((header[0] != 'N') || - (header[1] != 'E') || - (header[2] != 'S') || - (header[3] != 'M') || - (header[4] != 0x1A)) + if (memcmp(header, "NESM\x1A", 5) != 0) return 0; this->total_songs = header[6]; this->current_song = header[7]; - this->title = strdup(&header[0x0E]); - this->artist = strdup(&header[0x2E]); - this->copyright = strdup(&header[0x4E]); + this->title = strndup((char*)&header[0x0E], 0x20); + this->artist = strndup((char*)&header[0x2E], 0x20); + this->copyright = strndup((char*)&header[0x4E], 0x20); this->filesize = this->input->get_length(this->input); @@ -128,7 +124,7 @@ static int demux_nsf_send_chunk(demux_plugin_t *this_gen) { buf->type = BUF_AUDIO_NSF; bytes_read = this->input->read(this->input, buf->content, buf->max_size); - if (bytes_read == 0) { + if (bytes_read <= 0) { /* the file has been completely loaded, free the buffer and start * sending control buffers */ buf->free_buffer(buf); @@ -303,7 +299,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_nsf_t)); + this = calloc(1, sizeof(demux_nsf_t)); this->stream = stream; this->input = input; @@ -377,7 +373,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_nsf_init_plugin (xine_t *xine, void *data) { demux_nsf_class_t *this; - this = xine_xmalloc (sizeof (demux_nsf_class_t)); + this = calloc(1, sizeof(demux_nsf_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_nsv.c b/src/demuxers/demux_nsv.c index 44bb18c79..42d31ca14 100644 --- a/src/demuxers/demux_nsv.c +++ b/src/demuxers/demux_nsv.c @@ -50,7 +50,6 @@ #define FOURCC_TAG BE_FOURCC #define NSVf_TAG FOURCC_TAG('N', 'S', 'V', 'f') #define NSVs_TAG FOURCC_TAG('N', 'S', 'V', 's') -#define NONE_TAG FOURCC_TAG('N', 'O', 'N', 'E') #define BEEF 0xEFBE @@ -256,17 +255,11 @@ static int open_nsv_file(demux_nsv_t *this) { return 0; /* check for a 'NSV' signature */ - if ((preview[0] != 'N') || - (preview[1] != 'S') || - (preview[2] != 'V')) - { - if ((preview[0] != 'Z') || - (preview[1] != 0) || - (preview[2] != '9')) - return 0; + if ( memcmp(preview, "Z\09", 3) == 0) { this->is_ultravox = preview[3]; this->ultravox_first = 1; - } + } else if ( memcmp(preview, "NSV", 3) != 0 ) + return 0; lprintf("NSV file detected, ultravox=%d\n", this->is_ultravox); @@ -302,13 +295,13 @@ static int open_nsv_file(demux_nsv_t *this) { return 0; this->video_fourcc = _X_ME_32(&preview[4]); - if (_X_BE_32(&preview[4]) == NONE_TAG) + if (_x_is_fourcc(&preview[4], "NONE")) this->video_type = 0; else this->video_type = _x_fourcc_to_buf_video(this->video_fourcc); this->audio_fourcc = _X_ME_32(&preview[8]); - if (_X_BE_32(&preview[8]) == NONE_TAG) + if (_x_is_fourcc(&preview[8], "NONE")) this->audio_type = 0; else this->audio_type = _x_formattag_to_buf_audio(this->audio_fourcc); @@ -594,7 +587,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_nsv_t *this; - this = xine_xmalloc (sizeof (demux_nsv_t)); + this = calloc(1, sizeof(demux_nsv_t)); this->stream = stream; this->input = input; @@ -668,7 +661,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *demux_nsv_init_plugin (xine_t *xine, void *data) { demux_nsv_class_t *this; - this = xine_xmalloc (sizeof (demux_nsv_class_t)); + this = calloc(1, sizeof(demux_nsv_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_ogg.c b/src/demuxers/demux_ogg.c index 9ed39f12d..e3a9b20c4 100644 --- a/src/demuxers/demux_ogg.c +++ b/src/demuxers/demux_ogg.c @@ -194,7 +194,7 @@ static int get_stream (demux_ogg_t *this, int serno) { static int new_stream_info (demux_ogg_t *this, const int cur_serno) { int stream_num; - this->si[this->num_streams] = (stream_info_t *)xine_xmalloc(sizeof(stream_info_t)); + this->si[this->num_streams] = (stream_info_t *)calloc(1, sizeof(stream_info_t)); ogg_stream_init(&this->si[this->num_streams]->oss, cur_serno); stream_num = this->num_streams; this->si[stream_num]->buf_types = 0; @@ -237,7 +237,7 @@ static int read_ogg_packet (demux_ogg_t *this) { while (ogg_sync_pageout(&this->oy,&this->og)!=1) { buffer = ogg_sync_buffer(&this->oy, CHUNKSIZE); bytes = this->input->read(this->input, buffer, CHUNKSIZE); - if (bytes == 0) { + if (bytes <= 0) { if (total == 0) { lprintf("read_ogg_packet read nothing\n"); return 0; @@ -304,10 +304,10 @@ static void send_ogg_packet (demux_ogg_t *this, buf_element_t *buf; int done=0,todo=op->bytes; - int op_size = sizeof(ogg_packet); + const size_t op_size = sizeof(ogg_packet); while (done<todo) { - int offset=0; + size_t offset=0; buf = fifo->buffer_pool_alloc (fifo); buf->decoder_flags = decoder_flags; if (done==0) { @@ -498,7 +498,7 @@ static void read_chapter_comment (demux_ogg_t *this, ogg_packet *op) { lprintf("time: %d %d %d %d\n", hour, min,sec,msec); if (!this->chapter_info) { - this->chapter_info = (chapter_info_t *)xine_xmalloc(sizeof(chapter_info_t)); + this->chapter_info = (chapter_info_t *)calloc(1, sizeof(chapter_info_t)); this->chapter_info->current_chapter = -1; } this->chapter_info->max_chapter = chapter_no; @@ -531,34 +531,34 @@ static void update_chapter_display (demux_ogg_t *this, int stream_num, ogg_packe chapter--; if (chapter != this->chapter_info->current_chapter){ - xine_event_t uevent; - xine_ui_data_t data; - int title_len; - char *title; + xine_ui_data_t data = { + .str = { 0, }, + .str_len = 0 + }; + xine_event_t uevent = { + .type = XINE_EVENT_UI_SET_TITLE, + .stream = this->stream, + .data = &data, + .data_length = sizeof(data) + }; this->chapter_info->current_chapter = chapter; - if (chapter >= 0) { - char t_title[256]; + if (chapter >= 0) { if (this->title) { - snprintf(t_title, sizeof (t_title), "%s / %s", this->title, this->chapter_info->entries[chapter].name); + data.str_len = snprintf(data.str, sizeof(data.str), "%s / %s", this->title, this->chapter_info->entries[chapter].name); } else { - snprintf(t_title, sizeof (t_title), "%s", this->chapter_info->entries[chapter].name); + strncpy(data.str, this->chapter_info->entries[chapter].name, sizeof(data.str)-1); } - title = t_title; } else { - title = this->title; + strncpy(data.str, this->title, sizeof(data.str)); } - _x_meta_info_set(this->stream, XINE_META_INFO_TITLE, title); - lprintf("new TITLE: %s\n", title); - - uevent.type = XINE_EVENT_UI_SET_TITLE; - uevent.stream = this->stream; - uevent.data = &data; - uevent.data_length = sizeof(data); - title_len = strlen(title) + 1; - memcpy(data.str, title, title_len); - data.str_len = title_len; + if ( data.str_len == 0 ) + data.str_len = strlen(data.str); + + _x_meta_info_set(this->stream, XINE_META_INFO_TITLE, data.str); + lprintf("new TITLE: %s\n", data.str); + xine_event_send(this->stream, &uevent); } } @@ -1020,7 +1020,7 @@ static void decode_dshow_header (demux_ogg_t *this, const int stream_num, ogg_pa this->si[stream_num]->headers = 0; /* header is sent below */ - if ( (_X_LE_32(&op->packet[96]) == 0x05589f80) && (op->bytes >= 184)) { + if ( _x_is_fourcc(&op->packet[96], "\x05\x58\x9f\x80") && (op->bytes >= 184)) { buf_element_t *buf; xine_bmiheader bih; @@ -1079,7 +1079,7 @@ static void decode_dshow_header (demux_ogg_t *this, const int stream_num, ogg_pa this->ignore_keyframes = 1; - } else if (_X_LE_32(&op->packet[96]) == 0x05589F81) { + } else if (_x_is_fourcc(&op->packet[96], "\x05\x58\x9f\x81")) { #if 0 /* FIXME: no test streams */ @@ -1194,27 +1194,27 @@ static void decode_theora_header (demux_ogg_t *this, const int stream_num, ogg_p static void decode_flac_header (demux_ogg_t *this, const int stream_num, ogg_packet *op) { xine_flac_metadata_header header; - xine_flac_streaminfo_block streaminfo; + xine_flac_streaminfo_block streaminfo = {}; buf_element_t *buf; xine_waveformatex wave; - /* Packet type */ - _x_assert(op->packet[0] == 0x7F); + static const uint8_t flac_signature_1[] = + { + /* Packet type */ + 0x7F, + /* OggFLAC signature */ + 'F', 'L', 'A', 'C', + /* Version: only 1.0 supported */ + 1, 0 + }; + static const uint8_t flac_signature_2[] = "fLaC"; - /* OggFLAC signature */ - _x_assert(op->packet[1] == 'F'); _x_assert(op->packet[2] == 'L'); - _x_assert(op->packet[3] == 'A'); _x_assert(op->packet[4] == 'C'); - - /* Version: supported only 1.0 */ - _x_assert(op->packet[5] == 1); _x_assert(op->packet[6] == 0); + _x_assert(memcmp(&op->packet[0], flac_signature_1, sizeof(flac_signature_1)) == 0); + _x_assert(memcmp(&op->packet[9], flac_signature_2, sizeof(flac_signature_2)) == 0); /* Header count */ this->si[stream_num]->headers = 0/*_X_BE_16(&op->packet[7]) +1*/; - /* fLaC signature */ - _x_assert(op->packet[9] == 'f'); _x_assert(op->packet[10] == 'L'); - _x_assert(op->packet[11] == 'a'); _x_assert(op->packet[12] == 'C'); - _x_parse_flac_metadata_header(&op->packet[13], &header); switch ( header.blocktype ) { @@ -1267,8 +1267,8 @@ static void decode_annodex_header (demux_ogg_t *this, const int stream_num, ogg_ static void decode_anxdata_header (demux_ogg_t *this, const int stream_num, ogg_packet *op) { int64_t granule_rate_n, granule_rate_d; uint32_t secondary_headers; - char content_type[1024]; - int content_type_length; + const char *content_type = ""; + size_t content_type_length = 0; lprintf("AnxData stream detected\n"); @@ -1280,11 +1280,16 @@ static void decode_anxdata_header (demux_ogg_t *this, const int stream_num, ogg_ lprintf("granule_rate %" PRId64 "/%" PRId64 ", %d secondary headers\n", granule_rate_n, granule_rate_d, secondary_headers); - /* read "Content-Tyoe" MIME header */ - sscanf(&op->packet[28], "Content-Type: %1023s\r\n", content_type); - content_type_length = strlen(content_type); + /* read "Content-Type" MIME header */ + const char *startline = &op->packet[28]; + const char *endline; + if ( strcmp(&op->packet[28], "Content-Type: ") == 0 && + (endline = strstr(startline, "\r\n")) ) { + content_type = startline + sizeof("Content-Type: "); + content_type_length = startline - endline; + } - lprintf("Content-Type: %s (length:%d)\n", content_type, content_type_length); + lprintf("Content-Type: %s (length:%td)\n", content_type, content_type_length); /* how many header packets in the AnxData stream? */ this->si[stream_num]->headers = secondary_headers + 1; @@ -1352,7 +1357,7 @@ static void send_header (demux_ogg_t *this) { this->ignore_keyframes = 0; while (!done) { - if (!read_ogg_packet(this)) { + if (!read_ogg_packet(this) || !this->og.header || !this->og.body) { return; } /* now we've got at least one new page */ @@ -1478,6 +1483,12 @@ static int demux_ogg_send_chunk (demux_plugin_t *this_gen) { return this->status; } + if (!this->og.header || !this->og.body) { + this->status = DEMUX_FINISHED; + lprintf ("EOF\n"); + return this->status; + } + /* now we've got one new page */ cur_serno = ogg_page_serialno (&this->og); @@ -1924,11 +1935,7 @@ static int detect_ogg_content (int detection_method, demux_class_t *class_gen, if (_x_demux_read_header(input, buf, 4) != 4) return 0; - if ((buf[0] == 'O') && (buf[1] == 'g') && (buf[2] == 'g') && - (buf[3] == 'S')) - return 1; - else - return 0; + return _x_is_fourcc(buf, "OggS"); } case METHOD_BY_EXTENSION: { @@ -2026,8 +2033,7 @@ static demux_plugin_t *anx_open_plugin (demux_class_t *class_gen, * if we reach this point, the input has been accepted. */ - this = xine_xmalloc (sizeof (demux_ogg_t)); - memset (this, 0, sizeof(demux_ogg_t)); + this = calloc(1, sizeof(demux_ogg_t)); this->stream = stream; this->input = input; @@ -2072,8 +2078,7 @@ static demux_plugin_t *ogg_open_plugin (demux_class_t *class_gen, * if we reach this point, the input has been accepted. */ - this = xine_xmalloc (sizeof (demux_ogg_t)); - memset (this, 0, sizeof(demux_ogg_t)); + this = calloc(1, sizeof(demux_ogg_t)); this->stream = stream; this->input = input; @@ -2118,7 +2123,12 @@ static const char *anx_get_extensions (demux_class_t *this_gen) { } static const char *anx_get_mimetypes (demux_class_t *this_gen) { - return "application/x-annodex: ogg: Annodex media;"; + return "application/annodex: anx: Annodex media;" + "application/x-annodex: anx: Annodex media;" + "audio/annodex: axa: Annodex audio;" + "audio/x-annodex: axa: Annodex audio;" + "video/annodex: axv: Annodex video;" + "video/x-annodex: axv: Annodex video;"; } static void anx_class_dispose (demux_class_t *this_gen) { @@ -2130,7 +2140,7 @@ static void anx_class_dispose (demux_class_t *this_gen) { static void *anx_init_class (xine_t *xine, void *data) { demux_anx_class_t *this; - this = xine_xmalloc (sizeof (demux_anx_class_t)); + this = calloc(1, sizeof(demux_anx_class_t)); this->demux_class.open_plugin = anx_open_plugin; this->demux_class.get_description = anx_get_description; @@ -2155,14 +2165,19 @@ static const char *ogg_get_identifier (demux_class_t *this_gen) { } static const char *ogg_get_extensions (demux_class_t *this_gen) { - return "ogg ogm spx"; + return "ogx ogv oga ogg spx ogm"; } static const char *ogg_get_mimetypes (demux_class_t *this_gen) { - return "audio/x-ogg: ogg: OggVorbis Audio;" - "audio/x-speex: ogg: Speex Audio;" - "application/x-ogg: ogg: Ogg Stream;" - "application/ogg: ogg: Ogg Stream;"; + return "application/ogg: ogx: Ogg Stream;" + "application/x-ogg: ogx: Ogg Stream;" + "application/x-ogm: ogx: Ogg Stream;" + "application/x-ogm-audio: oga: Ogg Audio;" + "application/x-ogm-video: ogv: Ogg Video;" + "audio/ogg: oga: Ogg Audio;" + "audio/x-ogg: oga: Ogg Audio;" + "video/ogg: ogv: Ogg Video;" + "video/x-ogg: ogv: Ogg Video;"; } static void ogg_class_dispose (demux_class_t *this_gen) { @@ -2174,7 +2189,7 @@ static void ogg_class_dispose (demux_class_t *this_gen) { static void *ogg_init_class (xine_t *xine, void *data) { demux_ogg_class_t *this; - this = xine_xmalloc (sizeof (demux_ogg_class_t)); + this = calloc(1, sizeof(demux_ogg_class_t)); this->demux_class.open_plugin = ogg_open_plugin; this->demux_class.get_description = ogg_get_description; diff --git a/src/demuxers/demux_pva.c b/src/demuxers/demux_pva.c index 298d936b5..ddd32b63c 100644 --- a/src/demuxers/demux_pva.c +++ b/src/demuxers/demux_pva.c @@ -430,7 +430,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_pva_t)); + this = calloc(1, sizeof(demux_pva_t)); this->stream = stream; this->input = input; @@ -503,7 +503,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_pva_class_t *this; - this = xine_xmalloc (sizeof (demux_pva_class_t)); + this = calloc(1, sizeof(demux_pva_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c index a55a0aef3..5aba5b479 100644 --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -134,7 +134,7 @@ typedef unsigned int qt_atom; #define MAX_PTS_DIFF 100000 /* network bandwidth, cribbed from src/input/input_mms.c */ -const int64_t bandwidths[]={14400,19200,28800,33600,34430,57600, +static const int64_t bandwidths[]={14400,19200,28800,33600,34430,57600, 115200,262200,393216,524300,1544000,10485800}; /* these are things that can go wrong */ @@ -581,7 +581,7 @@ static void find_moov_atom(input_plugin_t *input, off_t *moov_offset, static qt_info *create_qt_info(void) { qt_info *info; - info = (qt_info *)xine_xmalloc(sizeof(qt_info)); + info = (qt_info *)calloc(1, sizeof(qt_info)); if (!info) return NULL; @@ -738,39 +738,67 @@ static void parse_meta_atom(qt_info *info, unsigned char *meta_atom) { if (current_atom == ART_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->artist = xine_xmalloc(string_size); - strncpy(info->artist, &meta_atom[i + 20], string_size - 1); - info->artist[string_size - 1] = 0; + if (info->artist) { + strncpy(info->artist, &meta_atom[i + 20], string_size - 1); + info->artist[string_size - 1] = 0; + } } else if (current_atom == NAM_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->name = xine_xmalloc(string_size); - strncpy(info->name, &meta_atom[i + 20], string_size - 1); - info->name[string_size - 1] = 0; + if (info->name) { + strncpy(info->name, &meta_atom[i + 20], string_size - 1); + info->name[string_size - 1] = 0; + } } else if (current_atom == ALB_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->album = xine_xmalloc(string_size); - strncpy(info->album, &meta_atom[i + 20], string_size - 1); - info->album[string_size - 1] = 0; + if (info->album) { + strncpy(info->album, &meta_atom[i + 20], string_size - 1); + info->album[string_size - 1] = 0; + } } else if (current_atom == GEN_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->genre = xine_xmalloc(string_size); - strncpy(info->genre, &meta_atom[i + 20], string_size - 1); - info->genre[string_size - 1] = 0; + if (info->genre) { + strncpy(info->genre, &meta_atom[i + 20], string_size - 1); + info->genre[string_size - 1] = 0; + } } else if (current_atom == TOO_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->comment = xine_xmalloc(string_size); - strncpy(info->comment, &meta_atom[i + 20], string_size - 1); - info->comment[string_size - 1] = 0; + if (info->comment) { + strncpy(info->comment, &meta_atom[i + 20], string_size - 1); + info->comment[string_size - 1] = 0; + } } else if (current_atom == WRT_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->composer = xine_xmalloc(string_size); - strncpy(info->composer, &meta_atom[i + 20], string_size - 1); - info->composer[string_size - 1] = 0; + if (info->composer) { + strncpy(info->composer, &meta_atom[i + 20], string_size - 1); + info->composer[string_size - 1] = 0; + } } else if (current_atom == DAY_ATOM) { string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1; + if (string_size <= 0) + continue; info->year = xine_xmalloc(string_size); - strncpy(info->year, &meta_atom[i + 20], string_size - 1); - info->year[string_size - 1] = 0; + if (info->year) { + strncpy(info->year, &meta_atom[i + 20], string_size - 1); + info->year[string_size - 1] = 0; + } } } @@ -897,8 +925,8 @@ static qt_error parse_trak_atom (qt_trak *trak, debug_atom_load(" qt elst atom (edit list atom): %d entries\n", trak->edit_list_count); - trak->edit_list_table = (edit_list_table_t *)xine_xmalloc( - trak->edit_list_count * sizeof(edit_list_table_t)); + trak->edit_list_table = (edit_list_table_t *)calloc( + trak->edit_list_count, sizeof(edit_list_table_t)); if (!trak->edit_list_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -933,18 +961,25 @@ static qt_error parse_trak_atom (qt_trak *trak, /* allocate space for each of the properties unions */ trak->stsd_atoms_count = _X_BE_32(&trak_atom[i + 8]); - trak->stsd_atoms = xine_xmalloc(trak->stsd_atoms_count * sizeof(properties_t)); + if (trak->stsd_atoms_count <= 0) { + last_error = QT_HEADER_TROUBLE; + goto free_trak; + } + trak->stsd_atoms = calloc(trak->stsd_atoms_count, sizeof(properties_t)); if (!trak->stsd_atoms) { last_error = QT_NO_MEMORY; goto free_trak; } - memset(trak->stsd_atoms, 0, trak->stsd_atoms_count * sizeof(properties_t)); atom_pos = i + 0x10; properties_offset = 0x0C; for (k = 0; k < trak->stsd_atoms_count; k++) { current_stsd_atom_size = _X_BE_32(&trak_atom[atom_pos - 4]); + if (current_stsd_atom_size < 4) { + last_error = QT_HEADER_TROUBLE; + goto free_trak; + } if (trak->type == MEDIA_VIDEO) { @@ -955,6 +990,10 @@ static qt_error parse_trak_atom (qt_trak *trak, trak->stsd_atoms[k].video.properties_atom_size = current_stsd_atom_size - 4; trak->stsd_atoms[k].video.properties_atom = xine_xmalloc(trak->stsd_atoms[k].video.properties_atom_size); + if (!trak->stsd_atoms[k].video.properties_atom) { + last_error = QT_NO_MEMORY; + goto free_trak; + } memcpy(trak->stsd_atoms[k].video.properties_atom, &trak_atom[atom_pos], trak->stsd_atoms[k].video.properties_atom_size); @@ -1094,6 +1133,10 @@ static qt_error parse_trak_atom (qt_trak *trak, trak->stsd_atoms[k].audio.properties_atom_size = current_stsd_atom_size - 4; trak->stsd_atoms[k].audio.properties_atom = xine_xmalloc(trak->stsd_atoms[k].audio.properties_atom_size); + if (!trak->stsd_atoms[k].audio.properties_atom) { + last_error = QT_NO_MEMORY; + goto free_trak; + } memcpy(trak->stsd_atoms[k].audio.properties_atom, &trak_atom[atom_pos], trak->stsd_atoms[k].audio.properties_atom_size); @@ -1185,10 +1228,11 @@ static qt_error parse_trak_atom (qt_trak *trak, if (_X_BE_32(&trak_atom[atom_pos + 0x2C])) trak->stsd_atoms[k].audio.bytes_per_sample = _X_BE_32(&trak_atom[atom_pos + 0x2C]); - trak->stsd_atoms[k].audio.samples_per_frame = - (trak->stsd_atoms[k].audio.bytes_per_frame / - trak->stsd_atoms[k].audio.bytes_per_packet) * - trak->stsd_atoms[k].audio.samples_per_packet; + if (trak->stsd_atoms[k].audio.bytes_per_packet) + trak->stsd_atoms[k].audio.samples_per_frame = + (trak->stsd_atoms[k].audio.bytes_per_frame / + trak->stsd_atoms[k].audio.bytes_per_packet) * + trak->stsd_atoms[k].audio.samples_per_packet; } /* see if the trak deserves a promotion to VBR */ @@ -1210,6 +1254,10 @@ static qt_error parse_trak_atom (qt_trak *trak, trak->stsd_atoms[k].audio.properties_atom_size = 36; trak->stsd_atoms[k].audio.properties_atom = xine_xmalloc(trak->stsd_atoms[k].audio.properties_atom_size); + if (!trak->stsd_atoms[k].audio.properties_atom) { + last_error = QT_NO_MEMORY; + goto free_trak; + } memcpy(trak->stsd_atoms[k].audio.properties_atom, &trak_atom[atom_pos + 0x20], trak->stsd_atoms[k].audio.properties_atom_size); @@ -1231,6 +1279,10 @@ static qt_error parse_trak_atom (qt_trak *trak, (current_atom_size >= (0x4C + wave_size))) { trak->stsd_atoms[k].audio.wave_size = wave_size; trak->stsd_atoms[k].audio.wave = xine_xmalloc(wave_size); + if (!trak->stsd_atoms[k].audio.wave) { + last_error = QT_NO_MEMORY; + goto free_trak; + } memcpy(trak->stsd_atoms[k].audio.wave, &trak_atom[atom_pos + 0x4C], wave_size); _x_waveformatex_le2me(trak->stsd_atoms[k].audio.wave); @@ -1300,8 +1352,16 @@ static qt_error parse_trak_atom (qt_trak *trak, j += mp4_read_descr_len( &trak_atom[j], &len ); debug_atom_load(" decoder config is %d (0x%X) bytes long\n", len, len); + if (len > current_atom_size - (j - i)) { + last_error = QT_NOT_A_VALID_FILE; + goto free_trak; + } trak->decoder_config = realloc(trak->decoder_config, len); trak->decoder_config_len = len; + if (!trak->decoder_config) { + last_error = QT_NO_MEMORY; + goto free_trak; + } memcpy(trak->decoder_config,&trak_atom[j],len); } } @@ -1331,8 +1391,8 @@ static qt_error parse_trak_atom (qt_trak *trak, /* allocate space and load table only if sample size is 0 */ if (trak->sample_size == 0) { - trak->sample_size_table = (unsigned int *)malloc( - trak->sample_size_count * sizeof(unsigned int)); + trak->sample_size_table = (unsigned int *)calloc( + trak->sample_size_count, sizeof(unsigned int)); if (!trak->sample_size_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -1362,8 +1422,8 @@ static qt_error parse_trak_atom (qt_trak *trak, debug_atom_load(" qt stss atom (sample sync atom): %d sync samples\n", trak->sync_sample_count); - trak->sync_sample_table = (unsigned int *)malloc( - trak->sync_sample_count * sizeof(unsigned int)); + trak->sync_sample_table = (unsigned int *)calloc( + trak->sync_sample_count, sizeof(unsigned int)); if (!trak->sync_sample_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -1391,8 +1451,8 @@ static qt_error parse_trak_atom (qt_trak *trak, debug_atom_load(" qt stco atom (32-bit chunk offset atom): %d chunk offsets\n", trak->chunk_offset_count); - trak->chunk_offset_table = (int64_t *)malloc( - trak->chunk_offset_count * sizeof(int64_t)); + trak->chunk_offset_table = (int64_t *)calloc( + trak->chunk_offset_count, sizeof(int64_t)); if (!trak->chunk_offset_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -1419,8 +1479,8 @@ static qt_error parse_trak_atom (qt_trak *trak, debug_atom_load(" qt co64 atom (64-bit chunk offset atom): %d chunk offsets\n", trak->chunk_offset_count); - trak->chunk_offset_table = (int64_t *)malloc( - trak->chunk_offset_count * sizeof(int64_t)); + trak->chunk_offset_table = (int64_t *)calloc( + trak->chunk_offset_count, sizeof(int64_t)); if (!trak->chunk_offset_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -1450,8 +1510,8 @@ static qt_error parse_trak_atom (qt_trak *trak, debug_atom_load(" qt stsc atom (sample-to-chunk atom): %d entries\n", trak->sample_to_chunk_count); - trak->sample_to_chunk_table = (sample_to_chunk_table_t *)malloc( - trak->sample_to_chunk_count * sizeof(sample_to_chunk_table_t)); + trak->sample_to_chunk_table = (sample_to_chunk_table_t *)calloc( + trak->sample_to_chunk_count, sizeof(sample_to_chunk_table_t)); if (!trak->sample_to_chunk_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -1475,7 +1535,8 @@ static qt_error parse_trak_atom (qt_trak *trak, } else if (current_atom == STTS_ATOM) { /* there should only be one of these atoms */ - if (trak->time_to_sample_table) { + if (trak->time_to_sample_table + || current_atom_size < 12 || current_atom_size >= UINT_MAX) { last_error = QT_HEADER_TROUBLE; goto free_trak; } @@ -1485,8 +1546,13 @@ static qt_error parse_trak_atom (qt_trak *trak, debug_atom_load(" qt stts atom (time-to-sample atom): %d entries\n", trak->time_to_sample_count); - trak->time_to_sample_table = (time_to_sample_table_t *)malloc( - (trak->time_to_sample_count+1) * sizeof(time_to_sample_table_t)); + if (trak->time_to_sample_count > (current_atom_size - 12) / 8) { + last_error = QT_HEADER_TROUBLE; + goto free_trak; + } + + trak->time_to_sample_table = (time_to_sample_table_t *)calloc( + trak->time_to_sample_count+1, sizeof(time_to_sample_table_t)); if (!trak->time_to_sample_table) { last_error = QT_NO_MEMORY; goto free_trak; @@ -1537,44 +1603,46 @@ static qt_error parse_reference_atom (reference_t *ref, qt_atom current_atom; unsigned int current_atom_size; + if (ref_atom_size >= 0x80000000) + return QT_NOT_A_VALID_FILE; + /* initialize reference atom */ ref->url = NULL; ref->data_rate = 0; ref->qtim_version = 0; /* traverse through the atom looking for the key atoms */ - for (i = ATOM_PREAMBLE_SIZE; i < ref_atom_size - 4; i++) { + for (i = ATOM_PREAMBLE_SIZE; i + 4 < ref_atom_size; i++) { current_atom_size = _X_BE_32(&ref_atom[i - 4]); current_atom = _X_BE_32(&ref_atom[i]); if (current_atom == RDRF_ATOM) { + size_t string_size = _X_BE_32(&ref_atom[i + 12]); + size_t url_offset = 0; + + if (string_size >= current_atom_size || string_size >= ref_atom_size - i) + return QT_NOT_A_VALID_FILE; /* if the URL starts with "http://", copy it */ - if (strncmp(&ref_atom[i + 16], "http://", 7) == 0 - || strncmp(&ref_atom[i + 16], "rtsp://", 7) == 0) { + if ( memcmp(&ref_atom[i + 16], "http://", 7) && + memcmp(&ref_atom[i + 16], "rtsp://", 7) && + base_mrl ) + url_offset = strlen(base_mrl); + if (url_offset >= 0x80000000) + return QT_NOT_A_VALID_FILE; - /* URL is spec'd to terminate with a NULL; don't trust it */ - ref->url = xine_xmalloc(_X_BE_32(&ref_atom[i + 12]) + 1); - strncpy(ref->url, &ref_atom[i + 16], _X_BE_32(&ref_atom[i + 12])); - ref->url[_X_BE_32(&ref_atom[i + 12]) - 1] = '\0'; + /* otherwise, append relative URL to base MRL */ + string_size += url_offset; - } else { + ref->url = xine_xmalloc(string_size + 1); - int string_size; + if ( url_offset ) + strcpy(ref->url, base_mrl); - if (base_mrl) - string_size = strlen(base_mrl) + _X_BE_32(&ref_atom[i + 12]) + 1; - else - string_size = _X_BE_32(&ref_atom[i + 12]) + 1; + memcpy(ref->url + url_offset, &ref_atom[i + 16], _X_BE_32(&ref_atom[i + 12])); - /* otherwise, append relative URL to base MRL */ - ref->url = xine_xmalloc(string_size); - if (base_mrl) - strcpy(ref->url, base_mrl); - strncat(ref->url, &ref_atom[i + 16], _X_BE_32(&ref_atom[i + 12])); - ref->url[string_size - 1] = '\0'; - } + ref->url[string_size] = '\0'; debug_atom_load(" qt rdrf URL reference:\n %s\n", ref->url); @@ -1686,8 +1754,7 @@ static qt_error build_frame_table(qt_trak *trak, /* in this case, the total number of frames is equal to the number of * entries in the sample size table */ trak->frame_count = trak->sample_size_count; - trak->frames = (qt_frame *)malloc( - trak->frame_count * sizeof(qt_frame)); + trak->frames = (qt_frame *)calloc(trak->frame_count, sizeof(qt_frame)); if (!trak->frames) return QT_NO_MEMORY; trak->current_frame = 0; @@ -1699,10 +1766,9 @@ static qt_error build_frame_table(qt_trak *trak, pts_index_countdown = trak->time_to_sample_table[pts_index].count; - media_id_counts = xine_xmalloc(trak->stsd_atoms_count * sizeof(int)); + media_id_counts = calloc(trak->stsd_atoms_count, sizeof(int)); if (!media_id_counts) return QT_NO_MEMORY; - memset(media_id_counts, 0, trak->stsd_atoms_count * sizeof(int)); /* iterate through each start chunk in the stsc table */ for (i = 0; i < trak->sample_to_chunk_count; i++) { @@ -1837,8 +1903,7 @@ static qt_error build_frame_table(qt_trak *trak, /* in this case, the total number of frames is equal to the number of * chunks */ trak->frame_count = trak->chunk_offset_count; - trak->frames = (qt_frame *)malloc( - trak->frame_count * sizeof(qt_frame)); + trak->frames = (qt_frame *)calloc(trak->frame_count, sizeof(qt_frame)); if (!trak->frames) return QT_NO_MEMORY; @@ -1993,8 +2058,12 @@ static void parse_moov_atom(qt_info *info, unsigned char *moov_atom, info->references = (reference_t *)realloc(info->references, info->reference_count * sizeof(reference_t)); - parse_reference_atom(&info->references[info->reference_count - 1], - &moov_atom[i - 4], info->base_mrl); + error = parse_reference_atom(&info->references[info->reference_count - 1], + &moov_atom[i - 4], info->base_mrl); + if (error != QT_OK) { + info->last_error = error; + return; + } } else { debug_atom_load(" qt: unknown atom into the moov atom (0x%08X)\n", current_atom); @@ -2145,7 +2214,7 @@ static qt_error open_qt_file(qt_info *info, input_plugin_t *input, } /* check if moov is compressed */ - if (_X_BE_32(&moov_atom[12]) == CMOV_ATOM) { + if (_X_BE_32(&moov_atom[12]) == CMOV_ATOM && moov_atom_size >= 0x28) { info->compressed_header = 1; @@ -2944,7 +3013,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_qt_t)); + this = calloc(1, sizeof(demux_qt_t)); this->stream = stream; this->input = input; @@ -3059,7 +3128,9 @@ static const char *get_mimetypes (demux_class_t *this_gen) { return "video/quicktime: mov,qt: Quicktime animation;" "video/x-quicktime: mov,qt: Quicktime animation;" "audio/x-m4a: m4a,m4b: MPEG-4 audio;" - "application/x-quicktimeplayer: qtl: Quicktime list;"; + "application/x-quicktimeplayer: qtl: Quicktime list;" + "video/mp4: mp4,mpg4: MPEG-4 video;" + "audio/mp4: mp4,mpg4: MPEG-4 audio;"; } static void class_dispose (demux_class_t *this_gen) { @@ -3073,7 +3144,7 @@ static void *init_plugin (xine_t *xine, void *data) { demux_qt_class_t *this; - this = xine_xmalloc (sizeof (demux_qt_class_t)); + this = calloc(1, sizeof(demux_qt_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/demuxers/demux_rawdv.c b/src/demuxers/demux_rawdv.c index 2d21f080d..86f777ec6 100644 --- a/src/demuxers/demux_rawdv.c +++ b/src/demuxers/demux_rawdv.c @@ -347,7 +347,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_raw_dv_t *this; - this = xine_xmalloc (sizeof (demux_raw_dv_t)); + this = calloc(1, sizeof(demux_raw_dv_t)); this->stream = stream; this->input = input; @@ -374,8 +374,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str } /* DIF (DV) movie file */ - if (!((buf[0] == 0x1f) && (buf[1] == 0x07) && (buf[2] == 00) && - (buf[4] ^ 0x01))) { + if (memcmp(buf, "\x1F\x07\x00", 3) != 0 || !(buf[4] ^ 0x01)) { free (this); return NULL; } @@ -436,7 +435,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_raw_dv_class_t *this; - this = xine_xmalloc (sizeof (demux_raw_dv_class_t)); + this = calloc(1, sizeof(demux_raw_dv_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_real.c b/src/demuxers/demux_real.c index 9206bfc74..8f1e4f539 100644 --- a/src/demuxers/demux_real.c +++ b/src/demuxers/demux_real.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2005 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -55,13 +55,13 @@ #include "demux.h" #include "bswap.h" +#include "real_common.h" + #define FOURCC_TAG BE_FOURCC -#define RMF_TAG FOURCC_TAG('.', 'R', 'M', 'F') #define PROP_TAG FOURCC_TAG('P', 'R', 'O', 'P') #define MDPR_TAG FOURCC_TAG('M', 'D', 'P', 'R') #define CONT_TAG FOURCC_TAG('C', 'O', 'N', 'T') #define DATA_TAG FOURCC_TAG('D', 'A', 'T', 'A') -#define INDX_TAG FOURCC_TAG('I', 'N', 'D', 'X') #define RA_TAG FOURCC_TAG('.', 'r', 'a', 0xfd) #define VIDO_TAG FOURCC_TAG('V', 'I', 'D', 'O') @@ -90,11 +90,11 @@ typedef struct { uint32_t start_time; uint32_t preroll; uint32_t duration; - char stream_name_size; + size_t stream_name_size; char *stream_name; - char mime_type_size; + size_t mime_type_size; char *mime_type; - uint32_t type_specific_len; + size_t type_specific_len; char *type_specific_data; } mdpr_t; @@ -113,6 +113,12 @@ typedef struct { int index_entries; mdpr_t *mdpr; + int sps, cfs, w, h; + int block_align; + size_t frame_size; + uint8_t *frame_buffer; + uint32_t frame_num_bytes; + uint32_t sub_packet_cnt; } real_stream_t; typedef struct { @@ -168,15 +174,13 @@ typedef struct { demux_class_t demux_class; } demux_real_class_t; - static void real_parse_index(demux_real_t *this) { off_t next_index_chunk = this->index_start; off_t original_pos = this->input->get_current_pos(this->input); unsigned char index_chunk_header[INDEX_CHUNK_HEADER_SIZE]; unsigned char index_record[INDEX_RECORD_SIZE]; - int i, entries, stream_num; - real_index_entry_t **index; + int i; while(next_index_chunk) { lprintf("reading index chunk at %"PRIX64"\n", next_index_chunk); @@ -192,69 +196,68 @@ static void real_parse_index(demux_real_t *this) { } /* Check chunk is actually an index chunk */ - if(_X_BE_32(&index_chunk_header[0]) == INDX_TAG) { - unsigned short version; + if(!_x_is_fourcc(&index_chunk_header[0], "INDX")) { + lprintf("expected index chunk found chunk type: %.4s\n", &index_chunk_header[0]); + break; + } - /* Check version */ - version = _X_BE_16(&index_chunk_header[8]); - if(version != 0) { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_real: unknown object version in INDX: 0x%04x\n", version); - break; - } + /* Check version */ + const uint16_t version = _X_BE_16(&index_chunk_header[8]); + if(version != 0) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: unknown object version in INDX: 0x%04x\n", version); + break; + } - /* Read data from header */ - entries = _X_BE_32(&index_chunk_header[10]); - stream_num = _X_BE_16(&index_chunk_header[14]); - next_index_chunk = _X_BE_32(&index_chunk_header[16]); - - /* Find which stream this index is for */ - index = NULL; - for(i = 0; i < this->num_video_streams; i++) { - if(stream_num == this->video_streams[i].mdpr->stream_number) { - index = &this->video_streams[i].index; - this->video_streams[i].index_entries = entries; - lprintf("found index chunk for video stream with num %d\n", stream_num); - break; - } + /* Read data from header */ + const uint32_t entries = _X_BE_32(&index_chunk_header[10]); + const uint16_t stream_num = _X_BE_16(&index_chunk_header[14]); + next_index_chunk = _X_BE_32(&index_chunk_header[16]); + + /* Find which stream this index is for */ + real_index_entry_t **index = NULL; + for(i = 0; i < this->num_video_streams; i++) { + if(stream_num == this->video_streams[i].mdpr->stream_number) { + index = &this->video_streams[i].index; + this->video_streams[i].index_entries = entries; + lprintf("found index chunk for video stream with num %d\n", stream_num); + break; } + } - if(!index) { - for(i = 0; i < this->num_audio_streams; i++) { - if(stream_num == this->audio_streams[i].mdpr->stream_number) { - index = &this->audio_streams[i].index; - this->audio_streams[i].index_entries = entries; - lprintf("found index chunk for audio stream with num %d\n", stream_num); - break; - } - } + if(!index) { + for(i = 0; i < this->num_audio_streams; i++) { + if(stream_num == this->audio_streams[i].mdpr->stream_number) { + index = &this->audio_streams[i].index; + this->audio_streams[i].index_entries = entries; + lprintf("found index chunk for audio stream with num %d\n", stream_num); + break; + } } + } - if(index && entries) { - /* Allocate memory for index */ - *index = xine_xmalloc(entries * sizeof(real_index_entry_t)); + if(index && entries) + /* Allocate memory for index */ + *index = calloc(entries, sizeof(real_index_entry_t)); - /* Read index */ - for(i = 0; i < entries; i++) { - if(this->input->read(this->input, index_record, INDEX_RECORD_SIZE) - != INDEX_RECORD_SIZE) { - lprintf("index record not read\n"); - free(*index); - *index = NULL; - break; - } - - (*index)[i].timestamp = _X_BE_32(&index_record[2]); - (*index)[i].offset = _X_BE_32(&index_record[6]); - (*index)[i].packetno = _X_BE_32(&index_record[10]); - } - } else { - lprintf("unused index chunk with %d entries for stream num %d\n", - entries, stream_num); + if(index && entries && *index) { + /* Read index */ + for(i = 0; i < entries; i++) { + if(this->input->read(this->input, index_record, INDEX_RECORD_SIZE) + != INDEX_RECORD_SIZE) { + lprintf("index record not read\n"); + free(*index); + *index = NULL; + break; + } + + (*index)[i].timestamp = _X_BE_32(&index_record[2]); + (*index)[i].offset = _X_BE_32(&index_record[6]); + (*index)[i].packetno = _X_BE_32(&index_record[10]); } } else { - lprintf("expected index chunk found chunk type: %.4s\n", &index_chunk_header[0]); - break; + lprintf("unused index chunk with %d entries for stream num %d\n", + entries, stream_num); } } @@ -262,8 +265,12 @@ static void real_parse_index(demux_real_t *this) { this->input->seek(this->input, original_pos, SEEK_SET); } -static mdpr_t *real_parse_mdpr(const char *data) { - mdpr_t *mdpr=malloc(sizeof(mdpr_t)); +static mdpr_t *real_parse_mdpr(const char *data, const unsigned int size) +{ + if (size < 38) + return NULL; + + mdpr_t *mdpr=calloc(sizeof(mdpr_t), 1); mdpr->stream_number=_X_BE_16(&data[2]); mdpr->max_bit_rate=_X_BE_32(&data[4]); @@ -275,17 +282,29 @@ static mdpr_t *real_parse_mdpr(const char *data) { mdpr->duration=_X_BE_32(&data[28]); mdpr->stream_name_size=data[32]; - mdpr->stream_name=malloc(sizeof(char)*(mdpr->stream_name_size+1)); + if (size < 38 + mdpr->stream_name_size) + goto fail; + mdpr->stream_name=malloc(mdpr->stream_name_size+1); + if (!mdpr->stream_name) + goto fail; memcpy(mdpr->stream_name, &data[33], mdpr->stream_name_size); mdpr->stream_name[(int)mdpr->stream_name_size]=0; mdpr->mime_type_size=data[33+mdpr->stream_name_size]; - mdpr->mime_type=malloc(sizeof(char)*(mdpr->mime_type_size+1)); + if (size < 38 + mdpr->stream_name_size + mdpr->mime_type_size) + goto fail; + mdpr->mime_type=malloc(mdpr->mime_type_size+1); + if (!mdpr->mime_type) + goto fail; memcpy(mdpr->mime_type, &data[34+mdpr->stream_name_size], mdpr->mime_type_size); mdpr->mime_type[(int)mdpr->mime_type_size]=0; mdpr->type_specific_len=_X_BE_32(&data[34+mdpr->stream_name_size+mdpr->mime_type_size]); - mdpr->type_specific_data=malloc(sizeof(char)*(mdpr->type_specific_len)); + if (size < 38 + mdpr->stream_name_size + mdpr->mime_type_size + mdpr->type_specific_data) + goto fail; + mdpr->type_specific_data=malloc(mdpr->type_specific_len); + if (!mdpr->type_specific_data) + goto fail; memcpy(mdpr->type_specific_data, &data[38+mdpr->stream_name_size+mdpr->mime_type_size], mdpr->type_specific_len); @@ -305,6 +324,13 @@ static mdpr_t *real_parse_mdpr(const char *data) { #endif return mdpr; + +fail: + free (mdpr->stream_name); + free (mdpr->mime_type); + free (mdpr->type_specific_data); + free (mdpr); + return NULL; } static void real_free_mdpr (mdpr_t *mdpr) { @@ -314,43 +340,109 @@ static void real_free_mdpr (mdpr_t *mdpr) { free (mdpr); } +static void real_parse_audio_specific_data (demux_real_t *this, + real_stream_t * stream) +{ + if (stream->mdpr->type_specific_len < 46) { + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + "demux_real: audio data size smaller than header length!\n"); + return; + } + + uint8_t * data = stream->mdpr->type_specific_data; + const uint32_t coded_frame_size = _X_BE_32 (data+24); + const uint16_t codec_data_length = _X_BE_16 (data+40); + const uint16_t coded_frame_size2 = _X_BE_16 (data+42); + const uint16_t subpacket_size = _X_BE_16 (data+44); + + stream->sps = subpacket_size; + stream->w = coded_frame_size2; + stream->h = codec_data_length; + stream->block_align = coded_frame_size2; + stream->cfs = coded_frame_size; + + switch (stream->buf_type) { + case BUF_AUDIO_COOK: + case BUF_AUDIO_ATRK: + stream->block_align = subpacket_size; + break; + + case BUF_AUDIO_14_4: + break; + + case BUF_AUDIO_28_8: + stream->block_align = stream->cfs; + break; + + case BUF_AUDIO_SIPRO: + /* this->block_align = 19; */ + break; + + default: + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: error, i don't handle buf type 0x%08x\n", stream->buf_type); + } + + /* + * when stream->sps is set it used to do this: + * stream->frame_size = stream->w / stream->sps * stream->h * stream->sps; + * but it looks pointless? the compiler will probably optimise it away, I suppose? + */ + if (stream->w < 32768 && stream->h < 32768) { + stream->frame_size = stream->w * stream->h; + stream->frame_buffer = calloc(stream->frame_size, 1); + } else { + stream->frame_size = 0; + stream->frame_buffer = NULL; + } + + stream->frame_num_bytes = 0; + stream->sub_packet_cnt = 0; + + if (!stream->frame_buffer) + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + "demux_real: failed to allocate the audio frame buffer!\n"); + + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + "demux_real: buf type 0x%08x frame size %zu block align %d\n", stream->buf_type, + stream->frame_size, stream->block_align); + +} static void real_parse_headers (demux_real_t *this) { char preamble[PREAMBLE_SIZE]; unsigned int chunk_type = 0; unsigned int chunk_size; - unsigned short version; - unsigned char *chunk_buffer; - int field_size; - int stream_ptr; - unsigned char data_chunk_header[DATA_CHUNK_HEADER_SIZE]; - unsigned char signature[REAL_SIGNATURE_SIZE]; - - this->data_start = 0; - this->data_size = 0; - this->num_video_streams = 0; - this->num_audio_streams = 0; if (INPUT_IS_SEEKABLE(this->input)) this->input->seek (this->input, 0, SEEK_SET); - if (this->input->read(this->input, signature, REAL_SIGNATURE_SIZE) != - REAL_SIGNATURE_SIZE) { + { + uint8_t signature[REAL_SIGNATURE_SIZE]; + if (this->input->read(this->input, signature, REAL_SIGNATURE_SIZE) != + REAL_SIGNATURE_SIZE) { + + lprintf ("signature not read\n"); + this->status = DEMUX_FINISHED; + return; + } + + if ( !_x_is_fourcc(signature, ".RMF") ) { + this->status = DEMUX_FINISHED; + lprintf ("signature not found '%.4s'\n", signature); + return; + } - lprintf ("signature not read\n"); - this->status = DEMUX_FINISHED; - return; + /* skip to the start of the first chunk and start traversing */ + chunk_size = _X_BE_32(&signature[4]); } - if (_X_BE_32(signature) != RMF_TAG) { - this->status = DEMUX_FINISHED; - lprintf ("signature not found '%.4s'\n", signature); - return; - } + this->data_start = 0; + this->data_size = 0; + this->num_video_streams = 0; + this->num_audio_streams = 0; - /* skip to the start of the first chunk and start traversing */ - chunk_size = _X_BE_32(&signature[4]); this->input->seek(this->input, chunk_size-8, SEEK_CUR); /* iterate through chunks and gather information until the first DATA @@ -371,171 +463,190 @@ static void real_parse_headers (demux_real_t *this) { case PROP_TAG: case MDPR_TAG: case CONT_TAG: - - chunk_size -= PREAMBLE_SIZE; - chunk_buffer = xine_xmalloc(chunk_size); - if (this->input->read(this->input, chunk_buffer, chunk_size) != - chunk_size) { - free (chunk_buffer); - this->status = DEMUX_FINISHED; - return; - } + { + if (chunk_size < PREAMBLE_SIZE+1) { + this->status = DEMUX_FINISHED; + return; + } + chunk_size -= PREAMBLE_SIZE; + uint8_t *const chunk_buffer = malloc(chunk_size); + if (! chunk_buffer || + this->input->read(this->input, chunk_buffer, chunk_size) != + chunk_size) { + free (chunk_buffer); + this->status = DEMUX_FINISHED; + return; + } - version = _X_BE_16(&chunk_buffer[0]); + uint16_t version = _X_BE_16(&chunk_buffer[0]); - if (chunk_type == PROP_TAG) { + if (chunk_type == PROP_TAG) { - if(version != 0) { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demuxe_real: unknown object version in PROP: 0x%04x\n", version); - free(chunk_buffer); - this->status = DEMUX_FINISHED; - return; - } - - this->duration = _X_BE_32(&chunk_buffer[22]); - this->index_start = _X_BE_32(&chunk_buffer[30]); - this->data_start = _X_BE_32(&chunk_buffer[34]); - this->avg_bitrate = _X_BE_32(&chunk_buffer[6]); - - lprintf("PROP: duration: %d ms\n", this->duration); - lprintf("PROP: index start: %"PRIX64"\n", this->index_start); - lprintf("PROP: data start: %"PRIX64"\n", this->data_start); - lprintf("PROP: average bit rate: %"PRId64"\n", this->avg_bitrate); - - if (this->avg_bitrate<1) - this->avg_bitrate = 1; - - _x_stream_info_set(this->stream, XINE_STREAM_INFO_BITRATE, + if(version != 0) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demuxe_real: unknown object version in PROP: 0x%04x\n", version); + free(chunk_buffer); + this->status = DEMUX_FINISHED; + return; + } + + this->duration = _X_BE_32(&chunk_buffer[22]); + this->index_start = _X_BE_32(&chunk_buffer[30]); + this->data_start = _X_BE_32(&chunk_buffer[34]); + this->avg_bitrate = _X_BE_32(&chunk_buffer[6]); + + lprintf("PROP: duration: %d ms\n", this->duration); + lprintf("PROP: index start: %"PRIX64"\n", this->index_start); + lprintf("PROP: data start: %"PRIX64"\n", this->data_start); + lprintf("PROP: average bit rate: %"PRId64"\n", this->avg_bitrate); + + if (this->avg_bitrate<1) + this->avg_bitrate = 1; + + _x_stream_info_set(this->stream, XINE_STREAM_INFO_BITRATE, this->avg_bitrate); - } else if (chunk_type == MDPR_TAG) { - - mdpr_t *mdpr; - uint32_t fourcc; - - if (version != 0) { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_real: unknown object version in MDPR: 0x%04x\n", version); - free(chunk_buffer); - continue; - } + } else if (chunk_type == MDPR_TAG) { + if (version != 0) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: unknown object version in MDPR: 0x%04x\n", version); + free(chunk_buffer); + continue; + } - mdpr = real_parse_mdpr (chunk_buffer); - - lprintf ("parsing type specific data...\n"); - - if(_X_BE_32(mdpr->type_specific_data) == RA_TAG) { - int version, len; - - if(this->num_audio_streams == MAX_AUDIO_STREAMS) { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_real: maximum number of audio stream exceeded\n"); - goto unknown; - } + mdpr_t *const mdpr = real_parse_mdpr (chunk_buffer, chunk_size); + + lprintf ("parsing type specific data...\n"); + if (!mdpr) { + free (chunk_buffer); + this->status = DEMUX_FINISHED; + return; + } + if(!strcmp(mdpr->mime_type, "audio/X-MP3-draft-00")) { + lprintf ("mpeg layer 3 audio detected...\n"); + + static const uint32_t fourcc = ME_FOURCC('a', 'd', 'u', 0x55); + this->audio_streams[this->num_audio_streams].fourcc = fourcc; + this->audio_streams[this->num_audio_streams].buf_type = _x_formattag_to_buf_audio(fourcc); + this->audio_streams[this->num_audio_streams].index = NULL; + this->audio_streams[this->num_audio_streams].mdpr = mdpr; + this->num_audio_streams++; + } else if(_X_BE_32(mdpr->type_specific_data) == RA_TAG && + mdpr->type_specific_len >= 6) { + if(this->num_audio_streams == MAX_AUDIO_STREAMS) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: maximum number of audio stream exceeded\n"); + goto unknown; + } - version = _X_BE_16(mdpr->type_specific_data + 4); + const uint16_t version = _X_BE_16(mdpr->type_specific_data + 4); - lprintf("audio version %d detected\n", version); + lprintf("audio version %d detected\n", version); - switch(version) { + char *fourcc_ptr = "\0\0\0"; + switch(version) { case 3: /* Version 3 header stores fourcc after meta info - cheat by reading backwards from the * end of the header instead of having to parse it all */ - fourcc = _X_ME_32(mdpr->type_specific_data + mdpr->type_specific_len - 5); + if (mdpr->type_specific_len >= 5) + fourcc_ptr = mdpr->type_specific_data + mdpr->type_specific_len - 5; break; - case 4: - len = *(mdpr->type_specific_data + 56); - fourcc = _X_ME_32(mdpr->type_specific_data + 58 + len); + case 4: { + if (mdpr->type_specific_len >= 57) { + const uint8_t len = *(mdpr->type_specific_data + 56); + if (mdpr->type_specific_len >= 62 + len) + fourcc_ptr = mdpr->type_specific_data + 58 + len; + } + } break; case 5: - fourcc = _X_ME_32(mdpr->type_specific_data + 66); + if (mdpr->type_specific_len >= 70) + fourcc_ptr = mdpr->type_specific_data + 66; break; default: lprintf("unsupported audio header version %d\n", version); goto unknown; - } + } + lprintf("fourcc = %.4s\n", fourcc_ptr); - lprintf("fourcc = %.4s\n", (char *) &fourcc); + const uint32_t fourcc = _X_ME_32(fourcc_ptr); - this->audio_streams[this->num_audio_streams].fourcc = fourcc; - this->audio_streams[this->num_audio_streams].buf_type = _x_formattag_to_buf_audio(fourcc); - this->audio_streams[this->num_audio_streams].index = NULL; - this->audio_streams[this->num_audio_streams].mdpr = mdpr; + this->audio_streams[this->num_audio_streams].fourcc = fourcc; + this->audio_streams[this->num_audio_streams].buf_type = _x_formattag_to_buf_audio(fourcc); + this->audio_streams[this->num_audio_streams].index = NULL; + this->audio_streams[this->num_audio_streams].mdpr = mdpr; - this->num_audio_streams++; + real_parse_audio_specific_data (this, + &this->audio_streams[this->num_audio_streams]); + this->num_audio_streams++; - } else if(_X_BE_32(mdpr->type_specific_data + 4) == VIDO_TAG) { + } else if(_X_BE_32(mdpr->type_specific_data + 4) == VIDO_TAG && + mdpr->type_specific_len >= 34) { - if(this->num_video_streams == MAX_VIDEO_STREAMS) { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_real: maximum number of video stream exceeded\n"); - goto unknown; - } + if(this->num_video_streams == MAX_VIDEO_STREAMS) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: maximum number of video stream exceeded\n"); + goto unknown; + } - lprintf ("video detected\n"); - fourcc = _X_ME_32(mdpr->type_specific_data + 8); - lprintf("fourcc = %.4s\n", (char *) &fourcc); - - this->video_streams[this->num_video_streams].fourcc = fourcc; - this->video_streams[this->num_video_streams].buf_type = _x_fourcc_to_buf_video(fourcc); - this->video_streams[this->num_video_streams].format = _X_BE_32(mdpr->type_specific_data + 30); - this->video_streams[this->num_video_streams].index = NULL; - this->video_streams[this->num_video_streams].mdpr = mdpr; - - this->num_video_streams++; - - } else { - lprintf("unrecognised type specific data\n"); - -unknown: - real_free_mdpr(mdpr); - } - - } else if (chunk_type == CONT_TAG) { - - if(version != 0) { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_real: unknown object version in CONT: 0x%04x\n", version); - free(chunk_buffer); - continue; - } + lprintf ("video detected\n"); + const uint32_t fourcc = _X_ME_32(mdpr->type_specific_data + 8); + lprintf("fourcc = %.4s\n", (char *) &fourcc); + + this->video_streams[this->num_video_streams].fourcc = fourcc; + this->video_streams[this->num_video_streams].buf_type = _x_fourcc_to_buf_video(fourcc); + this->video_streams[this->num_video_streams].format = _X_BE_32(mdpr->type_specific_data + 30); + this->video_streams[this->num_video_streams].index = NULL; + this->video_streams[this->num_video_streams].mdpr = mdpr; + + this->num_video_streams++; + + } else { + lprintf("unrecognised type specific data\n"); + + unknown: + real_free_mdpr(mdpr); + } + + } else if (chunk_type == CONT_TAG) { + + if(version != 0) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: unknown object version in CONT: 0x%04x\n", version); + free(chunk_buffer); + continue; + } + + int stream_ptr = 2; +#define SET_METADATA_STRING(type) \ + do { \ + const uint16_t field_size = _X_BE_16(&chunk_buffer[stream_ptr]); \ + stream_ptr += 2; \ + _x_meta_info_n_set(this->stream, type, \ + &chunk_buffer[stream_ptr], field_size); \ + stream_ptr += field_size; \ + } while(0) + + /* load the title string */ + SET_METADATA_STRING(XINE_META_INFO_TITLE); + + /* load the author string */ + SET_METADATA_STRING(XINE_META_INFO_ARTIST); + + /* load the copyright string as the year */ + SET_METADATA_STRING(XINE_META_INFO_YEAR); + + /* load the comment string */ + SET_METADATA_STRING(XINE_META_INFO_COMMENT); + } - stream_ptr = 2; - - /* load the title string */ - field_size = _X_BE_16(&chunk_buffer[stream_ptr]); - stream_ptr += 2; - _x_meta_info_n_set(this->stream, XINE_META_INFO_TITLE, - &chunk_buffer[stream_ptr], field_size); - stream_ptr += field_size; - - /* load the author string */ - field_size = _X_BE_16(&chunk_buffer[stream_ptr]); - stream_ptr += 2; - _x_meta_info_n_set(this->stream, XINE_META_INFO_ARTIST, - &chunk_buffer[stream_ptr], field_size); - stream_ptr += field_size; - - /* load the copyright string as the year */ - field_size = _X_BE_16(&chunk_buffer[stream_ptr]); - stream_ptr += 2; - _x_meta_info_n_set(this->stream, XINE_META_INFO_YEAR, - &chunk_buffer[stream_ptr], field_size); - stream_ptr += field_size; - - /* load the comment string */ - field_size = _X_BE_16(&chunk_buffer[stream_ptr]); - stream_ptr += 2; - _x_meta_info_n_set(this->stream, XINE_META_INFO_COMMENT, - &chunk_buffer[stream_ptr], field_size); - stream_ptr += field_size; + free(chunk_buffer); } - - free(chunk_buffer); break; - case DATA_TAG: + case DATA_TAG: { + uint8_t data_chunk_header[DATA_CHUNK_HEADER_SIZE]; + if (this->input->read(this->input, data_chunk_header, DATA_CHUNK_HEADER_SIZE) != DATA_CHUNK_HEADER_SIZE) { this->status = DEMUX_FINISHED; @@ -543,7 +654,7 @@ unknown: } /* check version */ - version = _X_BE_16(&data_chunk_header[0]); + const uint16_t version = _X_BE_16(&data_chunk_header[0]); if(version != 0) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_real: unknown object version in DATA: 0x%04x\n", version); @@ -554,7 +665,8 @@ unknown: this->current_data_chunk_packet_count = _X_BE_32(&data_chunk_header[2]); this->next_data_chunk_offset = _X_BE_32(&data_chunk_header[6]); this->data_chunk_size = chunk_size; - break; + } + break; default: /* this should not occur, but in case it does, skip the chunk */ @@ -570,16 +682,9 @@ unknown: real_parse_index(this); /* Simple stream selection case - 0/1 audio/video streams */ - if(this->num_video_streams == 1) - this->video_stream = &this->video_streams[0]; - else - this->video_stream = NULL; + this->video_stream = (this->num_video_streams == 1) ? &this->video_streams[0] : NULL; + this->audio_stream = (this->num_audio_streams == 1) ? &this->audio_streams[0] : NULL; - if(this->num_audio_streams == 1) - this->audio_stream = &this->audio_streams[0]; - else - this->audio_stream = NULL; - /* In the case of multiple audio/video streams select the first streams found in the file */ if((this->num_video_streams > 1) || (this->num_audio_streams > 1)) { @@ -619,15 +724,13 @@ unknown: while((offset < len) && ((!this->video_stream && (this->num_video_streams > 0)) || (!this->audio_stream && (this->num_audio_streams > 0)))) { - uint32_t id; - int i, stream; + int i; /* Check for end of the data chunk */ - if(((id = _X_BE_32(&search_buffer[offset])) == DATA_TAG) || - (id == INDX_TAG)) - break; + if (_x_is_fourcc(&search_buffer[offset], "INDX") || _x_is_fourcc(&search_buffer[offset], "DATA")) + break; - stream = _X_BE_16(&search_buffer[offset + 4]); + const int stream = _X_BE_16(&search_buffer[offset + 4]); for(i = 0; !this->video_stream && (i < this->num_video_streams); i++) { if(stream == this->video_streams[i].mdpr->stream_number) { @@ -661,14 +764,12 @@ unknown: /* Send headers and set meta info */ if(this->video_stream) { - buf_element_t *buf; - /* Check for recognised codec*/ if(!this->video_stream->buf_type) this->video_stream->buf_type = BUF_VIDEO_UNKNOWN; /* Send header */ - buf = this->video_fifo->buffer_pool_alloc(this->video_fifo); + buf_element_t *const buf = this->video_fifo->buffer_pool_alloc(this->video_fifo); buf->content = buf->mem; memcpy(buf->content, this->video_stream->mdpr->type_specific_data, @@ -690,7 +791,7 @@ unknown: this->video_stream->mdpr->avg_bit_rate); /* Allocate fragment offset table */ - this->fragment_tab = xine_xmalloc(FRAGMENT_TAB_SIZE*sizeof(uint32_t)); + this->fragment_tab = calloc(FRAGMENT_TAB_SIZE, sizeof(uint32_t)); this->fragment_tab_max = FRAGMENT_TAB_SIZE; } @@ -701,10 +802,9 @@ unknown: /* Send headers */ if(this->audio_fifo) { - mdpr_t *mdpr = this->audio_stream->mdpr; - buf_element_t *buf; + mdpr_t *const mdpr = this->audio_stream->mdpr; - buf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); + buf_element_t *buf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); buf->type = this->audio_stream->buf_type; buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_FRAME_END; @@ -714,7 +814,7 @@ unknown: * The second is the codec initialisation data found at the end of * the type specific data for the audio stream */ if(buf->type == BUF_AUDIO_AAC) { - int version = _X_BE_16(mdpr->type_specific_data + 4); + const uint16_t version = _X_BE_16(mdpr->type_specific_data + 4); if(version != 5) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, @@ -745,6 +845,13 @@ unknown: memcpy(buf->content, mdpr->type_specific_data + 79, buf->decoder_info[2]); + } else if(buf->type == BUF_AUDIO_MP3ADU) { + buf->decoder_flags |= BUF_FLAG_STDHEADER | BUF_FLAG_FRAME_END; + buf->size = 0; + buf->decoder_info[0] = 0; + buf->decoder_info[1] = 0; + buf->decoder_info[2] = 0; + buf->decoder_info[3] = 0; } else { memcpy(buf->content, mdpr->type_specific_data, mdpr->type_specific_len); @@ -868,9 +975,7 @@ static int demux_real_parse_references( demux_real_t *this) { #define PTS_VIDEO 1 static void check_newpts (demux_real_t *this, int64_t pts, int video, int preview) { - int64_t diff; - - diff = pts - this->last_pts[video]; + const int64_t diff = pts - this->last_pts[video]; lprintf ("check_newpts %"PRId64"\n", pts); if (!preview && pts && @@ -976,18 +1081,14 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { demux_real_t *this = (demux_real_t *) this_gen; char header[DATA_PACKET_HEADER_SIZE]; - int stream, size, keyframe, input_time = 0; - unsigned short version; - uint32_t id, timestamp; - int64_t pts; - off_t offset, input_length = 0; + int keyframe, input_time = 0; int normpos = 0; if(this->reference_mode) return demux_real_parse_references(this); /* load a header from wherever the stream happens to be pointing */ - if ( (size=this->input->read(this->input, header, DATA_PACKET_HEADER_SIZE)) != + if ( this->input->read(this->input, header, DATA_PACKET_HEADER_SIZE) != DATA_PACKET_HEADER_SIZE) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, @@ -998,15 +1099,14 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { } /* Check to see if we've gone past the end of the data chunk */ - if(((id = _X_BE_32(&header[0])) == DATA_TAG) || - (id == INDX_TAG)) { + if (_x_is_fourcc(&header[0], "INDX") || _x_is_fourcc(&header[0], "DATA")) { lprintf("finished reading data chunk\n"); this->status = DEMUX_FINISHED; return this->status; } /* check version */ - version = _X_BE_16(&header[0]); + const uint16_t version = _X_BE_16(&header[0]); if(version > 1) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_real: unknown object version in data packet: 0x%04x\n", version); @@ -1015,11 +1115,11 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { } /* read the packet information */ - stream = _X_BE_16(&header[4]); - offset = this->input->get_current_pos(this->input); - size = _X_BE_16(&header[2]) - DATA_PACKET_HEADER_SIZE; - timestamp= _X_BE_32(&header[6]); - pts = (int64_t) timestamp * 90; + const uint16_t stream = _X_BE_16(&header[4]); + const off_t offset __attr_unused = this->input->get_current_pos(this->input); + uint16_t size = _X_BE_16(&header[2]) - DATA_PACKET_HEADER_SIZE; + const uint32_t timestamp= _X_BE_32(&header[6]); + int64_t pts = (int64_t) timestamp * 90; /* Data packet header with version 1 contains 1 extra byte */ if(version == 0) @@ -1034,11 +1134,9 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { if (this->video_stream && (stream == this->video_stream->mdpr->stream_number)) { - int vpkg_header, vpkg_length, vpkg_offset; int vpkg_seqnum = -1; int vpkg_subseq = 0; buf_element_t *buf; - int n, fragment_size; uint32_t decoder_flags; lprintf ("video chunk detected.\n"); @@ -1053,21 +1151,20 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { * bit 6: 1=short header (only one block?) */ - vpkg_header = stream_read_char (this); size--; + const int vpkg_header = stream_read_char (this); size--; lprintf ("vpkg_hdr: %02x (size=%d)\n", vpkg_header, size); + int vpkg_length, vpkg_offset; if (0x40==(vpkg_header&0xc0)) { /* * seems to be a very short header * 2 bytes, purpose of the second byte yet unknown */ - int bummer; - - bummer = stream_read_char (this); size--; + const int bummer __attr_unused = stream_read_char (this); lprintf ("bummer == %02X\n",bummer); vpkg_offset = 0; - vpkg_length = size; + vpkg_length = --size; } else { @@ -1128,9 +1225,8 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { input_time = (int)((int64_t) this->input->get_current_pos(this->input) * 8 * 1000 / this->avg_bitrate); - if(this->data_start && this->data_chunk_size) - input_length = this->data_start + 18 + this->data_chunk_size; - if( input_length ) + const off_t input_length = this->data_start + 18 + this->data_chunk_size; + if( input_length > 18 ) normpos = (int)((double) this->input->get_current_pos(this->input) * 65535 / input_length); check_newpts (this, pts, PTS_VIDEO, 0); @@ -1175,13 +1271,17 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { * calc size of fragment */ - if ((vpkg_header & 0xc0) == 0x080) + int fragment_size; + switch(vpkg_header & 0xc0) { + case 0x80: fragment_size = vpkg_offset; - else { - if (0x00 == (vpkg_header&0xc0)) - fragment_size = size; - else - fragment_size = vpkg_length; + break; + case 0x00: + fragment_size = size; + break; + default: + fragment_size = vpkg_length; + break; } lprintf ("fragment size is %d\n", fragment_size); @@ -1189,14 +1289,11 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { * read fragment_size bytes of data */ - n = fragment_size; + int n = fragment_size; while(n) { buf = this->video_fifo->buffer_pool_alloc(this->video_fifo); - if(n>buf->max_size) - buf->size = buf->max_size; - else - buf->size = n; + buf->size = MIN(n, buf->max_size); buf->decoder_flags = decoder_flags; decoder_flags &= ~BUF_FLAG_FRAME_START; @@ -1280,12 +1377,9 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { input_time = (int)((int64_t) this->input->get_current_pos(this->input) * 8 * 1000 / this->avg_bitrate); - if(this->data_start && this->data_chunk_size) - input_length = this->data_start + 18 + this->data_chunk_size; - else - input_length = 0; + const off_t input_length = this->data_start + 18 + this->data_chunk_size; - if( input_length ) + if( input_length > 18 ) normpos = (int)((double) this->input->get_current_pos(this->input) * 65535 / input_length); check_newpts (this, pts, PTS_AUDIO, 0); @@ -1293,13 +1387,14 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { /* Each packet of AAC is made up of several AAC frames preceded by a * header defining the size of the frames */ if(this->audio_stream->buf_type == BUF_AUDIO_AAC) { - int i, frames, *sizes; + int i; /* Upper 4 bits of second byte is frame count */ - frames = (stream_read_word(this) & 0xf0) >> 4; + const int frames = (stream_read_word(this) & 0xf0) >> 4; /* 2 bytes per frame size */ - sizes = xine_xmalloc(frames*sizeof(int)); + int sizes[frames]; + for(i = 0; i < frames; i++) sizes[i] = stream_read_word(this); @@ -1311,15 +1406,77 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_real: failed to read AAC frame\n"); - free(sizes); this->status = DEMUX_FINISHED; return this->status; } pts = 0; /* Only set pts on first frame */ } - - free(sizes); + } else if (this->audio_stream->buf_type == BUF_AUDIO_COOK || + this->audio_stream->buf_type == BUF_AUDIO_ATRK || + this->audio_stream->buf_type == BUF_AUDIO_28_8 || + this->audio_stream->buf_type == BUF_AUDIO_SIPRO) { + /* reorder */ + uint8_t * buffer = this->audio_stream->frame_buffer; + int sps = this->audio_stream->sps; + int sph = this->audio_stream->h; + int cfs = this->audio_stream->cfs; + int w = this->audio_stream->w; + int spc = this->audio_stream->sub_packet_cnt; + int x; + off_t pos; + const size_t fs = this->audio_stream->frame_size; + + if (!buffer) { + this->status = DEMUX_FINISHED; + return this->status; + } + + switch (this->audio_stream->buf_type) { + case BUF_AUDIO_28_8: + for (x = 0; x < sph / 2; x++) { + pos = x * 2 * w + spc * cfs; + if(pos + cfs > fs || this->input->read(this->input, buffer + pos, cfs) < cfs) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: failed to read audio chunk\n"); + + this->status = DEMUX_FINISHED; + return this->status; + } + } + break; + case BUF_AUDIO_COOK: + case BUF_AUDIO_ATRK: + for (x = 0; x < w / sps; x++) { + pos = sps * (sph * x + ((sph + 1) / 2) * (spc & 1) + (spc >> 1)); + if(pos + sps > fs || this->input->read(this->input, buffer + pos, sps) < sps) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: failed to read audio chunk\n"); + + this->status = DEMUX_FINISHED; + return this->status; + } + } + break; + case BUF_AUDIO_SIPRO: + pos = spc * w; + if(pos + w > fs || this->input->read(this->input, buffer + pos, w) < w) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_real: failed to read audio chunk\n"); + + this->status = DEMUX_FINISHED; + return this->status; + } + if (spc == sph - 1) + demux_real_sipro_swap (buffer, sph * w * 2 / 96); + break; + } + if(++this->audio_stream->sub_packet_cnt == sph) { + this->audio_stream->sub_packet_cnt = 0; + _x_demux_send_data(this->audio_fifo, buffer, this->audio_stream->frame_size, + pts, this->audio_stream->buf_type, 0, normpos, input_time, + this->duration, 0); + } } else { if(_x_demux_read_send_data(this->audio_fifo, this->input, size, pts, this->audio_stream->buf_type, 0, normpos, @@ -1352,18 +1509,10 @@ discard: /* check if it's time to reload */ if (!this->current_data_chunk_packet_count && this->next_data_chunk_offset) { - char preamble[PREAMBLE_SIZE]; unsigned char data_chunk_header[DATA_CHUNK_HEADER_SIZE]; /* seek to the next DATA chunk offset */ - this->input->seek(this->input, this->next_data_chunk_offset, SEEK_SET); - - /* load the DATA chunk preamble */ - if (this->input->read(this->input, preamble, PREAMBLE_SIZE) != - PREAMBLE_SIZE) { - this->status = DEMUX_FINISHED; - return this->status; - } + this->input->seek(this->input, this->next_data_chunk_offset + PREAMBLE_SIZE, SEEK_SET); /* load the rest of the DATA chunk header */ if (this->input->read(this->input, data_chunk_header, @@ -1469,6 +1618,9 @@ static int demux_real_seek (demux_plugin_t *this_gen, this->input->seek(this->input, index[i].offset, SEEK_SET); if(playing) { + if(this->audio_stream) + this->audio_stream->sub_packet_cnt = 0; + this->buf_flag_seek = 1; _x_demux_flush_engine(this->stream); } @@ -1499,19 +1651,16 @@ static void demux_real_dispose (demux_plugin_t *this_gen) { for(i = 0; i < this->num_video_streams; i++) { real_free_mdpr(this->video_streams[i].mdpr); - if(this->video_streams[i].index) - free(this->video_streams[i].index); + free(this->video_streams[i].index); } for(i = 0; i < this->num_audio_streams; i++) { real_free_mdpr(this->audio_streams[i].mdpr); - if(this->audio_streams[i].index) - free(this->audio_streams[i].index); + free(this->audio_streams[i].index); + free(this->audio_streams[i].frame_buffer); } - if(this->fragment_tab) - free(this->fragment_tab); - + free(this->fragment_tab); free(this); } @@ -1538,21 +1687,27 @@ static int demux_real_get_optional_data(demux_plugin_t *this_gen, } /* help function to discover stream type. returns: + * -1 if couldn't read * 0 if not known. * 1 if normal stream. * 2 if reference stream. */ -static int real_check_stream_type(uint8_t *buf, int len) +static int real_check_stream_type(input_plugin_t *input) { - if ((buf[0] == 0x2e) - && (buf[1] == 'R') - && (buf[2] == 'M') - && (buf[3] == 'F')) + uint8_t buf[1024]; + off_t len = _x_demux_read_header(input, buf, sizeof(buf)); + + if ( len < 4 ) + return -1; + + if ( memcmp(buf, "\x2eRMF", 4) == 0 ) return 1; - buf[len] = '\0'; - if( strstr(buf,"pnm://") || strstr(buf,"rtsp://") || strstr(buf,"<smil>") || - !strncmp(buf,"http://",7) ) +#define my_strnstr(haystack, haystacklen, needle) \ + memmem(haystack, haystacklen, needle, sizeof(needle)) + + if( my_strnstr(buf, len, "pnm://") || my_strnstr(buf, len, "rtsp://") || + my_strnstr(buf, len, "<smil>") || !strncmp(buf, "http://", MIN(7, len)) ) return 2; return 0; @@ -1561,32 +1716,24 @@ static int real_check_stream_type(uint8_t *buf, int len) static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *stream, input_plugin_t *input) { - demux_real_t *this; - uint8_t buf[1024+1]; - int len, stream_type=0; - - switch (stream->content_detection_method) { - - case METHOD_BY_CONTENT:{ + /* discover stream type */ + const int stream_type = real_check_stream_type(input); - if (! (len = _x_demux_read_header(input, buf, 1024)) ) - return NULL; + if ( stream_type < 0 ) + return NULL; - lprintf ("read 4 bytes: %02x %02x %02x %02x\n", - buf[0], buf[1], buf[2], buf[3]); + switch (stream->content_detection_method) { - if (!(stream_type = real_check_stream_type(buf,len))) + case METHOD_BY_CONTENT: + if ( stream_type < 1 ) return NULL; - } - - lprintf ("by content accepted.\n"); - break; + + lprintf ("by content accepted.\n"); + break; case METHOD_BY_EXTENSION: { - const char *extensions, *mrl; - - mrl = input->get_mrl (input); - extensions = class_gen->get_extensions (class_gen); + const char *const mrl = input->get_mrl (input); + const char *const extensions = class_gen->get_extensions (class_gen); lprintf ("by extension '%s'\n", mrl); @@ -1605,17 +1752,11 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - - this = xine_xmalloc (sizeof (demux_real_t)); + demux_real_t *this = calloc(1, sizeof(demux_real_t)); this->stream = stream; this->input = input; - /* discover stream type */ - if(!stream_type) - if ( (len = _x_demux_read_header(this->input, buf, 1024)) ) - stream_type = real_check_stream_type(buf,len); - if(stream_type == 2){ this->reference_mode = 1; lprintf("reference stream detected\n"); @@ -1662,9 +1803,7 @@ static void class_dispose (demux_class_t *this_gen) { } static void *init_class (xine_t *xine, void *data) { - demux_real_class_t *this; - - this = xine_xmalloc (sizeof (demux_real_class_t)); + demux_real_class_t *const this = calloc(1, sizeof(demux_real_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_realaudio.c b/src/demuxers/demux_realaudio.c index 70c9b310a..44449667c 100644 --- a/src/demuxers/demux_realaudio.c +++ b/src/demuxers/demux_realaudio.c @@ -41,6 +41,8 @@ #include "bswap.h" #include "group_audio.h" +#include "real_common.h" + #define RA_FILE_HEADER_PREV_SIZE 22 typedef struct { @@ -62,6 +64,12 @@ typedef struct { off_t data_start; off_t data_size; + uint32_t cfs; + uint16_t w, h; + int frame_len; + size_t frame_size; + uint8_t *frame_buffer; + unsigned char *header; unsigned int header_size; } demux_ra_t; @@ -70,25 +78,23 @@ typedef struct { demux_class_t demux_class; } demux_ra_class_t; +/* Map flavour to bytes per second */ +static const int sipr_fl2bps[4] = {813, 1062, 625, 2000}; // 6.5, 8.5, 5, 16 kbit per second + /* returns 1 if the RealAudio file was opened successfully, 0 otherwise */ static int open_ra_file(demux_ra_t *this) { - unsigned char file_header[RA_FILE_HEADER_PREV_SIZE], len; - unsigned short version; - off_t offset; - + uint8_t file_header[RA_FILE_HEADER_PREV_SIZE]; /* check the signature */ if (_x_demux_read_header(this->input, file_header, RA_FILE_HEADER_PREV_SIZE) != RA_FILE_HEADER_PREV_SIZE) return 0; - if ((file_header[0] != '.') || - (file_header[1] != 'r') || - (file_header[2] != 'a')) + if ( memcmp(file_header, ".ra", 3) != 0 ) return 0; /* read version */ - version = _X_BE_16(&file_header[0x04]); + const uint16_t version = _X_BE_16(&file_header[0x04]); /* read header size according to version */ if (version == 3) @@ -101,14 +107,15 @@ static int open_ra_file(demux_ra_t *this) { } /* allocate for and read header data */ - this->header = xine_xmalloc(this->header_size); + this->header = malloc(this->header_size); - if (_x_demux_read_header(this->input, this->header, this->header_size) != this->header_size) { + if (!this->header || _x_demux_read_header(this->input, this->header, this->header_size) != this->header_size) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_realaudio: unable to read header\n"); free(this->header); return 0; } + off_t offset; /* read header data according to version */ if((version == 3) && (this->header_size >= 32)) { this->data_size = _X_BE_32(&this->header[0x12]); @@ -138,47 +145,81 @@ static int open_ra_file(demux_ra_t *this) { } /* Read title */ - len = this->header[offset]; - if(len && ((offset+len+2) < this->header_size)) { - _x_meta_info_n_set(this->stream, XINE_META_INFO_TITLE, - &this->header[offset+1], len); - offset += len+1; - } else - offset++; + { + const uint8_t len = this->header[offset]; + if(len && ((offset+len+2) < this->header_size)) { + _x_meta_info_n_set(this->stream, XINE_META_INFO_TITLE, + &this->header[offset+1], len); + offset += len+1; + } else + offset++; + } /* Author */ - len = this->header[offset]; - if(len && ((offset+len+1) < this->header_size)) { - _x_meta_info_n_set(this->stream, XINE_META_INFO_ARTIST, - &this->header[offset+1], len); - offset += len+1; - } else - offset++; + { + const uint8_t len = this->header[offset]; + if(len && ((offset+len+1) < this->header_size)) { + _x_meta_info_n_set(this->stream, XINE_META_INFO_ARTIST, + &this->header[offset+1], len); + offset += len+1; + } else + offset++; + } /* Copyright/Date */ - len = this->header[offset]; - if(len && ((offset+len) <= this->header_size)) { - _x_meta_info_n_set(this->stream, XINE_META_INFO_YEAR, - &this->header[offset+1], len); - offset += len+1; - } else - offset++; + { + const uint8_t len = this->header[offset]; + if(len && ((offset+len) <= this->header_size)) { + _x_meta_info_n_set(this->stream, XINE_META_INFO_YEAR, + &this->header[offset+1], len); + offset += len+1; + } else + offset++; + } /* Fourcc for version 3 comes after meta info */ - if((version == 3) && ((offset+7) <= this->header_size)) { - if(this->header[offset+2] == 4) - this->fourcc = _X_ME_32(&this->header[offset+3]); - else { - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_realaudio: invalid fourcc size %d\n", this->header[offset+2]); - free(this->header); - return 0; + if(version == 3) { + if (((offset+7) <= this->header_size)) { + if(this->header[offset+2] == 4) + this->fourcc = _X_ME_32(&this->header[offset+3]); + else { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_realaudio: invalid fourcc size %d\n", this->header[offset+2]); + free(this->header); + return 0; + } + } else { + this->fourcc = ME_FOURCC('l', 'p', 'c', 'J'); } } _x_stream_info_set(this->stream, XINE_STREAM_INFO_AUDIO_FOURCC, this->fourcc); this->audio_type = _x_formattag_to_buf_audio(this->fourcc); + if (version == 4) { + const uint16_t sps = _X_BE_16 (this->header+44) ? : 1; + this->w = _X_BE_16 (this->header+42); + this->h = _X_BE_16 (this->header+40); + this->cfs = _X_BE_32 (this->header+24); + + if (this->w < 0x8000 && this->h < 0x8000) { + uint64_t fs; + this->frame_len = this->w * this->h; + fs = (uint64_t) this->frame_len * sps; + if (fs < 0x80000000) { + this->frame_size = fs; + this->frame_buffer = calloc(this->frame_size, 1); + } + } + if (! this->frame_buffer) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_realaudio: malloc failed\n"); + return 0; + } + + if (this->audio_type == BUF_AUDIO_28_8 || this->audio_type == BUF_AUDIO_SIPRO) + this->block_align = this->cfs; + } + /* seek to start of data */ this->data_start = this->header_size; if (this->input->seek(this->input, this->data_start, SEEK_SET) != @@ -197,7 +238,6 @@ static int demux_ra_send_chunk(demux_plugin_t *this_gen) { demux_ra_t *this = (demux_ra_t *) this_gen; off_t current_normpos = 0; - int64_t current_pts; /* just load data chunks from wherever the stream happens to be * pointing; issue a DEMUX_FINISHED status if EOF is reached */ @@ -205,14 +245,45 @@ static int demux_ra_send_chunk(demux_plugin_t *this_gen) { current_normpos = (int)( (double) (this->input->get_current_pos (this->input) - this->data_start) * 65535 / this->data_size ); - current_pts = 0; /* let the engine sort out the pts for now */ + const int64_t current_pts = 0; /* let the engine sort out the pts for now */ if (this->seek_flag) { _x_demux_control_newpts(this->stream, current_pts, BUF_FLAG_SEEK); this->seek_flag = 0; } - if(_x_demux_read_send_data(this->audio_fifo, this->input, this->block_align, + if (this->audio_type == BUF_AUDIO_28_8 || this->audio_type == BUF_AUDIO_SIPRO) { + if (this->audio_type == BUF_AUDIO_SIPRO) { + if(this->input->read(this->input, this->frame_buffer, this->frame_len) < this->frame_len) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_realaudio: failed to read audio chunk\n"); + + this->status = DEMUX_FINISHED; + return this->status; + } + demux_real_sipro_swap (this->frame_buffer, this->frame_len * 2 / 96); + } else { + int x, y; + + for (y = 0; y < this->h; y++) + for (x = 0; x < this->h / 2; x++) { + const int pos = x * 2 * this->w + y * this->cfs; + if(this->input->read(this->input, this->frame_buffer + pos, + this->cfs) < this->cfs) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_realaudio: failed to read audio chunk\n"); + + this->status = DEMUX_FINISHED; + return this->status; + } + } + } + + _x_demux_send_data(this->audio_fifo, + this->frame_buffer, this->frame_size, + current_pts, this->audio_type, 0, + current_normpos, current_pts / 90, 0, 0); + } else if(_x_demux_read_send_data(this->audio_fifo, this->input, this->block_align, current_pts, this->audio_type, 0, current_normpos, current_pts / 90, 0, 0) < 0) { this->status = DEMUX_FINISHED; @@ -244,10 +315,7 @@ static void demux_ra_send_headers(demux_plugin_t *this_gen) { buf->type = this->audio_type; buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_FRAME_END; - if(this->header_size > buf->max_size) - buf->size = buf->max_size; - else - buf->size = this->header_size; + buf->size = MIN(this->header_size, buf->max_size); memcpy(buf->content, this->header, buf->size); @@ -299,6 +367,8 @@ static void demux_ra_dispose (demux_plugin_t *this_gen) { if(this->header) free(this->header); + if (this->frame_buffer) + free(this->frame_buffer); free(this); } @@ -311,8 +381,6 @@ static int demux_ra_get_status (demux_plugin_t *this_gen) { /* return the approximate length in miliseconds */ static int demux_ra_get_stream_length (demux_plugin_t *this_gen) { - demux_ra_t *this = (demux_ra_t *) this_gen; - return 0; } @@ -330,9 +398,10 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_ra_t *this; - this = xine_xmalloc (sizeof (demux_ra_t)); + this = calloc(1, sizeof(demux_ra_t)); this->stream = stream; this->input = input; + this->frame_buffer = NULL; this->demux_plugin.send_headers = demux_ra_send_headers; this->demux_plugin.send_chunk = demux_ra_send_chunk; @@ -404,7 +473,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_realaudio_init_plugin (xine_t *xine, void *data) { demux_ra_class_t *this; - this = xine_xmalloc (sizeof (demux_ra_class_t)); + this = calloc(1, sizeof(demux_ra_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_roq.c b/src/demuxers/demux_roq.c index 18edaea87..df2fb76a5 100644 --- a/src/demuxers/demux_roq.c +++ b/src/demuxers/demux_roq.c @@ -47,7 +47,6 @@ #include "bswap.h" #include "group_games.h" -#define RoQ_MAGIC_NUMBER 0x1084 #define RoQ_CHUNK_PREAMBLE_SIZE 8 #define RoQ_AUDIO_SAMPLE_RATE 22050 @@ -93,8 +92,9 @@ static int open_roq_file(demux_roq_t *this) { return 0; /* check for the RoQ magic numbers */ - if ((_X_LE_16(&preamble[0]) != RoQ_MAGIC_NUMBER) || - (_X_LE_32(&preamble[2]) != 0xFFFFFFFF)) + static const uint8_t RoQ_MAGIC_STRING[] = + { 0x10, 0x84, 0xFF, 0xFF, 0xFF, 0xFF }; + if( memcmp(preamble, RoQ_MAGIC_STRING, sizeof(RoQ_MAGIC_STRING)) != 0 ) return 0; this->bih.biSize = sizeof(xine_bmiheader); @@ -411,7 +411,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_roq_t)); + this = calloc(1, sizeof(demux_roq_t)); this->stream = stream; this->input = input; @@ -485,7 +485,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_roq_init_plugin (xine_t *xine, void *data) { demux_roq_class_t *this; - this = xine_xmalloc (sizeof (demux_roq_class_t)); + this = calloc(1, sizeof(demux_roq_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_shn.c b/src/demuxers/demux_shn.c index 87324ab45..ccc34b57f 100644 --- a/src/demuxers/demux_shn.c +++ b/src/demuxers/demux_shn.c @@ -88,7 +88,7 @@ static int demux_shn_send_chunk(demux_plugin_t *this_gen) { buf->pts = 0; bytes_read = this->input->read(this->input, buf->content, buf->max_size); - if (bytes_read == 0) { + if (bytes_read <= 0) { buf->free_buffer(buf); this->status = DEMUX_FINISHED; return this->status; @@ -182,7 +182,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_shn_t *this; - this = xine_xmalloc (sizeof (demux_shn_t)); + this = calloc(1, sizeof(demux_shn_t)); this->stream = stream; this->input = input; @@ -253,7 +253,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_shn_init_plugin (xine_t *xine, void *data) { demux_shn_class_t *this; - this = xine_xmalloc (sizeof (demux_shn_class_t)); + this = calloc(1, sizeof(demux_shn_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_slave.c b/src/demuxers/demux_slave.c index 436d37579..abb4d01e5 100644 --- a/src/demuxers/demux_slave.c +++ b/src/demuxers/demux_slave.c @@ -90,10 +90,11 @@ static int demux_slave_next (demux_slave_t *this) { /* fill the scratch buffer */ n = this->input->read(this->input, &this->scratch[this->scratch_used], SCRATCH_SIZE - this->scratch_used); - this->scratch_used += n; + if (n > 0) + this->scratch_used += n; this->scratch[this->scratch_used] = '\0'; - if( !n ) { + if (n <= 0) { lprintf("connection closed\n"); this->status = DEMUX_FINISHED; return 0; @@ -186,10 +187,8 @@ static int demux_slave_next (demux_slave_t *this) { buf->decoder_flags = decoder_flags; /* set decoder info */ - for( i = 0; i < BUF_NUM_DEC_INFO; i++ ) { - buf->decoder_info[i] = this->decoder_info[i]; - buf->decoder_info_ptr[i] = this->decoder_info_ptr[i]; - } + memcpy(buf->decoder_info, this->decoder_info, sizeof(this->decoder_info)); + memcpy(buf->decoder_info_ptr, this->decoder_info_ptr, sizeof(this->decoder_info)); memset(this->decoder_info, 0, sizeof(this->decoder_info)); memset(this->decoder_info_ptr, 0, sizeof(this->decoder_info_ptr)); @@ -331,7 +330,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_slave_t *this; static char slave_id_str[] = "master xine v1\n"; - this = xine_xmalloc (sizeof (demux_slave_t)); + this = calloc(1, sizeof(demux_slave_t)); switch (stream->content_detection_method) { @@ -414,7 +413,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_slave_class_t *this; - this = xine_xmalloc (sizeof (demux_slave_class_t)); + this = calloc(1, sizeof(demux_slave_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_smjpeg.c b/src/demuxers/demux_smjpeg.c index 899fbf7e3..aacd55503 100644 --- a/src/demuxers/demux_smjpeg.c +++ b/src/demuxers/demux_smjpeg.c @@ -55,7 +55,6 @@ #define vidD_TAG FOURCC_TAG('v', 'i', 'd', 'D') #define APCM_TAG FOURCC_TAG('A', 'P', 'C', 'M') -#define SMJPEG_SIGNATURE_SIZE 8 /* 16 is the max size of a header chunk (the video header) */ #define SMJPEG_VIDEO_HEADER_SIZE 16 #define SMJPEG_AUDIO_HEADER_SIZE 12 @@ -98,23 +97,18 @@ static int open_smjpeg_file(demux_smjpeg_t *this) { unsigned char header_chunk[SMJPEG_HEADER_CHUNK_MAX_SIZE]; unsigned int audio_codec = 0; - if (_x_demux_read_header(this->input, signature, SMJPEG_SIGNATURE_SIZE) != - SMJPEG_SIGNATURE_SIZE) + static const uint8_t SMJPEG_SIGNATURE[8] = + { 0x00, 0x0A, 'S', 'M', 'J', 'P', 'E', 'G' }; + + if (_x_demux_read_header(this->input, signature, sizeof(SMJPEG_SIGNATURE)) != + sizeof(SMJPEG_SIGNATURE)) return 0; - /* check for the SMJPEG signature */ - if ((signature[0] != 0x00) || - (signature[1] != 0x0A) || - (signature[2] != 'S') || - (signature[3] != 'M') || - (signature[4] != 'J') || - (signature[5] != 'P') || - (signature[6] != 'E') || - (signature[7] != 'G')) + if (memcmp(signature, SMJPEG_SIGNATURE, sizeof(SMJPEG_SIGNATURE)) != 0) return 0; /* file is qualified; jump over the header + version to the duration */ - this->input->seek(this->input, SMJPEG_SIGNATURE_SIZE + 4, SEEK_SET); + this->input->seek(this->input, sizeof(SMJPEG_SIGNATURE) + 4, SEEK_SET); if (this->input->read(this->input, header_chunk, 4) != 4) return 0; this->duration = _X_BE_32(&header_chunk[0]); @@ -400,7 +394,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_smjpeg_t)); + this = calloc(1, sizeof(demux_smjpeg_t)); this->stream = stream; this->input = input; @@ -474,7 +468,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_smjpeg_init_plugin (xine_t *xine, void *data) { demux_smjpeg_class_t *this; - this = xine_xmalloc (sizeof (demux_smjpeg_class_t)); + this = calloc(1, sizeof(demux_smjpeg_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_snd.c b/src/demuxers/demux_snd.c index 0965a75ae..b98b66758 100644 --- a/src/demuxers/demux_snd.c +++ b/src/demuxers/demux_snd.c @@ -42,8 +42,6 @@ #define SND_HEADER_SIZE 24 #define PCM_BLOCK_ALIGN 1024 -/* this is the big-endian hex value '.snd' */ -#define snd_TAG 0x2E736E64 typedef struct { demux_plugin_t demux_plugin; @@ -83,7 +81,7 @@ static int open_snd_file(demux_snd_t *this) { return 0; /* check the signature */ - if (_X_BE_32(&header[0]) != snd_TAG) + if ( !_x_is_fourcc(&header[0], ".snd") ) return 0; /* file is qualified; skip over the header bytes in the stream */ @@ -318,7 +316,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_snd_t *this; - this = xine_xmalloc (sizeof (demux_snd_t)); + this = calloc(1, sizeof(demux_snd_t)); this->stream = stream; this->input = input; @@ -395,7 +393,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_snd_init_plugin (xine_t *xine, void *data) { demux_snd_class_t *this; - this = xine_xmalloc (sizeof (demux_snd_class_t)); + this = calloc(1, sizeof(demux_snd_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_str.c b/src/demuxers/demux_str.c index 2cf542014..442bffadc 100644 --- a/src/demuxers/demux_str.c +++ b/src/demuxers/demux_str.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -139,20 +139,15 @@ #define CD_RAW_SECTOR_SIZE 2352 +#define STR_MAGIC "\x60\x01\x01\x80" #define STR_MAX_CHANNELS 32 -#define STR_MAGIC (0x80010160) - #define CDXA_TYPE_MASK 0x0E #define CDXA_TYPE_DATA 0x08 #define CDXA_TYPE_AUDIO 0x04 #define CDXA_TYPE_VIDEO 0x02 #define CDXA_SUBMODE_EOF 0x80 /* set if EOF */ -#define FOURCC_TAG BE_FOURCC -#define RIFF_TAG FOURCC_TAG('R', 'I', 'F', 'F') -#define CDXA_TAG FOURCC_TAG('C', 'D', 'X', 'A') - /* FIXME */ #define FRAME_DURATION 45000 @@ -188,9 +183,7 @@ static int open_str_file(demux_str_t *this) { unsigned char check_bytes[STR_CHECK_BYTES]; int local_offset, sector, channel; - for (channel = 0; channel < STR_MAX_CHANNELS; channel++) { - this->channel_type[channel] = 0; - } + memset(this->channel_type, 0, sizeof(this->channel_type)); this->input->seek(this->input, 0, SEEK_SET); if (this->input->read(this->input, check_bytes, STR_CHECK_BYTES) != @@ -200,8 +193,8 @@ static int open_str_file(demux_str_t *this) { } /* check for STR with a RIFF header */ - if ((_X_BE_32(&check_bytes[0]) == RIFF_TAG) && - (_X_BE_32(&check_bytes[8]) == CDXA_TAG)) + if ( _x_is_fourcc(&check_bytes[0], "RIFF") && + _x_is_fourcc(&check_bytes[8], "CDXA") ) local_offset = 0x2C; else local_offset = 0; @@ -218,16 +211,20 @@ static int open_str_file(demux_str_t *this) { check_bytes[local_offset + 0x13]); /* check for 12-byte sync marker */ - if ((_X_BE_32(&check_bytes[local_offset + 0]) != 0x00FFFFFF) || - (_X_BE_32(&check_bytes[local_offset + 4]) != 0xFFFFFFFF) || - (_X_BE_32(&check_bytes[local_offset + 8]) != 0xFFFFFF00)) { + static const uint8_t sync_marker[12] = + { 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0X00 + }; + if ( memcmp(&check_bytes[local_offset], + sync_marker, sizeof(sync_marker)) != 0 ) { lprintf("sector %d sync error\n", sector); return 0; } /* the 32 bits starting at 0x10 and at 0x14 should be the same */ - if (_X_BE_32(&check_bytes[local_offset + 0x10]) != - _X_BE_32(&check_bytes[local_offset + 0x14])) { + if (memcmp(&check_bytes[local_offset + 0x10], + &check_bytes[local_offset + 0x14], 4) != 0) { lprintf("sector %d control bits copy error\n", sector); return 0; } @@ -246,7 +243,7 @@ static int open_str_file(demux_str_t *this) { case CDXA_TYPE_VIDEO: /* first time we have seen video/data in this channel? */ if ((!(this->channel_type[channel] & CDXA_TYPE_DATA)) && - (_X_LE_32(&check_bytes[local_offset + 0x18]) == STR_MAGIC)) { + (_x_is_fourcc(&check_bytes[local_offset + 0x18], STR_MAGIC))) { /* mark this channel as having video data */ this->channel_type[channel] |= CDXA_TYPE_VIDEO; @@ -347,7 +344,7 @@ static int demux_str_send_chunk(demux_plugin_t *this_gen) { case CDXA_TYPE_DATA: /* video chunk */ - if (_X_LE_32(§or[0x18]) != STR_MAGIC || + if (!_x_is_fourcc(§or[0x18], STR_MAGIC) || channel != this->default_video_channel) { return 0; } @@ -555,7 +552,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_str_t)); + this = calloc(1, sizeof(demux_str_t)); this->stream = stream; this->input = input; @@ -628,7 +625,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_str_init_plugin (xine_t *xine, void *data) { demux_str_class_t *this; - this = xine_xmalloc (sizeof (demux_str_class_t)); + this = calloc(1, sizeof(demux_str_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index 86a14f019..98de1f9ea 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -185,9 +185,6 @@ #define INVALID_PROGRAM ((unsigned int)(-1)) #define INVALID_CC ((unsigned int)(-1)) -#define MIN(a,b) (((a)<(b))?(a):(b)) -#define MAX(a,b) (((a)>(b))?(a):(b)) - #define PROG_STREAM_MAP 0xBC #define PRIVATE_STREAM1 0xBD #define PADDING_STREAM 0xBE @@ -220,7 +217,9 @@ ISO_13818_PART7_AUDIO = 0x0f, /* ISO/IEC 13818-7 Audio with ADTS transport sytax */ ISO_14496_PART2_VIDEO = 0x10, /* ISO/IEC 14496-2 Visual (MPEG-4) */ ISO_14496_PART3_AUDIO = 0x11, /* ISO/IEC 14496-3 Audio with LATM transport syntax */ - ISO_14496_PART10_VIDEO = 0x1b /* ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264) */ + ISO_14496_PART10_VIDEO = 0x1b, /* ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264) */ + STREAM_VIDEO_MPEG = 0x80, + STREAM_AUDIO_AC3 = 0x81, } streamType; #define WRAP_THRESHOLD 270000 @@ -246,10 +245,11 @@ typedef struct { int64_t pts; buf_element_t *buf; unsigned int counter; - uint8_t descriptor_tag; + uint16_t descriptor_tag; /* +0x100 for PES stream IDs (no available TS descriptor tag?) */ int64_t packet_count; int corrupted_pes; uint32_t buffered_bytes; + int autodetected; } demux_ts_media; @@ -752,15 +752,16 @@ static int demux_ts_parse_pes_header (xine_t *xine, demux_ts_media *m, * we check the descriptor tag first because some stations * do not include any of the ac3 header info in their audio tracks * these "raw" streams may begin with a byte that looks like a stream type. + * For audio streams, m->type already contains the stream no. */ - if((m->descriptor_tag == 0x81) || /* ac3 - raw */ + if((m->descriptor_tag == STREAM_AUDIO_AC3) || /* ac3 - raw */ (p[0] == 0x0B && p[1] == 0x77)) { /* ac3 - syncword */ m->content = p; m->size = packet_len; m->type |= BUF_AUDIO_A52; return 1; - } else if (m->descriptor_tag == 0x06 + } else if (m->descriptor_tag == ISO_13818_PES_PRIVATE && p[0] == 0x20 && p[1] == 0x00) { /* DVBSUB */ long payload_len = ((buf[4] << 8) | buf[5]) - header_len - 3; @@ -808,6 +809,7 @@ static int demux_ts_parse_pes_header (xine_t *xine, demux_ts_media *m, switch (m->descriptor_tag) { case ISO_11172_VIDEO: case ISO_13818_VIDEO: + case STREAM_VIDEO_MPEG: lprintf ("demux_ts: found MPEG video type.\n"); m->type = BUF_VIDEO_MPEG; break; @@ -931,9 +933,11 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts, m->buf->free_buffer(m->buf); m->buf = NULL; - if (m->corrupted_pes > CORRUPT_PES_THRESHOLD) { - if (this->videoPid == m->pid) + if (m->corrupted_pes > CORRUPT_PES_THRESHOLD && m->autodetected) { + if (this->videoPid == m->pid) { this->videoPid = INVALID_PID; + this->last_pmt_crc = 0; + } } else { m->corrupted_pes++; xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, @@ -982,7 +986,7 @@ static void demux_ts_pes_new(demux_ts_t*this, unsigned int mediaIndex, unsigned int pid, fifo_buffer_t *fifo, - uint8_t descriptor) { + uint16_t descriptor) { demux_ts_media *m = &this->media[mediaIndex]; @@ -1193,6 +1197,15 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num return; } + if (!section_length) { + free (this->pmt[program_count]); + this->pmt[program_count] = NULL; +#ifdef TS_PMT_LOG + printf ("ts_demux: eek, zero-length section?\n"); +#endif + return; + } + #ifdef TS_PMT_LOG printf ("ts_demux: have all TS packets for the PMT section\n"); #endif @@ -1230,6 +1243,15 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num } } + /* + * Forget the current video, audio and subtitle PIDs; if the PMT has not + * changed, we'll pick them up again when we parse this PMT, while if the + * PMT has changed (e.g. an IPTV streamer that's just changed its source), + * we'll get new PIDs that we should follow. + */ + this->audio_tracks_count = 0; + this->videoPid = INVALID_PID; + this->spu_pid = INVALID_PID; /* * ES definitions start here...we are going to learn upto one video @@ -1331,7 +1353,6 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num case ISO_13818_PES_PRIVATE: for (i = 5; i < coded_length; i += stream[i+1] + 2) { if ((stream[i] == 0x6a) && (this->audio_tracks_count < MAX_AUDIO_TRACKS)) { - uint32_t format_identifier=0; int i, found = 0; for(i = 0; i < this->audio_tracks_count; i++) { if(this->audio_tracks[i].pid == pid) { @@ -1344,7 +1365,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num printf ("demux_ts: PMT AC3 audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, - this->audio_fifo, 0x81); + this->audio_fifo, STREAM_AUDIO_AC3); this->audio_tracks[this->audio_tracks_count].pid = pid; this->audio_tracks[this->audio_tracks_count].media_index = this->media_num; @@ -1555,7 +1576,7 @@ static unsigned char * demux_synchronise(demux_ts_t* this) { do { read_length = this->input->read(this->input, this->buf, PKT_SIZE * NPKT_PER_READ); - if (read_length % PKT_SIZE) { + if (read_length < 0 || read_length % PKT_SIZE) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: read returned %d bytes (not a multiple of %d!)\n", read_length, PKT_SIZE); @@ -1837,7 +1858,8 @@ static void demux_ts_parse_packet (demux_ts_t*this) { } else if (!found) { this->videoPid = pid; this->videoMedia = this->media_num; - demux_ts_pes_new(this, this->media_num++, pid, this->video_fifo, pes_stream_id); + this->media[this->videoMedia].autodetected = 1; + demux_ts_pes_new(this, this->media_num++, pid, this->video_fifo, 0x100 + pes_stream_id); } if (this->videoPid != INVALID_PID) { @@ -1859,11 +1881,12 @@ static void demux_ts_parse_packet (demux_ts_t*this) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: auto-detected audio pid 0x%.4x\n", pid); #endif + /* store PID, index and stream no. */ this->audio_tracks[this->audio_tracks_count].pid = pid; this->audio_tracks[this->audio_tracks_count].media_index = this->media_num; this->media[this->media_num].type = this->audio_tracks_count; demux_ts_pes_new(this, this->media_num++, pid, - this->audio_fifo,pes_stream_id); + this->audio_fifo, 0x100 + pes_stream_id); this->audio_tracks_count++; } } @@ -2229,7 +2252,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, * if we reach this point, the input has been accepted. */ - this = xine_xmalloc(sizeof(*this)); + this = calloc(1, sizeof(*this)); this->stream = stream; this->input = input; this->blockSize = PKT_SIZE; @@ -2250,6 +2273,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, for (i = 0; i < MAX_PIDS; i++) { this->media[i].pid = INVALID_PID; this->media[i].buf = NULL; + this->media[i].autodetected = 0; } for (i = 0; i < MAX_PMTS; i++) { @@ -2270,12 +2294,6 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, this->status = DEMUX_FINISHED; -#ifdef TS_READ_STATS - for (i=0; i<=NPKT_PER_READ; i++) { - this->rstat[i] = 0; - } -#endif - /* DVBSUB */ this->spu_pid = INVALID_PID; this->spu_langs_count = 0; @@ -2320,7 +2338,7 @@ static void *init_class (xine_t *xine, void *data) { demux_ts_class_t *this; - this = xine_xmalloc (sizeof (demux_ts_class_t)); + this = calloc(1, sizeof(demux_ts_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/demuxers/demux_tta.c b/src/demuxers/demux_tta.c index f6eadd652..24a983157 100644 --- a/src/demuxers/demux_tta.c +++ b/src/demuxers/demux_tta.c @@ -21,6 +21,10 @@ * Inspired by tta libavformat demuxer by Alex Beregszaszi */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #define LOG_MODULE "demux_tta" #define LOG_VERBOSE @@ -72,7 +76,7 @@ static int open_tta_file(demux_tta_t *this) { if (_x_demux_read_header(this->input, peek, 4) != 4) return 0; - if ( _X_BE_32(peek) != FOURCC_32('T', 'T', 'A', '1') ) + if ( !_x_is_fourcc(peek, "TTA1") ) return 0; if ( this->input->read(this->input, this->header.buffer, sizeof(this->header)) != sizeof(this->header) ) @@ -87,7 +91,7 @@ static int open_tta_file(demux_tta_t *this) { return 0; } - this->seektable = xine_xmalloc(sizeof(uint32_t)*this->totalframes); + this->seektable = calloc(this->totalframes, sizeof(uint32_t)); this->input->read(this->input, this->seektable, sizeof(uint32_t)*this->totalframes); /* Skip the CRC32 */ @@ -126,6 +130,10 @@ static int demux_tta_send_chunk(demux_plugin_t *this_gen) { /* buf->extra_info->input_time = this->current_sample / this->samplerate; */ bytes_read = this->input->read(this->input, buf->content, ( bytes_to_read > buf->max_size ) ? buf->max_size : bytes_to_read); + if (bytes_read < 0) { + this->status = DEMUX_FINISHED; + break; + } buf->size = bytes_read; @@ -233,7 +241,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_tta_t *this; - this = xine_xmalloc (sizeof (demux_tta_t)); + this = calloc(1, sizeof(demux_tta_t)); this->stream = stream; this->input = input; @@ -307,7 +315,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_tta_init_plugin (xine_t *xine, void *data) { demux_tta_class_t *this; - this = xine_xmalloc (sizeof (demux_tta_class_t)); + this = calloc(1, sizeof(demux_tta_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_vmd.c b/src/demuxers/demux_vmd.c index 8b0087417..b81e4575e 100644 --- a/src/demuxers/demux_vmd.c +++ b/src/demuxers/demux_vmd.c @@ -168,7 +168,7 @@ static int open_vmd_file(demux_vmd_t *this) { return 0; } - this->frame_table = xine_xmalloc(this->frame_count * sizeof(vmd_frame_t)); + this->frame_table = calloc(this->frame_count, sizeof(vmd_frame_t)); current_offset = this->data_start = _X_LE_32(&vmd_header[20]); this->data_size = toc_offset - this->data_start; @@ -421,7 +421,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_vmd_t *this; - this = xine_xmalloc (sizeof (demux_vmd_t)); + this = calloc(1, sizeof(demux_vmd_t)); this->stream = stream; this->input = input; @@ -495,7 +495,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_vmd_init_plugin (xine_t *xine, void *data) { demux_vmd_class_t *this; - this = xine_xmalloc (sizeof (demux_vmd_class_t)); + this = calloc(1, sizeof(demux_vmd_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_voc.c b/src/demuxers/demux_voc.c index 0439980f8..e825f6869 100644 --- a/src/demuxers/demux_voc.c +++ b/src/demuxers/demux_voc.c @@ -85,7 +85,7 @@ static int open_voc_file(demux_voc_t *this) { return 0; /* check the signature */ - if (strncmp(header, VOC_SIGNATURE, strlen(VOC_SIGNATURE)) != 0) + if (memcmp(header, VOC_SIGNATURE, sizeof(VOC_SIGNATURE)-1) != 0) return 0; /* file is qualified */ @@ -106,7 +106,7 @@ static int open_voc_file(demux_voc_t *this) { } /* assemble 24-bit, little endian length */ - this->data_size = preamble[1] | (preamble[2] << 8) | (preamble[3] << 16); + this->data_size = _X_LE_24(&preamble[1]); /* get the next 2 bytes (re-use preamble bytes) */ if (this->input->read(this->input, preamble, 2) != 2) @@ -296,7 +296,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_voc_t *this; - this = xine_xmalloc (sizeof (demux_voc_t)); + this = calloc(1, sizeof(demux_voc_t)); this->stream = stream; this->input = input; @@ -370,7 +370,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_voc_init_plugin (xine_t *xine, void *data) { demux_voc_class_t *this; - this = xine_xmalloc (sizeof (demux_voc_class_t)); + this = calloc(1, sizeof(demux_voc_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_vox.c b/src/demuxers/demux_vox.c index 3ce2ad705..1b34106ad 100644 --- a/src/demuxers/demux_vox.c +++ b/src/demuxers/demux_vox.c @@ -77,7 +77,7 @@ static int demux_vox_send_chunk (demux_plugin_t *this_gen) { buf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); buf->type = BUF_AUDIO_DIALOGIC_IMA; bytes_read = this->input->read(this->input, buf->content, buf->max_size); - if (bytes_read == 0) { + if (bytes_read <= 0) { buf->free_buffer(buf); this->status = DEMUX_FINISHED; return this->status; @@ -203,7 +203,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str return NULL; } - this = xine_xmalloc (sizeof (demux_vox_t)); + this = calloc(1, sizeof(demux_vox_t)); this->stream = stream; this->input = input; @@ -247,7 +247,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_vox_init_plugin (xine_t *xine, void *data) { demux_vox_class_t *this; - this = xine_xmalloc (sizeof (demux_vox_class_t)); + this = calloc(1, sizeof(demux_vox_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_vqa.c b/src/demuxers/demux_vqa.c index 40242476b..5fb8273dd 100644 --- a/src/demuxers/demux_vqa.c +++ b/src/demuxers/demux_vqa.c @@ -96,8 +96,8 @@ static int open_vqa_file(demux_vqa_t *this) { return 0; /* check for the VQA signatures */ - if ((_X_BE_32(&scratch[0]) != FORM_TAG) || - (_X_BE_32(&scratch[8]) != WVQA_TAG)) + if (!_x_is_fourcc(&scratch[0], "FORM") || + !_x_is_fourcc(&scratch[8], "WVQA") ) return 0; /* file is qualified; skip to the start of the VQA header */ @@ -334,7 +334,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_vqa_t *this; - this = xine_xmalloc (sizeof (demux_vqa_t)); + this = calloc(1, sizeof(demux_vqa_t)); this->stream = stream; this->input = input; @@ -408,7 +408,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_vqa_init_plugin (xine_t *xine, void *data) { demux_vqa_class_t *this; - this = xine_xmalloc (sizeof (demux_vqa_class_t)); + this = calloc(1, sizeof(demux_vqa_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_wav.c b/src/demuxers/demux_wav.c index 33baaf973..99c50ad67 100644 --- a/src/demuxers/demux_wav.c +++ b/src/demuxers/demux_wav.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2005 the xine project + * Copyright (C) 2001-2008 the xine project * * This file is part of xine, a free video player. * @@ -41,9 +41,11 @@ #include "bswap.h" #include "group_audio.h" -#define WAV_SIGNATURE_SIZE 16 +#define WAV_SIGNATURE_SIZE 12 /* this is the hex value for 'data' */ #define data_TAG 0x61746164 +/* this is the hex value for 'fmt ' */ +#define fmt_TAG 0x20746D66 #define PCM_BLOCK_ALIGN 1024 #define PREFERED_BLOCK_SIZE 4096 @@ -74,31 +76,62 @@ typedef struct { static int demux_wav_get_stream_length (demux_plugin_t *this_gen); -/* returns 1 if the WAV file was opened successfully, 0 otherwise */ -static int open_wav_file(demux_wav_t *this) { - uint8_t signature[WAV_SIGNATURE_SIZE]; +/* searches for the chunk with the given tag from the beginning of WAV file + * returns 1 if chunk was found, 0 otherwise, + * fills chunk_size and chunk_pos if chunk was found + * NOTE: chunk_pos is set to the position of the first byte of chunk data */ +static int find_chunk_by_tag(demux_wav_t *this, const uint32_t given_chunk_tag, + uint32_t *found_chunk_size, off_t *found_chunk_pos) { uint32_t chunk_tag; uint32_t chunk_size; uint8_t chunk_preamble[8]; + /* search for the chunks from the start of the WAV file */ + this->input->seek(this->input, WAV_SIGNATURE_SIZE, SEEK_SET); + + while (1) { + if (this->input->read(this->input, chunk_preamble, 8) != 8) { + return 0; + } + + chunk_tag = _X_LE_32(&chunk_preamble[0]); + chunk_size = _X_LE_32(&chunk_preamble[4]); + + if (chunk_tag == given_chunk_tag) { + if (found_chunk_size) + *found_chunk_size = _X_LE_32(&chunk_preamble[4]); + if (found_chunk_pos) + *found_chunk_pos = this->input->get_current_pos(this->input); + return 1; + } else { + this->input->seek(this->input, chunk_size, SEEK_CUR); + } + } +} + +/* returns 1 if the WAV file was opened successfully, 0 otherwise */ +static int open_wav_file(demux_wav_t *this) { + uint8_t signature[WAV_SIGNATURE_SIZE]; + off_t wave_pos; + uint32_t wave_size; + /* check the signature */ if (_x_demux_read_header(this->input, signature, WAV_SIGNATURE_SIZE) != WAV_SIGNATURE_SIZE) return 0; - if (memcmp(signature, "RIFF", 4) || memcmp(&signature[8], "WAVEfmt ", 8) ) + if (memcmp(signature, "RIFF", 4) || memcmp(&signature[8], "WAVE", 4) ) return 0; - /* file is qualified; skip over the header bytes in the stream */ - this->input->seek(this->input, WAV_SIGNATURE_SIZE, SEEK_SET); - - /* go after the format structure */ - if (this->input->read(this->input, - (unsigned char *)&this->wave_size, 4) != 4) + /* search for the 'fmt ' chunk first */ + wave_pos = 0; + if (find_chunk_by_tag(this, fmt_TAG, &wave_size, &wave_pos)==0) return 0; - this->wave_size = le2me_32(this->wave_size); - this->wave = xine_xmalloc( this->wave_size ); - - if (this->input->read(this->input, (void *)this->wave, this->wave_size) != + this->wave_size = wave_size; + + this->input->seek(this->input, wave_pos, SEEK_SET); + this->wave = malloc( this->wave_size ); + + if (!this->wave || this->input->read(this->input, (void *)this->wave, this->wave_size) != this->wave_size) { free (this->wave); return 0; @@ -114,28 +147,21 @@ static int open_wav_file(demux_wav_t *this) { return 0; } - /* traverse through the chunks to find the 'data' chunk */ + /* search for the 'data' chunk */ this->data_start = this->data_size = 0; - while (this->data_start == 0) { - - if (this->input->read(this->input, chunk_preamble, 8) != 8) { - free (this->wave); - return 0; - } - chunk_tag = _X_LE_32(&chunk_preamble[0]); - chunk_size = _X_LE_32(&chunk_preamble[4]); - - if (chunk_tag == data_TAG) { - this->data_start = this->input->get_current_pos(this->input); - /* Get the data length from the file itself, instead of the data - * TAG, for broken files */ - this->data_size = this->input->get_length(this->input); - } else { - this->input->seek(this->input, chunk_size, SEEK_CUR); - } + if (find_chunk_by_tag(this, data_TAG, NULL, &this->data_start)==0) + { + free (this->wave); + return 0; + } + else + { + /* Get the data length from the file itself, instead of the data + * TAG, for broken files */ + this->input->seek(this->input, this->data_start, SEEK_SET); + this->data_size = this->input->get_length(this->input); + return 1; } - - return 1; } static int demux_wav_send_chunk(demux_plugin_t *this_gen) { @@ -184,11 +210,16 @@ static int demux_wav_send_chunk(demux_plugin_t *this_gen) { buf->size = remaining_sample_bytes; remaining_sample_bytes -= buf->size; - if (this->input->read(this->input, buf->content, buf->size) != + off_t read; + if ((read = this->input->read(this->input, buf->content, buf->size)) != buf->size) { - buf->free_buffer(buf); - this->status = DEMUX_FINISHED; - break; + if (read == 0) { + buf->free_buffer(buf); + this->status = DEMUX_FINISHED; + break; + } else { + buf->size = read; + } } #if 0 @@ -337,7 +368,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_wav_t *this; uint32_t align; - this = xine_xmalloc (sizeof (demux_wav_t)); + this = calloc(1, sizeof(demux_wav_t)); this->stream = stream; this->input = input; @@ -423,7 +454,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_wav_init_plugin (xine_t *xine, void *data) { demux_wav_class_t *this; - this = xine_xmalloc (sizeof (demux_wav_class_t)); + this = calloc(1, sizeof(demux_wav_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_wc3movie.c b/src/demuxers/demux_wc3movie.c index 596d47f4a..7750c3e0e 100644 --- a/src/demuxers/demux_wc3movie.c +++ b/src/demuxers/demux_wc3movie.c @@ -102,7 +102,7 @@ typedef struct { } demux_mve_class_t; /* bizarre palette lookup table */ -const unsigned char wc3_pal_lookup[] = { +static const unsigned char wc3_pal_lookup[] = { 0x00, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0E, 0x10, 0x12, 0x13, 0x15, 0x16, 0x18, 0x19, 0x1A, 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2A, 0x2C, @@ -357,9 +357,9 @@ static int open_mve_file(demux_mve_t *this) { if (_x_demux_read_header(this->input, header, WC3_HEADER_SIZE) != WC3_HEADER_SIZE) return 0; - if ((_X_BE_32(&header[0]) != FORM_TAG) || - (_X_BE_32(&header[8]) != MOVE_TAG) || - (_X_BE_32(&header[12]) != PC_TAG)) + if ( !_x_is_fourcc(&header[0], "FORM") || + !_x_is_fourcc(&header[8], "MOVE") || + !_x_is_fourcc(&header[12], "_PC_") ) return 0; /* file is qualified */ @@ -378,17 +378,21 @@ static int open_mve_file(demux_mve_t *this) { this->number_of_shots = _X_LE_32(&preamble[0]); /* allocate space for the shot offset index and set offsets to 0 */ - this->shot_offsets = xine_xmalloc(this->number_of_shots * sizeof(off_t)); + this->shot_offsets = calloc(this->number_of_shots, sizeof(off_t)); this->current_shot = 0; - for (i = 0; i < this->number_of_shots; i++) - this->shot_offsets[i] = 0; /* skip the SOND chunk */ this->input->seek(this->input, 12, SEEK_CUR); /* load the palette chunks */ - this->palettes = xine_xmalloc(this->number_of_shots * PALETTE_SIZE * + this->palettes = calloc(this->number_of_shots, PALETTE_SIZE * sizeof(palette_entry_t)); + + if (!this->shot_offsets || !this->palettes) { + free (this->shot_offsets); + return 0; + } + for (i = 0; i < this->number_of_shots; i++) { /* make sure there was a valid palette chunk preamble */ if (this->input->read(this->input, preamble, PREAMBLE_SIZE) != @@ -398,8 +402,8 @@ static int open_mve_file(demux_mve_t *this) { return 0; } - if ((_X_BE_32(&preamble[0]) != PALT_TAG) || - (_X_BE_32(&preamble[4]) != PALETTE_CHUNK_SIZE)) { + if ( !_x_is_fourcc(&preamble[0], "PALT") || + (_X_BE_32(&preamble[4]) != PALETTE_CHUNK_SIZE)) { xine_log(this->stream->xine, XINE_LOG_MSG, _("demux_wc3movie: There was a problem while loading palette chunks\n")); free (this->palettes); @@ -460,8 +464,9 @@ static int open_mve_file(demux_mve_t *this) { case BNAM_TAG: /* load the name into the stream attributes */ - title = realloc (title, chunk_size); - if (this->input->read(this->input, title, chunk_size) != chunk_size) { + free (title); + title = malloc (chunk_size); + if (!title || this->input->read(this->input, title, chunk_size) != chunk_size) { free (title); free (this->palettes); free (this->shot_offsets); @@ -667,7 +672,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str demux_mve_t *this; - this = xine_xmalloc (sizeof (demux_mve_t)); + this = calloc(1, sizeof(demux_mve_t)); this->stream = stream; this->input = input; @@ -741,7 +746,7 @@ static void class_dispose (demux_class_t *this_gen) { void *demux_wc3movie_init_plugin (xine_t *xine, void *data) { demux_mve_class_t *this; - this = xine_xmalloc (sizeof (demux_mve_class_t)); + this = calloc(1, sizeof(demux_mve_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_yuv4mpeg2.c b/src/demuxers/demux_yuv4mpeg2.c index 9c5856710..2387fc7a7 100644 --- a/src/demuxers/demux_yuv4mpeg2.c +++ b/src/demuxers/demux_yuv4mpeg2.c @@ -197,21 +197,13 @@ static int open_yuv4mpeg2_file(demux_yuv4mpeg2_t *this) { this->frame_pts_inc = (90000 * this->fps_d) / this->fps_n; /* finally, look for the first frame */ - while ((header_ptr - header) < (Y4M_HEADER_BYTES - 4)) { - if((header_ptr[0] == 'F') && - (header_ptr[1] == 'R') && - (header_ptr[2] == 'A') && - (header_ptr[3] == 'M') && - (header_ptr[4] == 'E')) { - this->data_start = header_ptr - header; - break; - } else - header_ptr++; - } - + char *data_start_ptr = memmem(header_ptr, Y4M_HEADER_BYTES, "FRAME", 5); + /* make sure the first frame was found */ - if(!this->data_start) + if ( !data_start_ptr ) return 0; + + this->data_start = data_start_ptr - header; /* compute size of all frames */ if (INPUT_IS_SEEKABLE(this->input)) { @@ -228,29 +220,26 @@ static int open_yuv4mpeg2_file(demux_yuv4mpeg2_t *this) { static int demux_yuv4mpeg2_send_chunk(demux_plugin_t *this_gen) { demux_yuv4mpeg2_t *this = (demux_yuv4mpeg2_t *) this_gen; - buf_element_t *buf = NULL; - unsigned char preamble[Y4M_FRAME_SIGNATURE_SIZE]; - int bytes_remaining; - off_t current_file_pos; - int64_t pts; - /* validate that this is an actual frame boundary */ - if (this->input->read(this->input, preamble, Y4M_FRAME_SIGNATURE_SIZE) != - Y4M_FRAME_SIGNATURE_SIZE) { - this->status = DEMUX_FINISHED; - return this->status; - } - if (memcmp(preamble, Y4M_FRAME_SIGNATURE, Y4M_FRAME_SIGNATURE_SIZE) != - 0) { - this->status = DEMUX_FINISHED; - return this->status; + { + uint8_t preamble[Y4M_FRAME_SIGNATURE_SIZE]; + if (this->input->read(this->input, preamble, Y4M_FRAME_SIGNATURE_SIZE) != + Y4M_FRAME_SIGNATURE_SIZE) { + this->status = DEMUX_FINISHED; + return this->status; + } + if (memcmp(preamble, Y4M_FRAME_SIGNATURE, Y4M_FRAME_SIGNATURE_SIZE) != + 0) { + this->status = DEMUX_FINISHED; + return this->status; + } } /* load and dispatch the raw frame */ - bytes_remaining = this->frame_size; - current_file_pos = + int bytes_remaining = this->frame_size; + off_t current_file_pos = this->input->get_current_pos(this->input) - this->data_start; - pts = current_file_pos; + int64_t pts = current_file_pos; pts /= (this->frame_size + Y4M_FRAME_SIGNATURE_SIZE); pts *= this->frame_pts_inc; @@ -261,17 +250,14 @@ static int demux_yuv4mpeg2_send_chunk(demux_plugin_t *this_gen) { } while(bytes_remaining) { - buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); + buf_element_t *buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); buf->type = BUF_VIDEO_I420; if( this->data_size ) buf->extra_info->input_normpos = (int)((double) current_file_pos * 65535 / this->data_size); buf->extra_info->input_time = pts / 90; buf->pts = pts; - if (bytes_remaining > buf->max_size) - buf->size = buf->max_size; - else - buf->size = bytes_remaining; + buf->size = MIN(bytes_remaining, buf->max_size); bytes_remaining -= buf->size; if (this->input->read(this->input, buf->content, buf->size) != @@ -291,7 +277,6 @@ static int demux_yuv4mpeg2_send_chunk(demux_plugin_t *this_gen) { static void demux_yuv4mpeg2_send_headers(demux_plugin_t *this_gen) { demux_yuv4mpeg2_t *this = (demux_yuv4mpeg2_t *) this_gen; - buf_element_t *buf; this->video_fifo = this->stream->video_fifo; this->audio_fifo = this->stream->audio_fifo; @@ -310,7 +295,7 @@ static void demux_yuv4mpeg2_send_headers(demux_plugin_t *this_gen) { _x_demux_control_start(this->stream); /* send init info to decoders */ - buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); + buf_element_t *buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_STDHEADER|BUF_FLAG_FRAMERATE| BUF_FLAG_FRAME_END; buf->decoder_info[0] = this->frame_pts_inc; /* initial video step */ @@ -400,10 +385,7 @@ static int demux_yuv4mpeg2_get_optional_data(demux_plugin_t *this_gen, static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *stream, input_plugin_t *input) { - - demux_yuv4mpeg2_t *this; - - this = xine_xmalloc (sizeof (demux_yuv4mpeg2_t)); + demux_yuv4mpeg2_t *this = calloc(1, sizeof(demux_yuv4mpeg2_t)); this->stream = stream; this->input = input; @@ -422,10 +404,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str switch (stream->content_detection_method) { case METHOD_BY_EXTENSION: { - const char *extensions, *mrl; - - mrl = input->get_mrl (input); - extensions = class_gen->get_extensions (class_gen); + const char *const mrl = input->get_mrl (input); + const char *const extensions = class_gen->get_extensions (class_gen); if (!_x_demux_check_extension (mrl, extensions)) { free (this); @@ -477,7 +457,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_plugin (xine_t *xine, void *data) { demux_yuv4mpeg2_class_t *this; - this = xine_xmalloc (sizeof (demux_yuv4mpeg2_class_t)); + this = calloc(1, sizeof(demux_yuv4mpeg2_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/demux_yuv_frames.c b/src/demuxers/demux_yuv_frames.c index 774329c05..089207f58 100644 --- a/src/demuxers/demux_yuv_frames.c +++ b/src/demuxers/demux_yuv_frames.c @@ -70,8 +70,6 @@ static int demux_yuv_frames_get_status (demux_plugin_t *this_gen) { } static int switch_buf(demux_yuv_frames_t *this , buf_element_t *buf){ - int result = 0; - if (!buf) return 0; @@ -88,8 +86,7 @@ static int switch_buf(demux_yuv_frames_t *this , buf_element_t *buf){ case BUF_VIDEO_I420: case BUF_VIDEO_YUY2: this->video_fifo->put(this->video_fifo, buf); - result = 1; /* 1, we still should read audio */ - break; + return 1; /* 1, we still should read audio */ case BUF_AUDIO_LPCM_LE: if (!_x_stream_info_get(this->stream, XINE_STREAM_INFO_HAS_VIDEO)) _x_demux_control_newpts(this->stream, buf->pts, 0); @@ -100,7 +97,7 @@ static int switch_buf(demux_yuv_frames_t *this , buf_element_t *buf){ buf->free_buffer(buf); } - return result; + return 0; } static int demux_yuv_frames_send_chunk (demux_plugin_t *this_gen){ @@ -129,13 +126,19 @@ static void demux_yuv_frames_send_headers (demux_plugin_t *this_gen){ if(_x_stream_info_get(this->stream, XINE_STREAM_INFO_HAS_AUDIO)) { buf = this->input->read_block(this->input, this->audio_fifo, 0); - this->audio_fifo->put(this->audio_fifo, buf); + if (buf) + this->audio_fifo->put(this->audio_fifo, buf); + else + this->status = DEMUX_FINISHED; } if(_x_stream_info_get(this->stream, XINE_STREAM_INFO_HAS_VIDEO)) { buf = this->input->read_block(this->input, this->video_fifo, 0); - this->video_fifo->put(this->video_fifo, buf); + if (buf) + this->video_fifo->put(this->video_fifo, buf); + else + this->status = DEMUX_FINISHED; } this->status = DEMUX_OK; @@ -203,7 +206,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, * if we reach this point, the input has been accepted. */ - this = xine_xmalloc (sizeof (demux_yuv_frames_t)); + this = calloc(1, sizeof(demux_yuv_frames_t)); this->stream = stream; this->input = input; @@ -253,7 +256,7 @@ static void class_dispose (demux_class_t *this_gen) { static void *init_class (xine_t *xine, void *data) { demux_yuv_frames_class_t *this; - this = xine_xmalloc (sizeof (demux_yuv_frames_class_t)); + this = calloc(1, sizeof(demux_yuv_frames_class_t)); this->demux_class.open_plugin = open_plugin; this->demux_class.get_description = get_description; diff --git a/src/demuxers/ebml.c b/src/demuxers/ebml.c index ac44aecd7..4ce8a549d 100644 --- a/src/demuxers/ebml.c +++ b/src/demuxers/ebml.c @@ -318,6 +318,22 @@ int ebml_read_utf8 (ebml_parser_t *ebml, ebml_elem_t *elem, char *str) { return ebml_read_ascii (ebml, elem, str); } +char *ebml_alloc_read_ascii (ebml_parser_t *ebml, ebml_elem_t *elem) +{ + char *text; + if (elem->len >= 4096) + return NULL; + text = malloc(elem->len + 1); + if (text) + { + text[elem->len] = '\0'; + if (ebml_read_ascii (ebml, elem, text)) + return text; + free (text); + } + return NULL; +} + int ebml_read_date (ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *date) { return ebml_read_sint (ebml, elem, date); } @@ -423,10 +439,8 @@ int ebml_check_header(ebml_parser_t *ebml) { } case EBML_ID_DOCTYPE: { - char *text = malloc(elem.len + 1); - - text[elem.len] = '\0'; - if (!ebml_read_ascii (ebml, &elem, text)) + char *text = ebml_alloc_read_ascii (ebml, &elem); + if (!text) return 0; lprintf("doctype: %s\n", text); diff --git a/src/demuxers/ebml.h b/src/demuxers/ebml.h index 35078c502..9aa471c0b 100644 --- a/src/demuxers/ebml.h +++ b/src/demuxers/ebml.h @@ -65,7 +65,7 @@ typedef struct ebml_parser_s { } ebml_parser_t; -ebml_parser_t *new_ebml_parser (xine_t *xine, input_plugin_t *input); +ebml_parser_t *new_ebml_parser (xine_t *xine, input_plugin_t *input) XINE_MALLOC; void dispose_ebml_parser (ebml_parser_t *ebml); @@ -91,6 +91,8 @@ int ebml_read_ascii(ebml_parser_t *ebml, ebml_elem_t *elem, char *str); int ebml_read_utf8(ebml_parser_t *ebml, ebml_elem_t *elem, char *str); +char *ebml_alloc_read_ascii(ebml_parser_t *ebml, ebml_elem_t *elem); + int ebml_read_date(ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *date); int ebml_read_master(ebml_parser_t *ebml, ebml_elem_t *elem); diff --git a/src/demuxers/id3.c b/src/demuxers/id3.c index 6b36cc666..39055a852 100644 --- a/src/demuxers/id3.c +++ b/src/demuxers/id3.c @@ -241,7 +241,7 @@ static int id3v2_parse_header(input_plugin_t *input, uint8_t *mp3_frame_header, lprintf("tag: ID3 v2.%d.%d\n", mp3_frame_header[3], tag_header->revision); lprintf("flags: %d\n", tag_header->flags); - lprintf("size: %d\n", tag_header->size); + lprintf("size: %zu\n", tag_header->size); return 1; } else { return 0; @@ -261,7 +261,7 @@ static int id3v22_parse_frame_header(input_plugin_t *input, frame_header->size = _X_BE_24_synchsafe(&buf[3]); - lprintf("frame: %c%c%c: size: %d\n", buf[0], buf[1], buf[2], + lprintf("frame: %c%c%c: size: %zu\n", buf[0], buf[1], buf[2], frame_header->size); return 1; @@ -275,8 +275,11 @@ static int id3v22_interp_frame(input_plugin_t *input, id3v22_frame_header_t *frame_header) { char *buf; int enc; + const size_t bufsize = frame_header->size + 2; + if ( bufsize < 3 ) /* frames has to be _at least_ 1 byte */ + return 0; - buf = malloc(frame_header->size + 1); + buf = malloc(bufsize); if (buf == NULL) { lprintf("malloc error"); return 0; @@ -284,6 +287,7 @@ static int id3v22_interp_frame(input_plugin_t *input, if (input->read (input, buf, frame_header->size) == frame_header->size) { buf[frame_header->size] = 0; + buf[frame_header->size + 1] = 0; enc = buf[0]; if( enc >= ID3_ENCODING_COUNT ) enc = 0; @@ -337,9 +341,9 @@ static int id3v22_interp_frame(input_plugin_t *input, } -int id3v22_parse_tag(input_plugin_t *input, - xine_stream_t *stream, - int8_t *mp3_frame_header) { +static int id3v22_parse_tag(input_plugin_t *input, + xine_stream_t *stream, + int8_t *mp3_frame_header) { id3v2_header_t tag_header; id3v22_frame_header_t tag_frame_header; int pos = 0; @@ -349,21 +353,21 @@ int id3v22_parse_tag(input_plugin_t *input, if (tag_header.flags & ID3V22_ZERO_FLAG) { /* invalid flags */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid header flags (%02x)\n", tag_header.flags); + LOG_MODULE ": invalid header flags (%02x)\n", tag_header.flags); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } if (tag_header.flags & ID3V22_COMPRESS_FLAG) { /* compressed tag: not supported */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: compressed tags are not supported\n"); + LOG_MODULE ": compressed tags are not supported\n"); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } if (tag_header.flags & ID3V22_UNSYNCH_FLAG) { /* unsynchronized tag: not supported */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: unsynchronized tags are not supported\n"); + LOG_MODULE ": unsynchronized tags are not supported\n"); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } @@ -371,15 +375,15 @@ int id3v22_parse_tag(input_plugin_t *input, while ((pos + ID3V22_FRAME_HEADER_SIZE) <= tag_header.size) { if (id3v22_parse_frame_header(input, &tag_frame_header)) { pos += ID3V22_FRAME_HEADER_SIZE; - if (tag_frame_header.id && tag_frame_header.size) { + if (tag_frame_header.id) { if ((pos + tag_frame_header.size) <= tag_header.size) { if (!id3v22_interp_frame(input, stream, &tag_frame_header)) { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid frame content\n"); + LOG_MODULE ": invalid frame content\n"); } } else { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid frame header\n"); + LOG_MODULE ": invalid frame header\n"); input->seek (input, tag_header.size - pos, SEEK_CUR); return 1; } @@ -391,13 +395,13 @@ int id3v22_parse_tag(input_plugin_t *input, } } else { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: id3v2_parse_frame_header problem\n"); + LOG_MODULE ": id3v2_parse_frame_header problem\n"); return 0; } } return 1; } else { - xprintf(stream->xine, XINE_VERBOSITY_DEBUG, "id3: id3v2_parse_header problem\n"); + xprintf(stream->xine, XINE_VERBOSITY_DEBUG, LOG_MODULE ": id3v2_parse_header problem\n"); return 0; } } @@ -415,7 +419,7 @@ static int id3v23_parse_frame_header(input_plugin_t *input, frame_header->size = _X_BE_32(&buf[4]); frame_header->flags = _X_BE_16(buf + 8); - lprintf("frame: %c%c%c%c, size: %d, flags: %X\n", buf[0], buf[1], buf[2], buf[3], + lprintf("frame: %c%c%c%c, size: %zu, flags: %X\n", buf[0], buf[1], buf[2], buf[3], frame_header->size, frame_header->flags); return 1; @@ -451,11 +455,11 @@ static int id3v23_parse_frame_ext_header(input_plugin_t *input, } } else { - lprintf("invalid ext header size: %d\n", frame_ext_header->size); + lprintf("invalid ext header size: %zu\n", frame_ext_header->size); return 0; } - lprintf("ext header: size: %d, flags: %X, padding_size: %d, crc: %d\n", + lprintf("ext header: size: %zu, flags: %X, padding_size: %d, crc: %d\n", frame_ext_header->size, frame_ext_header->flags, frame_ext_header->padding_size, frame_ext_header->crc); return 1; @@ -469,8 +473,11 @@ static int id3v23_interp_frame(input_plugin_t *input, id3v23_frame_header_t *frame_header) { char *buf; int enc; - - buf = malloc(frame_header->size + 1); + const size_t bufsize = frame_header->size + 2; + if ( bufsize < 3 ) /* frames has to be _at least_ 1 byte */ + return 0; + + buf = malloc(bufsize); if (buf == NULL) { lprintf("malloc error"); return 0; @@ -478,6 +485,7 @@ static int id3v23_interp_frame(input_plugin_t *input, if (input->read (input, buf, frame_header->size) == frame_header->size) { buf[frame_header->size] = 0; + buf[frame_header->size + 1] = 0; enc = buf[0]; if( enc >= ID3_ENCODING_COUNT ) enc = 0; @@ -530,9 +538,9 @@ static int id3v23_interp_frame(input_plugin_t *input, } } -int id3v23_parse_tag(input_plugin_t *input, - xine_stream_t *stream, - int8_t *mp3_frame_header) { +static int id3v23_parse_tag(input_plugin_t *input, + xine_stream_t *stream, + int8_t *mp3_frame_header) { id3v2_header_t tag_header; id3v23_frame_header_t tag_frame_header; id3v23_frame_ext_header_t tag_frame_ext_header; @@ -543,14 +551,14 @@ int id3v23_parse_tag(input_plugin_t *input, if (tag_header.flags & ID3V23_ZERO_FLAG) { /* invalid flags */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid header flags (%02x)\n", tag_header.flags); + LOG_MODULE ": invalid header flags (%02x)\n", tag_header.flags); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } if (tag_header.flags & ID3V23_UNSYNCH_FLAG) { /* unsynchronized tag: not supported */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: unsynchronized tags are not supported\n"); + LOG_MODULE ": unsynchronized tags are not supported\n"); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } @@ -559,38 +567,40 @@ int id3v23_parse_tag(input_plugin_t *input, if (!id3v23_parse_frame_ext_header(input, &tag_frame_ext_header)) { return 0; } + pos += tag_frame_ext_header.size; } /* frame parsing */ while ((pos + ID3V23_FRAME_HEADER_SIZE) <= tag_header.size) { if (id3v23_parse_frame_header(input, &tag_frame_header)) { pos += ID3V23_FRAME_HEADER_SIZE; - if (tag_frame_header.id && tag_frame_header.size) { + if (tag_frame_header.id) { if ((pos + tag_frame_header.size) <= tag_header.size) { if (!id3v23_interp_frame(input, stream, &tag_frame_header)) { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid frame content\n"); + LOG_MODULE ": invalid frame content\n"); } } else { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid frame header\n"); + LOG_MODULE ": invalid frame header\n"); input->seek (input, tag_header.size - pos, SEEK_CUR); return 1; } pos += tag_frame_header.size; } else { /* end of frames, the rest is padding */ - input->seek (input, tag_header.size - pos, SEEK_CUR); + lprintf("skipping padding %zu bytes\n", tag_header.size - pos); + input->seek (input, tag_header.size - pos, SEEK_CUR); return 1; } } else { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: id3v2_parse_frame_header problem\n"); + LOG_MODULE ": id3v2_parse_frame_header problem\n"); return 0; } } return 1; } else { - xprintf(stream->xine, XINE_VERBOSITY_DEBUG, "id3v23: id3v2_parse_header problem\n"); + xprintf(stream->xine, XINE_VERBOSITY_DEBUG, LOG_MODULE ": id3v2_parse_header problem\n"); return 0; } } @@ -624,7 +634,7 @@ static int id3v24_parse_frame_header(input_plugin_t *input, frame_header->size = _X_BE_32_synchsafe(&buf[4]); frame_header->flags = _X_BE_16(&buf[8]); - lprintf("frame: %c%c%c%c, size: %d, flags: %X\n", buf[0], buf[1], buf[2], buf[3], + lprintf("frame: %c%c%c%c, size: %zu, flags: %X\n", buf[0], buf[1], buf[2], buf[3], frame_header->size, frame_header->flags); return 1; @@ -704,7 +714,7 @@ static int id3v24_parse_ext_header(input_plugin_t *input, } else { return 0; } - lprintf("ext header: size: %d, flags: %X, crc: %d, restrictions: %8X\n", + lprintf("ext header: size: %zu, flags: %X, crc: %d, restrictions: %8X\n", frame_ext_header->size, frame_ext_header->flags, frame_ext_header->crc, frame_ext_header->restrictions); return 1; @@ -718,8 +728,11 @@ static int id3v24_interp_frame(input_plugin_t *input, id3v24_frame_header_t *frame_header) { char *buf; int enc; - - buf = malloc(frame_header->size + 1); + const size_t bufsize = frame_header->size + 2; + if ( bufsize < 3 ) /* frames has to be _at least_ 1 byte */ + return 0; + + buf = malloc(bufsize); if (buf == NULL) { lprintf("malloc error"); return 0; @@ -727,6 +740,7 @@ static int id3v24_interp_frame(input_plugin_t *input, if (input->read (input, buf, frame_header->size) == frame_header->size) { buf[frame_header->size] = 0; + buf[frame_header->size + 1] = 0; enc = buf[0]; if( enc >= ID3_ENCODING_COUNT ) enc = 0; @@ -757,6 +771,7 @@ static int id3v24_interp_frame(input_plugin_t *input, break; case ( FOURCC_TAG('T', 'Y', 'E', 'R') ): + case ( FOURCC_TAG('T', 'D', 'R', 'C') ): _x_meta_info_set_generic(stream, XINE_META_INFO_YEAR, buf + 1, id3_encoding[enc]); break; @@ -781,9 +796,9 @@ static int id3v24_interp_frame(input_plugin_t *input, } } -int id3v24_parse_tag(input_plugin_t *input, - xine_stream_t *stream, - int8_t *mp3_frame_header) { +static int id3v24_parse_tag(input_plugin_t *input, + xine_stream_t *stream, + int8_t *mp3_frame_header) { id3v2_header_t tag_header; id3v24_frame_header_t tag_frame_header; id3v24_frame_ext_header_t tag_frame_ext_header; @@ -794,7 +809,7 @@ int id3v24_parse_tag(input_plugin_t *input, if (tag_header.flags & ID3V24_ZERO_FLAG) { /* invalid flags */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid header flags (%02x)\n", tag_header.flags); + LOG_MODULE ": invalid header flags (%02x)\n", tag_header.flags); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } @@ -809,20 +824,21 @@ int id3v24_parse_tag(input_plugin_t *input, if (!id3v24_parse_ext_header(input, &tag_frame_ext_header)) { return 0; } + pos += tag_frame_ext_header.size; } /* frame parsing */ while ((pos + ID3V24_FRAME_HEADER_SIZE) <= tag_header.size) { if (id3v24_parse_frame_header(input, &tag_frame_header)) { pos += ID3V24_FRAME_HEADER_SIZE; - if (tag_frame_header.id && tag_frame_header.size) { + if (tag_frame_header.id) { if ((pos + tag_frame_header.size) <= tag_header.size) { if (!id3v24_interp_frame(input, stream, &tag_frame_header)) { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid frame content\n"); + LOG_MODULE ": invalid frame content\n"); } } else { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid frame header\n"); + LOG_MODULE ": invalid frame header\n"); input->seek (input, tag_header.size - pos, SEEK_CUR); return 1; } @@ -834,7 +850,7 @@ int id3v24_parse_tag(input_plugin_t *input, } } else { xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: id3v2_parse_frame_header problem\n"); + LOG_MODULE ": id3v2_parse_frame_header problem\n"); return 0; } } @@ -844,7 +860,7 @@ int id3v24_parse_tag(input_plugin_t *input, } return 1; } else { - xprintf(stream->xine, XINE_VERBOSITY_DEBUG, "id3v23: id3v2_parse_header problem\n"); + xprintf(stream->xine, XINE_VERBOSITY_DEBUG, LOG_MODULE ": id3v2_parse_header problem\n"); return 0; } } @@ -858,22 +874,22 @@ int id3v2_parse_tag(input_plugin_t *input, switch(mp3_frame_header[3]) { case 2: - xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.2 tag\n"); + xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2.2 tag\n"); result = id3v22_parse_tag(input, stream, mp3_frame_header); break; case 3: - xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.3 tag\n"); + xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2.3 tag\n"); result = id3v23_parse_tag(input, stream, mp3_frame_header); break; case 4: - xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.4 tag\n"); + xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2.4 tag\n"); result = id3v24_parse_tag(input, stream, mp3_frame_header); break; default: - xprintf(stream->xine, XINE_VERBOSITY_LOG, "Unknown ID3v2 version: 0x%02x.\n", mp3_frame_header[3]); + xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": Unknown ID3v2 version: 0x%02x.\n", mp3_frame_header[3]); } return result; diff --git a/src/demuxers/id3.h b/src/demuxers/id3.h index b4ea4b6be..41babe2b4 100644 --- a/src/demuxers/id3.h +++ b/src/demuxers/id3.h @@ -103,22 +103,22 @@ typedef struct { uint32_t id; uint8_t revision; uint8_t flags; - uint32_t size; + size_t size; } id3v2_header_t; typedef struct { uint32_t id; - uint32_t size; + size_t size; } id3v22_frame_header_t; typedef struct { uint32_t id; - uint32_t size; + size_t size; uint16_t flags; } id3v23_frame_header_t; typedef struct { - uint32_t size; + size_t size; uint16_t flags; uint32_t padding_size; uint32_t crc; @@ -128,12 +128,12 @@ typedef id3v2_header_t id3v24_footer_t; typedef struct { uint32_t id; - uint32_t size; + size_t size; uint16_t flags; } id3v24_frame_header_t; typedef struct { - uint32_t size; + size_t size; uint8_t flags; uint32_t crc; uint8_t restrictions; @@ -151,19 +151,16 @@ typedef struct { int id3v1_parse_tag (input_plugin_t *input, xine_stream_t *stream); -int id3v22_parse_tag(input_plugin_t *input, - xine_stream_t *stream, - int8_t *mp3_frame_header); - -int id3v23_parse_tag(input_plugin_t *input, - xine_stream_t *stream, - int8_t *mp3_frame_header); - -int id3v24_parse_tag(input_plugin_t *input, - xine_stream_t *stream, - int8_t *mp3_frame_header); - -/* Generic function that switch between the three above */ +/** + * @brief Generic function for ID3v2 tags parsing. + * @param input Pointer to the input plugin used by the demuxer, used + * to access the tag's data. + * @param stream Pointer to the xine stream currently being read. + * @param mp3_frame_header Header of the MP3 frame carrying the tag. + * + * @note This function will take care of calling the proper function for + * parsing ID3v2.2, ID3v2.3 or ID3v2.4 tags. + */ int id3v2_parse_tag(input_plugin_t *input, xine_stream_t *stream, int8_t *mp3_frame_header); diff --git a/src/demuxers/iff.h b/src/demuxers/iff.h index 94830f69c..8ac24a697 100644 --- a/src/demuxers/iff.h +++ b/src/demuxers/iff.h @@ -27,8 +27,8 @@ #define IFFP_IFF_H #define IFF_OKAY 0L -#define CLIENT_ERROR 1L -#define NOFILE 5L +#define IFF_CLIENT_ERROR 1L +#define IFF_NOFILE 5L #define FOURCC_CHUNK BE_FOURCC #define IFF_16SV_CHUNK FOURCC_CHUNK('1', '6', 'S', 'V') diff --git a/src/demuxers/matroska.h b/src/demuxers/matroska.h index 6806c207d..df6e8ad1b 100644 --- a/src/demuxers/matroska.h +++ b/src/demuxers/matroska.h @@ -62,6 +62,7 @@ #define MATROSKA_ID_CL_BLOCKGROUP 0xA0 #define MATROSKA_ID_CL_BLOCK 0xA1 #define MATROSKA_ID_CL_BLOCKVIRTUAL 0xA2 +#define MATROSKA_ID_CL_SIMPLEBLOCK 0xA3 #define MATROSKA_ID_CL_BLOCKADDITIONS 0x75A1 #define MATROSKA_ID_CL_BLOCKMORE 0xA6 #define MATROSKA_ID_CL_BLOCKADDID 0xEE @@ -235,7 +236,7 @@ struct matroska_track_s { void (*handle_content) (demux_plugin_t *this_gen, matroska_track_t *track, int decoder_flags, - uint8_t *data, int data_len, + uint8_t *data, size_t data_len, int64_t data_pts, int data_duration, int input_normpos, int input_time); }; diff --git a/src/demuxers/real_common.h b/src/demuxers/real_common.h new file mode 100644 index 000000000..4945a65ff --- /dev/null +++ b/src/demuxers/real_common.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2008 the xine project + * + * This file is part of xine, a free video player. + * + * xine 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. + * + * xine 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, USA + */ + +static inline void demux_real_sipro_swap (char buffer[], int bs) +{ + /* bs = nybbles per subpacket */ + static const unsigned char sipr_swaps[38][2] = { + {0, 63}, {1, 22}, {2, 44}, {3, 90}, {5, 81}, {7, 31}, {8, 86}, {9, 58}, + {10, 36}, {12, 68}, {13, 39}, {14, 73}, {15, 53}, {16, 69}, {17, 57}, + {19, 88}, {20, 34}, {21, 71}, {24, 46}, {25, 94}, {26, 54}, {28, 75}, + {29, 50}, {32, 70}, {33, 92}, {35, 74}, {38, 85}, {40, 56}, {42, 87}, + {43, 65}, {45, 59}, {48, 79}, {49, 93}, {51, 89}, {55, 95}, {61, 76}, + {67, 83}, {77, 80} + }; + int n; + + for (n = 0; n < 38; ++n) + { + int j; + int i = bs * sipr_swaps[n][0]; + int o = bs * sipr_swaps[n][1]; + /* swap nibbles of block 'i' with 'o' TODO: optimize */ + for (j = 0; j < bs; ++j) + { + int x = (i & 1) ? (buffer[i >> 1] >> 4) : (buffer[i >> 1] & 0x0F); + int y = (o & 1) ? (buffer[o >> 1] >> 4) : (buffer[o >> 1] & 0x0F); + if (o & 1) + buffer[o >> 1] = (buffer[o >> 1] & 0x0F) | (x << 4); + else + buffer[o >> 1] = (buffer[o >> 1] & 0xF0) | x; + if (i & 1) + buffer[i >> 1] = (buffer[i >> 1] & 0x0F) | (y << 4); + else + buffer[i >> 1] = (buffer[i >> 1] & 0xF0) | y; + ++i; + ++o; + } + } +} diff --git a/src/dxr3/Makefile.am b/src/dxr3/Makefile.am index f1a61ce12..3c2cbafbc 100644 --- a/src/dxr3/Makefile.am +++ b/src/dxr3/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CFLAGS = $(X_CFLAGS) $(LIBFAME_CFLAGS) diff --git a/src/dxr3/dxr3_decode_spu.c b/src/dxr3/dxr3_decode_spu.c index 139939d8e..82c8f8da0 100644 --- a/src/dxr3/dxr3_decode_spu.c +++ b/src/dxr3/dxr3_decode_spu.c @@ -17,6 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* dxr3 spu decoder plugin. * Accepts the spu data from xine and sends it directly to the @@ -198,7 +202,7 @@ static void *dxr3_spudec_init_plugin(xine_t *xine, void* data) { dxr3_spudec_class_t *this; - this = (dxr3_spudec_class_t *)xine_xmalloc(sizeof(dxr3_spudec_class_t)); + this = calloc(1, sizeof(dxr3_spudec_class_t)); if (!this) return NULL; this->spu_decoder_class.open_plugin = dxr3_spudec_open_plugin; @@ -221,7 +225,7 @@ static spu_decoder_t *dxr3_spudec_open_plugin(spu_decoder_class_t *class_gen, xi if (class->instance) return NULL; if (!dxr3_present(stream)) return NULL; - this = (dxr3_spudec_t *)xine_xmalloc(sizeof(dxr3_spudec_t)); + this = calloc(1, sizeof(dxr3_spudec_t)); if (!this) return NULL; this->spu_decoder.decode_data = dxr3_spudec_decode_data; @@ -374,7 +378,7 @@ static void dxr3_spudec_decode_data(spu_decoder_t *this_gen, buf_element_t *buf) printf("dxr3_decode_spu: DEBUG: allocating new PCI node for hli_s_ptm %d\n", pci.hli.hl_gi.hli_s_ptm); /* append PCI at the end of the list */ while (node->next) node = node->next; - node->next = (pci_node_t *)xine_xmalloc(sizeof(pci_node_t)); + node->next = calloc(1, sizeof(pci_node_t)); node->next->vpts = this->stream->metronom->got_spu_packet(this->stream->metronom, pci.hli.hl_gi.hli_s_ptm); node->next->next = NULL; xine_fast_memcpy(&node->next->pci, &pci, sizeof(pci_t)); diff --git a/src/dxr3/dxr3_decode_video.c b/src/dxr3/dxr3_decode_video.c index 3f1c273ff..e68ba2b5c 100644 --- a/src/dxr3/dxr3_decode_video.c +++ b/src/dxr3/dxr3_decode_video.c @@ -17,6 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* dxr3 video decoder plugin. * Accepts the video data from xine and sends it directly to the @@ -193,7 +197,7 @@ static void *dxr3_init_plugin(xine_t *xine, void *data) { dxr3_decoder_class_t *this; - this = (dxr3_decoder_class_t *)xine_xmalloc(sizeof (dxr3_decoder_class_t)); + this = calloc(1, sizeof (dxr3_decoder_class_t)); if (!this) return NULL; this->video_decoder_class.open_plugin = dxr3_open_plugin; @@ -220,7 +224,7 @@ static video_decoder_t *dxr3_open_plugin(video_decoder_class_t *class_gen, xine_ if (class->instance) return NULL; if (!dxr3_present(stream)) return NULL; - this = (dxr3_decoder_t *)xine_xmalloc(sizeof (dxr3_decoder_t)); + this = calloc(1, sizeof (dxr3_decoder_t)); if (!this) return NULL; cfg = stream->xine->config; diff --git a/src/dxr3/dxr3_mpeg_encoders.c b/src/dxr3/dxr3_mpeg_encoders.c index 0c59b0b93..0077a465b 100644 --- a/src/dxr3/dxr3_mpeg_encoders.c +++ b/src/dxr3/dxr3_mpeg_encoders.c @@ -124,7 +124,7 @@ int dxr3_rte_init(dxr3_driver_t *drv) return 0; } - this = xine_xmalloc(sizeof(rte_data_t)); + this = calloc(1, sizeof(rte_data_t)); if (!this) return 0; this->encoder_data.type = ENC_RTE; @@ -316,7 +316,7 @@ int dxr3_fame_init(dxr3_driver_t *drv) { fame_data_t *this; - this = xine_xmalloc(sizeof(fame_data_t)); + this = calloc(1, sizeof(fame_data_t)); if (!this) return 0; this->encoder_data.type = ENC_FAME; diff --git a/src/dxr3/dxr3_scr.c b/src/dxr3/dxr3_scr.c index 8fb049656..c95ab00a7 100644 --- a/src/dxr3/dxr3_scr.c +++ b/src/dxr3/dxr3_scr.c @@ -70,7 +70,7 @@ dxr3_scr_t *dxr3_scr_init(xine_t *xine) int devnum; char tmpstr[128]; - this = (dxr3_scr_t *)xine_xmalloc(sizeof(dxr3_scr_t)); + this = calloc(1, sizeof(dxr3_scr_t)); devnum = xine->config->register_num(xine->config, CONF_KEY, 0, CONF_NAME, CONF_HELP, 10, NULL, NULL); diff --git a/src/dxr3/video_out_dxr3.c b/src/dxr3/video_out_dxr3.c index c51354157..189824183 100644 --- a/src/dxr3/video_out_dxr3.c +++ b/src/dxr3/video_out_dxr3.c @@ -21,7 +21,7 @@ /* mpeg1 encoding video out plugin for the dxr3. * * modifications to the original dxr3 video out plugin by - * Mike Lampard <mike at web2u.com.au> + * Mike Lampard <mlampard at users.sourceforge.net> * this first standalone version by * Harm van der Heijden <hrm at users.sourceforge.net> */ @@ -169,7 +169,7 @@ static dxr3_driver_class_t *dxr3_vo_init_plugin(xine_t *xine, void *visual_gen) { dxr3_driver_class_t *this; - this = (dxr3_driver_class_t *)xine_xmalloc(sizeof(dxr3_driver_class_t)); + this = calloc(1, sizeof(dxr3_driver_class_t)); if (!this) return NULL; this->devnum = xine->config->register_num(xine->config, @@ -232,7 +232,7 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v if (class->instance) return NULL; - this = (dxr3_driver_t *)xine_xmalloc(sizeof(dxr3_driver_t)); + this = calloc(1, sizeof(dxr3_driver_t)); if (!this) return NULL; this->vo_driver.get_capabilities = dxr3_get_capabilities; @@ -536,7 +536,7 @@ static vo_frame_t *dxr3_alloc_frame(vo_driver_t *this_gen) dxr3_frame_t *frame; dxr3_driver_t *this = (dxr3_driver_t *)this_gen; - frame = (dxr3_frame_t *)xine_xmalloc(sizeof(dxr3_frame_t)); + frame = calloc(1, sizeof(dxr3_frame_t)); pthread_mutex_init(&frame->vo_frame.mutex, NULL); @@ -1334,7 +1334,7 @@ static int lookup_parameter(struct lut_entry *lut, char *name, static int dxr3_overlay_read_state(dxr3_overlay_t *this) { char *loc; - char fname[256], tmp[128], line[256]; + char *fname, line[256]; FILE *fp; struct lut_entry lut[] = { {"xoffset", TYPE_INT, &this->xoffset}, @@ -1359,18 +1359,16 @@ static int dxr3_overlay_read_state(dxr3_overlay_t *this) * (used by .overlay/res file) */ setlocale(LC_NUMERIC, "C"); - snprintf(tmp, sizeof(tmp), "/res_%dx%dx%d", + asprintf(&fname, "%s/.overlay/res_%dx%dx%d", getenv("HOME"), this->screen_xres, this->screen_yres, this->screen_depth); - strncpy(fname, getenv("HOME"), sizeof(fname) - strlen(tmp) - sizeof("/.overlay")); - fname[sizeof(fname) - strlen(tmp) - sizeof("/.overlay")] = '\0'; - strcat(fname, "/.overlay"); - strcat(fname, tmp); llprintf(LOG_OVR, "attempting to open %s\n", fname); if (!(fp = fopen(fname, "r"))) { xprintf(this->xine, XINE_VERBOSITY_LOG, _("video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n")); + free(fname); return -1; } + free(fname); while (!feof(fp)) { if (!fgets(line, 256, fp)) diff --git a/src/input/Makefile.am b/src/input/Makefile.am index 81dd62eca..8e9c9385d 100644 --- a/src/input/Makefile.am +++ b/src/input/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common EXTRA_DIST = input_dvd.c input_vcd.c input_gnome_vfs.c input_rtp.c diff --git a/src/input/http_helper.c b/src/input/http_helper.c index 4883763b0..279d3ff05 100644 --- a/src/input/http_helper.c +++ b/src/input/http_helper.c @@ -240,8 +240,7 @@ char *_x_canonicalise_url (const char *base, const char *url) { ++cut; } base_length = cut ? (size_t)(cut - base) : strlen (base); - ret = malloc (base_length + strlen (url) + 1); - sprintf (ret, "%.*s%s", (int)base_length, base, url); + asprintf (&ret, "%.*s%s", (int)base_length, base, url); return ret; } diff --git a/src/input/input_cdda.c b/src/input/input_cdda.c index fd4dd1fa9..d982909eb 100644 --- a/src/input/input_cdda.c +++ b/src/input/input_cdda.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2005 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -44,6 +44,7 @@ # include <sys/ioctl.h> #else /* for WIN32 */ +# include <windef.h> # include <winioctl.h> #endif @@ -70,6 +71,8 @@ #define DEFAULT_CDDA_DEVICE "/vol/dev/aliases/cdrom0" #elif defined(WIN32) #define DEFAULT_CDDA_DEVICE "d:\\" +#elif defined(__OpenBSD__) +#define DEFAULT_CDDA_DEVICE "/dev/rcd0c" #else #define DEFAULT_CDDA_DEVICE "/dev/cdrom" #endif @@ -135,7 +138,7 @@ typedef struct { char *disc_category; int fd; - unsigned long disc_id; + uint32_t disc_id; int disc_length; trackinfo_t *track; @@ -370,7 +373,7 @@ static cdrom_toc * init_cdrom_toc(void) { cdrom_toc *toc; - toc = (cdrom_toc *) xine_xmalloc(sizeof (cdrom_toc)); + toc = calloc(1, sizeof (cdrom_toc)); toc->first_track = toc->last_track = toc->total_tracks = 0; toc->toc_entries = NULL; @@ -418,10 +421,9 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { toc->total_tracks = toc->last_track - toc->first_track + 1; /* allocate space for the toc entries */ - toc->toc_entries = - (cdrom_toc_entry *)malloc(toc->total_tracks * sizeof(cdrom_toc_entry)); + toc->toc_entries = calloc(toc->total_tracks, sizeof(cdrom_toc_entry)); if (!toc->toc_entries) { - perror("malloc"); + perror("calloc"); return -1; } @@ -529,10 +531,9 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { toc->total_tracks = toc->last_track - toc->first_track + 1; /* allocate space for the toc entries */ - toc->toc_entries = - (cdrom_toc_entry *)malloc(toc->total_tracks * sizeof(cdrom_toc_entry)); + toc->toc_entries = calloc(toc->total_tracks, sizeof(cdrom_toc_entry)); if (!toc->toc_entries) { - perror("malloc"); + perror("calloc"); return -1; } @@ -612,7 +613,7 @@ static int read_cdrom_frames(cdda_input_plugin_t *this_gen, int frame, int num_f return 0; } -#elif defined(__FreeBSD_kernel__) || defined(__NetBSD__) +#elif defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) #include <sys/cdio.h> @@ -625,7 +626,7 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { struct ioc_toc_header tochdr; #if defined(__FreeBSD_kernel__) struct ioc_read_toc_single_entry tocentry; -#elif defined(__NetBSD__) +#elif defined(__NetBSD__) || defined(__OpenBSD__) struct ioc_read_toc_entry tocentry; struct cd_toc_entry data; #endif @@ -642,10 +643,9 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { toc->total_tracks = toc->last_track - toc->first_track + 1; /* allocate space for the toc entries */ - toc->toc_entries = - (cdrom_toc_entry *)malloc(toc->total_tracks * sizeof(cdrom_toc_entry)); + toc->toc_entries = calloc(toc->total_tracks, sizeof(cdrom_toc_entry)); if (!toc->toc_entries) { - perror("malloc"); + perror("calloc"); return -1; } @@ -661,7 +661,7 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { perror("CDIOREADTOCENTRY"); return -1; } -#elif defined(__NetBSD__) +#elif defined(__NetBSD__) || defined(__OpenBSD__) memset(&data, 0, sizeof(data)); tocentry.data_len = sizeof(data); tocentry.data = &data; @@ -682,7 +682,7 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { (tocentry.entry.addr.msf.minute * CD_SECONDS_PER_MINUTE * CD_FRAMES_PER_SECOND) + (tocentry.entry.addr.msf.second * CD_FRAMES_PER_SECOND) + tocentry.entry.addr.msf.frame; -#elif defined(__NetBSD__) +#elif defined(__NetBSD__) || defined(__OpenBSD__) toc->toc_entries[i-1].track_mode = (tocentry.data->control & 0x04) ? 1 : 0; toc->toc_entries[i-1].first_frame_minute = tocentry.data->addr.msf.minute; toc->toc_entries[i-1].first_frame_second = tocentry.data->addr.msf.second; @@ -704,7 +704,7 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { perror("CDIOREADTOCENTRY"); return -1; } -#elif defined(__NetBSD__) +#elif defined(__NetBSD__) || defined(__OpenBSD__) memset(&data, 0, sizeof(data)); tocentry.data_len = sizeof(data); tocentry.data = &data; @@ -725,7 +725,7 @@ static int read_cdrom_toc(int fd, cdrom_toc *toc) { (tocentry.entry.addr.msf.minute * CD_SECONDS_PER_MINUTE * CD_FRAMES_PER_SECOND) + (tocentry.entry.addr.msf.second * CD_FRAMES_PER_SECOND) + tocentry.entry.addr.msf.frame; -#elif defined(__NetBSD__) +#elif defined(__NetBSD__) || defined(__OpenBSD__) toc->leadout_track.track_mode = (tocentry.data->control & 0x04) ? 1 : 0; toc->leadout_track.first_frame_minute = tocentry.data->addr.msf.minute; toc->leadout_track.first_frame_second = tocentry.data->addr.msf.second; @@ -763,7 +763,7 @@ static int read_cdrom_frames(cdda_input_plugin_t *this_gen, int frame, int num_f perror("CDIOCREADAUDIO"); return -1; } -#elif defined(__NetBSD__) +#elif defined(__NetBSD__) || defined(__OpenBSD__) scsireq_t req; int nblocks = 1; @@ -835,10 +835,9 @@ static int read_cdrom_toc(cdda_input_plugin_t *this_gen, cdrom_toc *toc) { /* allocate space for the toc entries */ - toc->toc_entries = - (cdrom_toc_entry *)malloc(toc->total_tracks * sizeof(cdrom_toc_entry)); + toc->toc_entries = calloc(toc->total_tracks, sizeof(cdrom_toc_entry)); if (!toc->toc_entries) { - perror("malloc"); + perror("calloc"); return -1; } @@ -1036,13 +1035,13 @@ network_command( xine_stream_t *stream, int socket, char *data_buf, char *msg, . #ifndef WIN32 -static int network_connect(xine_stream_t *stream, char *url ) +static int network_connect(xine_stream_t *stream, const char *got_url ) { - char *host; + char *host, *url; int port; int fd; - url = strdup(url); + url = strdup(got_url); parse_url(url, &host, &port); if( !host || !strlen(host) || !port ) @@ -1081,10 +1080,9 @@ static int network_read_cdrom_toc(xine_stream_t *stream, int fd, cdrom_toc *toc) toc->total_tracks = toc->last_track - toc->first_track + 1; /* allocate space for the toc entries */ - toc->toc_entries = - (cdrom_toc_entry *)malloc(toc->total_tracks * sizeof(cdrom_toc_entry)); + toc->toc_entries = calloc(toc->total_tracks, sizeof(cdrom_toc_entry)); if (!toc->toc_entries) { - perror("malloc"); + perror("calloc"); return -1; } @@ -1312,20 +1310,17 @@ static void _cdda_mkdir_recursive_safe(xine_t *xine, char *path) { if(p && strlen(p)) { #ifdef WIN32 - if (*buf2 != '\0') { + if (*buf2 != '\0') { #endif - - int size = strlen(buf2); - snprintf(buf2 + size, sizeof(buf2) - size, "/%s", p); - + size_t size = strlen(buf2); + snprintf(buf2 + size, sizeof(buf2) - size, "/%s", p); #ifdef WIN32 - } - else { - snprintf(buf2, sizeof(buf2), "%s", p); - } - + } + else { + snprintf(buf2, sizeof(buf2), "%s", p); + } #endif /* WIN32 */ - + _cdda_mkdir_safe(xine, buf2); } } @@ -1443,13 +1438,13 @@ static int _cdda_cddb_handle_code(char *buf) { */ static int _cdda_load_cached_cddb_infos(cdda_input_plugin_t *this) { char cdir[XINE_PATH_MAX + XINE_NAME_MAX + 1]; + size_t cdir_size = 0; DIR *dir; if(this == NULL) return 0; - memset(&cdir, 0, sizeof(cdir)); - snprintf(cdir, sizeof(cdir), "%s", this->cddb.cache_dir); + cdir_size = snprintf(cdir, sizeof(cdir), "%s", this->cddb.cache_dir); if((dir = opendir(cdir)) != NULL) { struct dirent *pdir; @@ -1457,14 +1452,12 @@ static int _cdda_load_cached_cddb_infos(cdda_input_plugin_t *this) { while((pdir = readdir(dir)) != NULL) { char discid[9]; - memset(&discid, 0, sizeof(discid)); - snprintf(discid, sizeof(discid), "%08lx", this->cddb.disc_id); + snprintf(discid, sizeof(discid), "%08" PRIx32, this->cddb.disc_id); if(!strcasecmp(pdir->d_name, discid)) { FILE *fd; - int size = strlen(cdir); - snprintf(cdir + size, sizeof(cdir) - size, "/%s", discid); + cdir_size += snprintf(cdir + cdir_size, sizeof(cdir) - cdir_size, "/%s", discid); if((fd = fopen(cdir, "r")) == NULL) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "input_cdda: fopen(%s) failed: %s.\n", cdir, strerror(errno)); @@ -1484,7 +1477,7 @@ static int _cdda_load_cached_cddb_infos(cdda_input_plugin_t *this) { if (sscanf(buffer, "DTITLE=%s", &buf[0]) == 1) { char *pt, *artist, *title; - pt = strrchr(buffer, '='); + pt = strchr(buffer, '='); if (pt) { pt++; @@ -1524,7 +1517,7 @@ static int _cdda_load_cached_cddb_infos(cdda_input_plugin_t *this) { else if (sscanf(buffer, "TTITLE%d=%s", &tnum, &buf[0]) == 2) { char *pt; - pt = strrchr(buffer, '='); + pt = strchr(buffer, '='); if (pt) pt++; if (this->cddb.track[tnum].title == NULL) @@ -1542,14 +1535,9 @@ static int _cdda_load_cached_cddb_infos(cdda_input_plugin_t *this) { int nyear; y = strstr(buffer, "YEAR:"); - if(y) { - if (sscanf(y+5, "%4d", &nyear) == 1) { - char year[5]; - - snprintf(year, 5, "%d", nyear); - if (this->cddb.disc_year == NULL) - this->cddb.disc_year = strdup(year); - } + if (y && this->cddb.disc_year == NULL) { + if (sscanf(y+5, "%4d", &nyear) == 1) + asprintf(&this->cddb.disc_year, "%d", nyear); } } } @@ -1563,7 +1551,7 @@ static int _cdda_load_cached_cddb_infos(cdda_input_plugin_t *this) { } } xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "input_cdda: cached entry for disc ID %08lx not found.\n", this->cddb.disc_id); + "input_cdda: cached entry for disc ID %08" PRIx32 " not found.\n", this->cddb.disc_id); closedir(dir); } @@ -1587,7 +1575,7 @@ static void _cdda_save_cached_cddb_infos(cdda_input_plugin_t *this, char *fileco _cdda_mkdir_recursive_safe(this->stream->xine, cfile); - snprintf(cfile, sizeof(cfile), "%s/%08lx", this->cddb.cache_dir, this->cddb.disc_id); + snprintf(cfile, sizeof(cfile), "%s/%08" PRIx32 , this->cddb.cache_dir, this->cddb.disc_id); if((fd = fopen(cfile, "w")) == NULL) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, @@ -1726,12 +1714,11 @@ static int _cdda_cddb_retrieve(cdda_input_plugin_t *this) { /* Send query command */ memset(&buffer, 0, sizeof(buffer)); - sprintf(buffer, "cddb query %08lx %d ", this->cddb.disc_id, this->cddb.num_tracks); + size_t size = sprintf(buffer, "cddb query %08" PRIx32 " %d ", this->cddb.disc_id, this->cddb.num_tracks); for (i = 0; i < this->cddb.num_tracks; i++) { - int size = strlen(buffer); - snprintf(buffer + size, sizeof(buffer) - size, "%d ", this->cddb.track[i].start); + size += snprintf(buffer + size, sizeof(buffer) - size, "%d ", this->cddb.track[i].start); } - snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "%d\n", this->cddb.disc_length); + snprintf(buffer + strlen(buffer), sizeof(buffer) - size, "%d\n", this->cddb.disc_length); if ((err = _cdda_cddb_send_command(this, buffer)) <= 0) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "input_cdda: error while sending cddb query command.\n"); @@ -1818,7 +1805,7 @@ static int _cdda_cddb_retrieve(cdda_input_plugin_t *this) { while (strcmp(buffer, ".")) { char buf[2048]; int tnum; - int bufsize = strlen(buffercache); + size_t bufsize = strlen(buffercache); memset(&buffer, 0, sizeof(buffer)); _cdda_cddb_socket_read(this, buffer, sizeof(buffer) - 1); @@ -1886,14 +1873,9 @@ static int _cdda_cddb_retrieve(cdda_input_plugin_t *this) { int nyear; y = strstr(buffer, "YEAR:"); - if (y) { - if (sscanf(y+5, "%4d", &nyear) == 1) { - char year[5]; - - snprintf(year, 5, "%d", nyear); - if (this->cddb.disc_year == NULL) - this->cddb.disc_year = strdup(year); - } + if (y && this->cddb.disc_year == NULL) { + if (sscanf(y+5, "%4d", &nyear) == 1) + asprintf(&this->cddb.disc_year, "%d", nyear); } } } @@ -1922,7 +1904,7 @@ static unsigned int _cdda_cddb_sum(int n) { } return ret; } -static unsigned long _cdda_calc_cddb_id(cdda_input_plugin_t *this) { +static uint32_t _cdda_calc_cddb_id(cdda_input_plugin_t *this) { int i, tsum = 0; if(this == NULL || (this->cddb.num_tracks <= 0)) @@ -1979,7 +1961,7 @@ static void _cdda_cdindex(cdda_input_plugin_t *this, cdrom_toc *toc) { /* * return cbbd disc id. */ -static unsigned long _cdda_get_cddb_id(cdda_input_plugin_t *this) { +static uint32_t _cdda_get_cddb_id(cdda_input_plugin_t *this) { if(this == NULL || (this->cddb.num_tracks <= 0)) return 0; @@ -2024,7 +2006,7 @@ static void _cdda_free_cddb_info(cdda_input_plugin_t *this) { */ static int cdda_open(cdda_input_plugin_t *this_gen, - char *cdda_device, cdrom_toc *toc, int *fdd) { + const char *cdda_device, cdrom_toc *toc, int *fdd) { #ifndef WIN32 int fd = -1; @@ -2104,9 +2086,9 @@ static int cdda_open(cdda_input_plugin_t *this_gen, hASPI = LoadLibrary( "wnaspi32.dll" ); if( hASPI != NULL ) { - (FARPROC) lpGetSupport = GetProcAddress( hASPI, + lpGetSupport = GetProcAddress( hASPI, "GetASPI32SupportInfo" ); - (FARPROC) lpSendCommand = GetProcAddress( hASPI, + lpSendCommand = GetProcAddress( hASPI, "SendASPI32Command" ); } @@ -2458,7 +2440,7 @@ static int cdda_plugin_open (input_plugin_t *this_gen ) { if(this->cddb.num_tracks) { int t; - this->cddb.track = (trackinfo_t *) xine_xmalloc(sizeof(trackinfo_t) * this->cddb.num_tracks); + this->cddb.track = (trackinfo_t *) calloc(this->cddb.num_tracks, sizeof(trackinfo_t)); for(t = 0; t < this->cddb.num_tracks; t++) { int length = (toc->toc_entries[t].first_frame_minute * CD_SECONDS_PER_MINUTE + @@ -2485,15 +2467,31 @@ static int cdda_plugin_open (input_plugin_t *this_gen ) { } if(this->cddb.track[this->track].title) { - lprintf("Track %d Title: %s\n", this->track+1, this->cddb.track[this->track].title); - - _x_meta_info_set_utf8(this->stream, XINE_META_INFO_TITLE, this->cddb.track[this->track].title); - } + /* Check for track 'titles' of the form <artist> / <title>. */ + char *pt; + pt = strstr(this->cddb.track[this->track].title, " / "); + if (pt != NULL) { + char *track_artist; + track_artist = strdup(this->cddb.track[this->track].title); + track_artist[pt - this->cddb.track[this->track].title] = 0; + lprintf("Track %d Artist: %s\n", this->track+1, track_artist); + + _x_meta_info_set_utf8(this->stream, XINE_META_INFO_ARTIST, track_artist); + free(track_artist); + pt += 3; + } + else { + if(this->cddb.disc_artist) { + lprintf("Disc Artist: %s\n", this->cddb.disc_artist); + + _x_meta_info_set_utf8(this->stream, XINE_META_INFO_ARTIST, this->cddb.disc_artist); + } - if(this->cddb.disc_artist) { - lprintf("Disc Artist: %s\n", this->cddb.disc_artist); + pt = this->cddb.track[this->track].title; + } + lprintf("Track %d Title: %s\n", this->track+1, pt); - _x_meta_info_set_utf8(this->stream, XINE_META_INFO_ARTIST, this->cddb.disc_artist); + _x_meta_info_set_utf8(this->stream, XINE_META_INFO_TITLE, pt); } if(this->cddb.disc_category) { @@ -2513,13 +2511,140 @@ static int cdda_plugin_open (input_plugin_t *this_gen ) { return 1; } +static xine_mrl_t** cdda_class_get_dir(input_class_t *this_gen, + const char *filename, + int *num_files) { + cdda_input_class_t *this = (cdda_input_class_t *) this_gen; + cdda_input_plugin_t *ip; + cdrom_toc *toc; + char *base_mrl; + int len, frame; + const char * device; + int fd, i, err = -1; + int num_tracks; + + if (filename && *filename) { + device = filename; + if (strncasecmp(device,"cdda:/",6) == 0) { + device += 6; + while ('/' == *device) + device++; + device--; + } + } + else { + device = this->cdda_device; + } + lprintf("cdda_class_get_dir for >%s<\n", device); + + /* get the CD TOC */ + toc = init_cdrom_toc(); + + fd = -1; + + /* we create a new instance because getting a directory of a cd + * should not affect another cd that might be playing. */ + ip = (cdda_input_plugin_t *)xine_xmalloc(sizeof(cdda_input_plugin_t)); + ip->stream = NULL; + ip->fd = -1; + ip->net_fd = -1; + +#ifndef WIN32 + if( strchr(device,':') ) { + fd = network_connect(ip->stream, device); + if( fd != -1 ) { + err = network_read_cdrom_toc(ip->stream, fd, toc); + } + } +#endif + + if (fd == -1) { + if (cdda_open(ip, device, toc, &fd) == -1) { + lprintf("cdda_class_get_dir: opening >%s< failed %s\n", + device, strerror(errno)); + free(ip); + return NULL; + } + +#ifndef WIN32 + err = read_cdrom_toc(fd, toc); +#else + err = read_cdrom_toc(ip, toc); +#endif /* WIN32 */ + } + +#ifdef LOG + print_cdrom_toc(toc); +#endif + + cdda_close(ip); + + if ( err < 0 ) { + free(ip); + return NULL; + } + + num_tracks = toc->last_track - toc->first_track + 1; + + /* this could be done in read_cdrom_toc, but it seems other code doesn't use it */ + frame = toc->leadout_track.first_frame; + for ( i = num_tracks-1 ; i >= 0 ; i--) { + toc->toc_entries[i].total_frames = frame - toc->toc_entries[i].first_frame; + frame = toc->toc_entries[i].first_frame; + } + + if (toc->ignore_last_track) + num_tracks--; + + len = strlen(device) + 5; + base_mrl = xine_xmalloc(len+1); + sprintf(base_mrl, "cdda:%s", device); + + /* allocate space for the mrls's if needed. */ + if (num_tracks+1 > this->mrls_allocated_entries) { + this->mrls = realloc(this->mrls, (num_tracks+1) * sizeof(xine_mrl_t*)); + } + for (i = 0 ; i < num_tracks ; i++) { + if (i < this->mrls_allocated_entries) { + if (this->mrls[i]->origin) + free(this->mrls[i]->origin); + if (this->mrls[i]->mrl) + free(this->mrls[i]->mrl); + if (this->mrls[i]->link) { + free(this->mrls[i]->link); + this->mrls[i]->link = NULL; + } + } + else { + this->mrls[i] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[i]->link = NULL; + this->mrls_allocated_entries++; + } + this->mrls[i]->origin = strdup(base_mrl); + this->mrls[i]->mrl = xine_xmalloc(len+4); + sprintf( this->mrls[i]->mrl, "%s/%d", base_mrl, i+toc->first_track); + this->mrls[i]->type = mrl_cda | mrl_file_blockdev; + this->mrls[i]->size = toc->toc_entries[i].total_frames * CD_RAW_FRAME_SIZE; + } + /* Clean up */ + while(this->mrls_allocated_entries > num_tracks) { + MRL_ZERO(this->mrls[this->mrls_allocated_entries - 1]); + free(this->mrls[this->mrls_allocated_entries--]); + } + free_cdrom_toc(toc); + free(ip); + + this->mrls[num_tracks] = NULL; + *num_files = num_tracks; + return this->mrls; +} + static char ** cdda_class_get_autoplay_list (input_class_t *this_gen, int *num_files) { cdda_input_class_t *this = (cdda_input_class_t *) this_gen; cdda_input_plugin_t *ip = this->ip; cdrom_toc *toc; - char trackmrl[20]; int fd, i, err = -1; int num_tracks; @@ -2541,7 +2666,7 @@ static char ** cdda_class_get_autoplay_list (input_class_t *this_gen, * device we are going to open; but it is possible that this function * gets called, before a plugin instance has been created; * let's create a dummy instance in such a condition */ - ip = (cdda_input_plugin_t *)xine_xmalloc(sizeof(cdda_input_plugin_t)); + ip = calloc(1, sizeof(cdda_input_plugin_t)); ip->stream = NULL; ip->fd = -1; ip->net_fd = -1; @@ -2585,10 +2710,8 @@ static char ** cdda_class_get_autoplay_list (input_class_t *this_gen, num_tracks = toc->last_track - toc->first_track; if (toc->ignore_last_track) num_tracks--; - for ( i = 0; i <= num_tracks; i++ ) { - sprintf(trackmrl,"cdda:/%d",i+toc->first_track); - this->autoplaylist[i] = strdup(trackmrl); - } + for ( i = 0; i <= num_tracks; i++ ) + asprintf(&this->autoplaylist[i],"cdda:/%d",i+toc->first_track); *num_files = toc->last_track - toc->first_track + 1; @@ -2642,7 +2765,7 @@ static input_plugin_t *cdda_class_get_instance (input_class_t *cls_gen, xine_str } else return NULL; - this = (cdda_input_plugin_t *) xine_xmalloc (sizeof (cdda_input_plugin_t)); + this = calloc(1, sizeof (cdda_input_plugin_t)); class->ip = this; this->stream = stream; @@ -2731,7 +2854,7 @@ static void *init_plugin (xine_t *xine, void *data) { cdda_input_class_t *this; config_values_t *config; - this = (cdda_input_class_t *) xine_xmalloc (sizeof (cdda_input_class_t)); + this = calloc(1, sizeof (cdda_input_class_t)); this->xine = xine; this->config = xine->config; @@ -2740,8 +2863,7 @@ static void *init_plugin (xine_t *xine, void *data) { this->input_class.get_instance = cdda_class_get_instance; this->input_class.get_identifier = cdda_class_get_identifier; this->input_class.get_description = cdda_class_get_description; - /* this->input_class.get_dir = cdda_class_get_dir; */ - this->input_class.get_dir = NULL; + this->input_class.get_dir = cdda_class_get_dir; this->input_class.get_autoplay_list = cdda_class_get_autoplay_list; this->input_class.dispose = cdda_class_dispose; this->input_class.eject_media = cdda_class_eject_media; diff --git a/src/input/input_dvb.c b/src/input/input_dvb.c index 795b843c5..5060757e4 100644 --- a/src/input/input_dvb.c +++ b/src/input/input_dvb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2005 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -66,14 +66,14 @@ * OSD - this will allow for filtering/searching of epg data - useful for automatic recording :) */ -/* pthread.h must be included first so rest of the headers are imported - thread safely (on some systems). */ -#include <pthread.h> - #ifdef HAVE_CONFIG_H #include "config.h" #endif +/* pthread.h must be included first so rest of the headers are imported + thread safely (on some systems). */ +#include <pthread.h> + #include <assert.h> #include <stdio.h> #include <stdlib.h> @@ -286,11 +286,12 @@ typedef struct { xine_t *xine; - char *mrls[5]; + char *mrls[6]; int numchannels; char *autoplaylist[MAX_AUTOCHANNELS]; + char *default_channels_conf_filename; } dvb_input_class_t; typedef struct { @@ -331,6 +332,9 @@ typedef struct { /* scratch buffer for forward seeking */ char seek_buf[BUFSIZE]; + /* Is the GUI enabled at all? */ + int dvb_gui_enabled; + /* simple vcr-like functionality */ int record_fd; int record_paused; @@ -369,6 +373,7 @@ static const Param bw_list [] = { { "BANDWIDTH_6_MHZ", BANDWIDTH_6_MHZ }, { "BANDWIDTH_7_MHZ", BANDWIDTH_7_MHZ }, { "BANDWIDTH_8_MHZ", BANDWIDTH_8_MHZ }, + { "BANDWIDTH_AUTO", BANDWIDTH_AUTO }, { NULL, 0 } }; @@ -391,6 +396,7 @@ static const Param guard_list [] = { {"GUARD_INTERVAL_1_32", GUARD_INTERVAL_1_32}, {"GUARD_INTERVAL_1_4", GUARD_INTERVAL_1_4}, {"GUARD_INTERVAL_1_8", GUARD_INTERVAL_1_8}, + {"GUARD_INTERVAL_AUTO", GUARD_INTERVAL_AUTO}, { NULL, 0 } }; @@ -399,6 +405,7 @@ static const Param hierarchy_list [] = { { "HIERARCHY_2", HIERARCHY_2 }, { "HIERARCHY_4", HIERARCHY_4 }, { "HIERARCHY_NONE", HIERARCHY_NONE }, + { "HIERARCHY_AUTO", HIERARCHY_AUTO }, { NULL, 0 } }; @@ -417,12 +424,14 @@ static const Param qam_list [] = { { "QAM_256", QAM_256 }, { "QAM_32", QAM_32 }, { "QAM_64", QAM_64 }, + { "QAM_AUTO", QAM_AUTO }, { NULL, 0 } }; static const Param transmissionmode_list [] = { { "TRANSMISSION_MODE_2K", TRANSMISSION_MODE_2K }, { "TRANSMISSION_MODE_8K", TRANSMISSION_MODE_8K }, + { "TRANSMISSION_MODE_AUTO", TRANSMISSION_MODE_AUTO }, { NULL, 0 } }; @@ -513,7 +522,7 @@ time_t dvb_mjdtime (char *buf) int i; unsigned int year, month, day, hour, min, sec; unsigned long int mjd; - struct tm *tma = xine_xmalloc(sizeof(struct tm)); + struct tm *tma = calloc(1, sizeof(struct tm)); time_t t; _x_assert(tma != NULL); @@ -571,24 +580,23 @@ static void tuner_dispose(tuner_t * this) } -static tuner_t *tuner_init(xine_t * xine, int adapter) +static tuner_t *XINE_MALLOC tuner_init(xine_t * xine, int adapter) { tuner_t *this; int x; int test_video; - char *video_device=xine_xmalloc(200); + char *video_device=malloc(100); _x_assert(video_device != NULL); - this = (tuner_t *) xine_xmalloc(sizeof(tuner_t)); + this = calloc(1, sizeof(tuner_t)); _x_assert(this != NULL); xprintf(this->xine, XINE_VERBOSITY_DEBUG, "tuner_init adapter=%d\n", adapter); this->fd_frontend = -1; - for (x = 0; x < MAX_FILTERS; x++) - this->fd_pidfilter[x] = 0; + memset(this->fd_pidfilter, 0, sizeof(this->fd_pidfilter)); this->xine = xine; this->adapter_num = adapter; @@ -881,14 +889,15 @@ static channel_t *load_channels(xine_t *xine, xine_stream_t *stream, int *num_ch FILE *f; char str[BUFSIZE]; - char filename[BUFSIZE]; channel_t *channels = NULL; int num_channels = 0; int num_alloc = 0; - int i; struct stat st; - - snprintf(filename, BUFSIZE, "%s/.xine/channels.conf", xine_get_homedir()); + xine_cfg_entry_t channels_conf; + char *filename; + + xine_config_lookup_entry(xine, "media.dvb.channels_conf", &channels_conf); + filename = channels_conf.str_value; f = fopen(filename, "r"); if (!f) { @@ -910,8 +919,8 @@ static channel_t *load_channels(xine_t *xine, xine_stream_t *stream, int *num_ch while ( fgets (str, BUFSIZE, f)) { channel_t channel = {0}; - /* lose trailing spaces & control characters */ - i = strlen (str); + /* lose trailing spaces & control characters */ + size_t i = strlen (str); while (i && str[i - 1] <= ' ') --i; if (i == 0) @@ -922,7 +931,7 @@ static channel_t *load_channels(xine_t *xine, xine_stream_t *stream, int *num_ch continue; if (num_channels >= num_alloc) { - channel_t *new_channels = xine_xmalloc((num_alloc += 32) * sizeof (channel_t)); + channel_t *new_channels = calloc((num_alloc += 32), sizeof (channel_t)); _x_assert(new_channels != NULL); memcpy(new_channels, channels, num_channels * sizeof (channel_t)); free(channels); @@ -933,8 +942,7 @@ static channel_t *load_channels(xine_t *xine, xine_stream_t *stream, int *num_ch /* Initially there's no EPG data in the EPG structs. */ channels[num_channels].epg_count = 0; - for (i = 0; i < MAX_EPG_ENTRIES_PER_CHANNEL; ++i) - channels[num_channels].epg[i] = NULL; + memset(channels[num_channels].epg, 0, sizeof(channels[num_channels].epg)); num_channels++; } @@ -1144,6 +1152,8 @@ static void parse_pmt(dvb_input_plugin_t *this, const unsigned char *buf, int se switch (buf[0]) { case 0x01: case 0x02: + case 0x10: + case 0x1b: if(!has_video) { xprintf(this->stream->xine,XINE_VERBOSITY_LOG,"input_dvb: Adding VIDEO : PID 0x%04x\n", elementary_pid); dvb_set_pidfilter(this, VIDFILTER, elementary_pid, DMX_PES_VIDEO, DMX_OUT_TS_TAP); @@ -1153,6 +1163,8 @@ static void parse_pmt(dvb_input_plugin_t *this, const unsigned char *buf, int se case 0x03: case 0x04: + case 0x0f: + case 0x11: if(!has_audio) { xprintf(this->stream->xine,XINE_VERBOSITY_LOG,"input_dvb: Adding AUDIO : PID 0x%04x\n", elementary_pid); dvb_set_pidfilter(this, AUDFILTER, elementary_pid, DMX_PES_AUDIO, DMX_OUT_TS_TAP); @@ -1229,7 +1241,7 @@ static void dvb_parse_si(dvb_input_plugin_t *this) { struct pollfd pfd; tuner_t *tuner = this->tuner; - tmpbuffer = xine_xmalloc (8192); + tmpbuffer = calloc(1, 8192); _x_assert(tmpbuffer != NULL); @@ -1437,13 +1449,10 @@ static void load_epg_data(dvb_input_plugin_t *this) already "found" in the stream. This information is used to initialize the channel's EPG structs when the EPG information for the channel is seen in the stream the first time. */ - seen_channels = xine_xmalloc(this->num_channels*sizeof(char)); + seen_channels = calloc(this->num_channels, sizeof(char)); _x_assert(seen_channels != NULL); - for (i = 0; i < this->num_channels; i++) { - seen_channels[i] = 0; - } - foo = xine_xmalloc(8192); + foo = calloc(1, 8192); _x_assert(foo != NULL); fd.fd = this->tuner->fd_pidfilter[EITFILTER]; @@ -1493,19 +1502,19 @@ static void load_epg_data(dvb_input_plugin_t *this) Allocate space for the strings. */ if (current_channel->epg[current_channel->epg_count] == NULL) { current_channel->epg[current_channel->epg_count] = - xine_xmalloc(sizeof(epg_entry_t)); + calloc(1, sizeof(epg_entry_t)); _x_assert(current_channel->epg[current_channel->epg_count] != NULL); current_channel->epg[current_channel->epg_count]->progname = - xine_xmalloc((MAX_EPG_PROGRAM_NAME_LENGTH + 1) * sizeof(char)); + malloc(MAX_EPG_PROGRAM_NAME_LENGTH + 1); _x_assert(current_channel->epg[current_channel->epg_count]->progname != NULL); current_channel->epg[current_channel->epg_count]->description = - xine_xmalloc((MAX_EPG_PROGRAM_DESCRIPTION_LENGTH + 1) * sizeof(char)); + malloc(MAX_EPG_PROGRAM_DESCRIPTION_LENGTH + 1); _x_assert(current_channel->epg[current_channel->epg_count]->description != NULL); current_channel->epg[current_channel->epg_count]->content = - xine_xmalloc((MAX_EPG_CONTENT_TYPE_LENGTH + 1) * sizeof(char)); + malloc(MAX_EPG_CONTENT_TYPE_LENGTH + 1); _x_assert(current_channel->epg[current_channel->epg_count]->content != NULL); current_channel->epg[current_channel->epg_count]->running = 0; @@ -1655,21 +1664,22 @@ static void load_epg_data(dvb_input_plugin_t *this) } /* Prints text to an area, tries to cut the lines in between words. */ -static void render_text_area(osd_renderer_t* renderer, osd_object_t* osd, char* text, +static void render_text_area(osd_renderer_t* renderer, osd_object_t* osd, const char* text, int x, int y, int row_space, int max_x, int max_y, int* height, int color_base) { /* The position of the text to be printed. */ - char* cursor = text; + const char* cursor = text; + const char *const text_end = text + strlen(text); /* The line to be printed next. */ char text_line[512]; int text_width, text_height; - int old_line_length, line_cursor; - char* bound, *old_bound; + size_t old_line_length, line_cursor; + const char* bound, *old_bound; *height = 0; - while (cursor < text + strlen(text)) { + while (cursor < text_end) { bound = cursor; line_cursor = 0; text_line[0] = '\0'; @@ -1726,7 +1736,7 @@ static void render_text_area(osd_renderer_t* renderer, osd_object_t* osd, char* } /* OK, it did fit, let's try to fit some more. */ - } while (bound < text + strlen(text)); + } while (bound < text_end); if (y + text_height + row_space > max_y) { break; @@ -1825,7 +1835,7 @@ static void show_program_info(int x, int y, int max_x, int max_y, int* last_y, if (epg_data == NULL || epg_data->progname == NULL) return; - buffer = xine_xmalloc(512); + buffer = calloc(1, 512); _x_assert(buffer != NULL); @@ -1842,8 +1852,7 @@ static void show_program_info(int x, int y, int max_x, int max_y, int* last_y, /*Content type and rating, if any. */ if (strlen(epg_data->content) > 3) { - - snprintf(buffer, 94, "%s", epg_data->content); + strncpy(buffer, epg_data->content, 94-1); prog_rating = epg_data->rating; if (prog_rating > 0) { @@ -1873,7 +1882,7 @@ static void show_program_info(int x, int y, int max_x, int max_y, int* last_y, /* Print the description. */ if (epg_data->description && strlen(epg_data->description) > 0) { renderer->set_font(osd, "sans", EPG_DESCRIPTION_FONT_SIZE); - sprintf(buffer, "%s", epg_data->description); + strcpy(buffer, epg_data->description); /* If the description is not complete (i.e., there is no comma at the end), add "..." to the end. In my locale they often seem to send incomplete description texts :( */ @@ -2207,7 +2216,7 @@ static void do_record (dvb_input_plugin_t *this) { this->stream->osd_renderer->hide (this->paused_osd, 0); this->record_paused=0; } else { - t=xine_xmalloc(sizeof(time_t)); + t=calloc(1, sizeof(time_t)); _x_assert(t != NULL); @@ -2499,15 +2508,13 @@ static off_t dvb_plugin_read (input_plugin_t *this_gen, if (!this->tuned_in) return 0; - dvb_event_handler (this); + if (this->dvb_gui_enabled) + dvb_event_handler (this); #ifdef LOG_READS xprintf(this->class->xine,XINE_VERBOSITY_DEBUG, "input_dvb: reading %" PRIdMAX " bytes...\n", (intmax_t)len); #endif -#ifndef DVB_NO_BUFFERING - nbc_check_buffers (this->nbc); -#endif /* protect against channel changes */ have_mutex = pthread_mutex_lock(&this->channel_change_mutex); total=0; @@ -2595,6 +2602,12 @@ static buf_element_t *dvb_plugin_read_block (input_plugin_t *this_gen, buf_element_t *buf = fifo->buffer_pool_alloc (fifo); int total_bytes; + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -2764,7 +2777,12 @@ static int dvb_plugin_open(input_plugin_t * this_gen) xine_cfg_entry_t zoomdvb; xine_cfg_entry_t adapter; xine_cfg_entry_t lastchannel; + xine_cfg_entry_t gui_enabled; + xine_config_lookup_entry(this->stream->xine, "media.dvb.gui_enabled", &gui_enabled); + this->dvb_gui_enabled = gui_enabled.num_value; + xprintf(this->class->xine, XINE_VERBOSITY_LOG, _("input_dvb: DVB GUI %s\n"), this->dvb_gui_enabled ? "enabled" : "disabled"); + xine_config_lookup_entry(this->stream->xine, "media.dvb.adapter", &adapter); if (!(tuner = tuner_init(this->class->xine,adapter.num_value))) { @@ -2822,7 +2840,7 @@ static int dvb_plugin_open(input_plugin_t * this_gen) * that the channels have really ugly names, sometimes prefixed * by numbers... */ - int chanlen = strlen(channame); + size_t chanlen = strlen(channame); int offset = 0; xprintf(this->class->xine, XINE_VERBOSITY_LOG, @@ -2876,7 +2894,7 @@ static int dvb_plugin_open(input_plugin_t * this_gen) } ptr = this->mrl; ptr += 7; - channels = xine_xmalloc(sizeof(channel_t)); + channels = calloc(1, sizeof(channel_t)); _x_assert(channels != NULL); if (extract_channel_from_string(channels, ptr, tuner->feinfo.type) < 0) { free(channels); @@ -2896,7 +2914,7 @@ static int dvb_plugin_open(input_plugin_t * this_gen) } ptr = this->mrl; ptr += 7; - channels = xine_xmalloc(sizeof(channel_t)); + channels = calloc(1, sizeof(channel_t)); _x_assert(channels != NULL); if (extract_channel_from_string(channels, ptr, tuner->feinfo.type) < 0) { free(channels); @@ -2919,7 +2937,7 @@ static int dvb_plugin_open(input_plugin_t * this_gen) } ptr = this->mrl; ptr += 7; - channels = xine_xmalloc(sizeof(channel_t)); + channels = calloc(1, sizeof(channel_t)); _x_assert(channels != NULL); if (extract_channel_from_string(channels, ptr, tuner->feinfo.type) < 0) { @@ -2945,7 +2963,7 @@ static int dvb_plugin_open(input_plugin_t * this_gen) } ptr = this->mrl; ptr += 7; - channels = xine_xmalloc(sizeof(channel_t)); + channels = calloc(1, sizeof(channel_t)); _x_assert(channels != NULL); if (extract_channel_from_string(channels, ptr, tuner->feinfo.type) < 0) { @@ -2990,15 +3008,16 @@ static int dvb_plugin_open(input_plugin_t * this_gen) this->event_queue = xine_event_new_queue(this->stream); #ifdef EPG_UPDATE_IN_BACKGROUND - /* Start the EPG updater thread. */ - this->epg_updater_stop = 0; - if (pthread_create(&this->epg_updater_thread, NULL, - epg_data_updater, this) != 0) { - xprintf( - this->class->xine, XINE_VERBOSITY_LOG, - _("input_dvb: cannot create EPG updater thread\n")); - return 0; - + if (this->dvb_gui_enabled) { + /* Start the EPG updater thread. */ + this->epg_updater_stop = 0; + if (pthread_create(&this->epg_updater_thread, NULL, + epg_data_updater, this) != 0) { + xprintf( + this->class->xine, XINE_VERBOSITY_LOG, + _("input_dvb: cannot create EPG updater thread\n")); + return 0; + } } #endif /* @@ -3109,7 +3128,7 @@ static input_plugin_t *dvb_class_get_instance (input_class_t *class_gen, fprintf(stderr, "input_dvb: continuing in get_instance\n"); - this = (dvb_input_plugin_t *) xine_xmalloc (sizeof(dvb_input_plugin_t)); + this = calloc(1, sizeof(dvb_input_plugin_t)); _x_assert(this != NULL); @@ -3164,6 +3183,8 @@ static void dvb_class_dispose(input_class_t * this_gen) { dvb_input_class_t *class = (dvb_input_class_t *) this_gen; int x; + + free(class->default_channels_conf_filename); for(x=0;x<class->numchannels;x++) free(class->autoplaylist[x]); @@ -3181,7 +3202,6 @@ static char **dvb_class_get_autoplay_list(input_class_t * this_gen, { dvb_input_class_t *class = (dvb_input_class_t *) this_gen; channel_t *channels=NULL; - char foobuffer[BUFSIZE]; int ch, apch, num_channels = 0; int default_channel = -1; xine_cfg_entry_t lastchannel_enable = {0}; @@ -3226,21 +3246,19 @@ static char **dvb_class_get_autoplay_list(input_class_t * this_gen, for (ch = 0, apch = !!lastchannel_enable.num_value; ch < num_channels && ch < MAX_AUTOCHANNELS; ++ch, ++apch) { - snprintf(foobuffer, BUFSIZE, "dvb://%s", channels[ch].name); - free(class->autoplaylist[apch]); - class->autoplaylist[apch] = strdup(foobuffer); - _x_assert(class->autoplaylist[apch] != NULL); + free(class->autoplaylist[apch]); + asprintf(&(class->autoplaylist[apch]), "dvb://%s", channels[ch].name); + _x_assert(class->autoplaylist[apch] != NULL); } if (lastchannel_enable.num_value){ + free(class->autoplaylist[0]); if (default_channel != -1) /* plugin has been used before - channel is valid */ - sprintf (foobuffer, "dvb://%s", channels[default_channel].name); + asprintf (&(class->autoplaylist[0]), "dvb://%s", channels[default_channel].name); else /* set a reasonable default - the first channel */ - sprintf (foobuffer, "dvb://%s", num_channels ? channels[0].name : "0"); - free(class->autoplaylist[0]); - class->autoplaylist[0]=strdup(foobuffer); + asprintf (&(class->autoplaylist[0]), "dvb://%s", num_channels ? channels[0].name : "0"); } free_channel_list(channels, num_channels); @@ -3256,7 +3274,7 @@ static void *init_class (xine_t *xine, void *data) { dvb_input_class_t *this; config_values_t *config = xine->config; - this = (dvb_input_class_t *) xine_xmalloc (sizeof (dvb_input_class_t)); + this = calloc(1, sizeof (dvb_input_class_t)); _x_assert(this != NULL); this->xine = xine; @@ -3275,6 +3293,10 @@ static void *init_class (xine_t *xine, void *data) { this->mrls[3] = "dvbt://"; this->mrls[4] = "dvba://"; this->mrls[5] = 0; + + asprintf(&this->default_channels_conf_filename, + "%s/.xine/channels.conf", + xine_get_homedir()); xprintf(this->xine,XINE_VERBOSITY_DEBUG,"init class succeeded\n"); @@ -3308,7 +3330,19 @@ static void *init_class (xine_t *xine, void *data) { "in your system."), 0, NULL, (void *) this); - + /* set to 0 to turn off the GUI built into this input plugin */ + config->register_bool(config, "media.dvb.gui_enabled", + 1, + _("Enable the DVB GUI"), + _("Enable the DVB GUI, mouse controlled recording and channel switching."), + 21, NULL, NULL); + /* Override the default channels file */ + config->register_filename(config, "media.dvb.channels_conf", + this->default_channels_conf_filename, + XINE_CONFIG_STRING_IS_FILENAME, + _("DVB Channels config file"), + _("DVB Channels config file to use instead of the ~/.xine/channels.conf file."), + 21, NULL, NULL); return this; } diff --git a/src/input/input_dvd.c b/src/input/input_dvd.c index a891b9877..279f3c64e 100644 --- a/src/input/input_dvd.c +++ b/src/input/input_dvd.c @@ -115,6 +115,9 @@ /* There really isn't a default on Windows! */ #define DVD_PATH "d:\\" #define RDVD_PATH "d:\\" +#elif defined(__OpenBSD__) +#define DVD_PATH "/dev/rcd0c" +#define RDVD_PATH "/dev/rcd0c" #else #define DVD_PATH "/dev/dvd" #define RDVD_PATH "/dev/rdvd" @@ -352,11 +355,14 @@ static void send_mouse_enter_leave_event(dvd_input_plugin_t *this, int direction } static int update_title_display(dvd_input_plugin_t *this) { - char ui_title[MAX_STR_LEN + 1]; - xine_event_t uevent; xine_ui_data_t data; + xine_event_t uevent = { + .type = XINE_EVENT_UI_SET_TITLE, + .stream = this->stream, + .data = &data, + .data_length = sizeof(data) + }; int tt=-1, pr=-1; - size_t ui_str_length=0; int num_tt = 0; if(!this || !(this->stream)) @@ -386,15 +392,15 @@ static int update_title_display(dvd_input_plugin_t *this) { dvdnav_get_number_of_parts(this->dvdnav, tt, &num_part); dvdnav_get_angle_info(this->dvdnav, &cur_angle, &num_angle); if(num_angle > 1) { - snprintf(ui_title, MAX_STR_LEN, - "Title %i, Chapter %i, Angle %i of %i", - tt,pr,cur_angle, num_angle); + data.str_len = snprintf(data.str, sizeof(data.str), + "Title %i, Chapter %i, Angle %i of %i", + tt,pr,cur_angle, num_angle); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_NUMBER,cur_angle); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_COUNT,num_angle); } else { - snprintf(ui_title, MAX_STR_LEN, - "Title %i, Chapter %i", - tt,pr); + data.str_len = snprintf(data.str, sizeof(data.str), + "Title %i, Chapter %i", + tt,pr); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_NUMBER,0); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_COUNT,0); } @@ -403,9 +409,9 @@ static int update_title_display(dvd_input_plugin_t *this) { _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_CHAPTER_NUMBER,pr); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_CHAPTER_COUNT,num_part); } else if (tt == 0 && dvdnav_menu_table[pr]) { - snprintf(ui_title, MAX_STR_LEN, - "DVD %s Menu", - dvdnav_menu_table[pr]); + data.str_len = snprintf(data.str, sizeof(data.str), + "DVD %s Menu", + dvdnav_menu_table[pr]); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_TITLE_NUMBER,tt); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_TITLE_COUNT,num_tt); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_CHAPTER_NUMBER,0); @@ -413,7 +419,8 @@ static int update_title_display(dvd_input_plugin_t *this) { _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_NUMBER,0); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_COUNT,0); } else { - strcpy(ui_title, "DVD Menu"); + strcpy(data.str, "DVD Menu"); + data.str_len = strlen(data.str); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_TITLE_NUMBER,0); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_TITLE_COUNT,num_tt); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_CHAPTER_NUMBER,0); @@ -421,22 +428,15 @@ static int update_title_display(dvd_input_plugin_t *this) { _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_NUMBER,0); _x_stream_info_set(this->stream,XINE_STREAM_INFO_DVD_ANGLE_COUNT,0); } - ui_str_length = strlen(ui_title); if (this->dvd_name && this->dvd_name[0] && - (ui_str_length + strlen(this->dvd_name) < MAX_STR_LEN)) { - snprintf(ui_title+ui_str_length, MAX_STR_LEN - ui_str_length, - ", %s", this->dvd_name); + (data.str_len + strlen(this->dvd_name) < sizeof(data.str))) { + data.str_len += snprintf(data.str+data.str_len, sizeof(data.str) - data.str_len, + ", %s", this->dvd_name); } #ifdef INPUT_DEBUG - printf("input_dvd: Changing title to read '%s'\n", ui_title); + printf("input_dvd: Changing title to read '%s'\n", data.str); #endif - uevent.type = XINE_EVENT_UI_SET_TITLE; - uevent.stream = this->stream; - uevent.data = &data; - uevent.data_length = sizeof(data);; - memcpy(data.str, ui_title, strlen(ui_title) + 1); - data.str_len = strlen(ui_title) + 1; xine_event_send(this->stream, &uevent); return 1; @@ -853,6 +853,9 @@ static buf_element_t *dvd_plugin_read_block (input_plugin_t *this_gen, static off_t dvd_plugin_read (input_plugin_t *this_gen, char *ch_buf, off_t len) { /* dvd_input_plugin_t *this = (dvd_input_plugin_t*)this_gen; */ + if (len < 4) + return -1; + /* FIXME: Tricking the demux_mpeg_block plugin */ ch_buf[0] = 0; ch_buf[1] = 0; @@ -1313,7 +1316,7 @@ static int dvd_plugin_get_optional_data (input_plugin_t *this_gen, if(this && this->stream && this->dvdnav) { if(!(dvdnav_is_domain_vts(this->dvdnav))) { - sprintf(data, "%s", "menu"); + strcpy(data, "menu"); if (channel <= 0) return INPUT_OPTIONAL_SUCCESS; else @@ -1336,7 +1339,7 @@ static int dvd_plugin_get_optional_data (input_plugin_t *this_gen, return INPUT_OPTIONAL_SUCCESS; } else { if(channel == -1) { - sprintf(data, "%s", "none"); + strcpy(data, "none"); return INPUT_OPTIONAL_SUCCESS; } } @@ -1369,10 +1372,7 @@ check_solaris_vold_device(dvd_input_class_t *this) (volume_action = getenv("VOLUME_ACTION")) != NULL && strcmp(volume_action, "insert") == 0) { - device = malloc(strlen(volume_device) + strlen(volume_name) + 2); - if (device == NULL) - return; - sprintf(device, "%s/%s", volume_device, volume_name); + asprintf(&device, "%s/%s", volume_device, volume_name); if (stat(device, &stb) != 0 || !S_ISCHR(stb.st_mode)) { free(device); return; @@ -1625,14 +1625,14 @@ static input_plugin_t *dvd_class_get_instance (input_class_t *class_gen, xine_st if (strncasecmp (data, handled_mrl, strlen(handled_mrl) ) != 0) return NULL; - this = (dvd_input_plugin_t *) xine_xmalloc (sizeof (dvd_input_plugin_t)); + this = calloc(1, sizeof (dvd_input_plugin_t)); if (!this) { return NULL; } this->mem_stack = 0; this->mem_stack_max = 1024; - this->mem = xine_xmalloc(sizeof(unsigned char *) * this->mem_stack_max); + this->mem = calloc(this->mem_stack_max, sizeof(unsigned char *)); if (!this->mem) { free(this); return NULL; @@ -1758,7 +1758,7 @@ static void *init_class (xine_t *xine, void *data) { printf("input_dvd.c: config = %p\n", config); #endif - this = (dvd_input_class_t *) xine_xmalloc (sizeof (dvd_input_class_t)); + this = (dvd_input_class_t *) calloc(1, sizeof (dvd_input_class_t)); if (!this) return NULL; @@ -1820,8 +1820,7 @@ static void *init_class (xine_t *xine, void *data) { "playing scrambled DVDs."), 20, NULL, NULL); xine_setenv("DVDCSS_METHOD", decrypt_modes[mode], 0); - css_cache_default = (char *)malloc(strlen(xine_get_homedir()) + 10); - sprintf(css_cache_default, "%s/.dvdcss/", xine_get_homedir()); + asprintf(&css_cache_default, "%s/.dvdcss/", xine_get_homedir()); css_cache = config->register_filename(config, "media.dvd.css_cache_path", css_cache_default, XINE_CONFIG_STRING_IS_DIRECTORY_NAME, _("path to the title key cache"), _("Since cracking the copy protection of scrambled DVDs can " diff --git a/src/input/input_file.c b/src/input/input_file.c index f81103dcd..2187f0007 100644 --- a/src/input/input_file.c +++ b/src/input/input_file.c @@ -145,6 +145,9 @@ static int check_mmap_file(file_input_plugin_t *this) { static off_t file_plugin_read (input_plugin_t *this_gen, char *buf, off_t len) { file_input_plugin_t *this = (file_input_plugin_t *) this_gen; + if (len < 0) + return -1; + #ifdef HAVE_MMAP if ( check_mmap_file(this) ) { off_t l = len; @@ -166,6 +169,13 @@ static buf_element_t *file_plugin_read_block (input_plugin_t *this_gen, fifo_buf file_input_plugin_t *this = (file_input_plugin_t *) this_gen; buf_element_t *buf = fifo->buffer_pool_alloc (fifo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->type = BUF_DEMUX_BLOCK; #ifdef HAVE_MMAP @@ -421,7 +431,7 @@ static input_plugin_t *file_class_get_instance (input_class_t *cls_gen, xine_str return NULL; } - this = (file_input_plugin_t *) xine_xmalloc (sizeof (file_input_plugin_t)); + this = (file_input_plugin_t *) calloc(1, sizeof (file_input_plugin_t)); this->stream = stream; this->mrl = mrl; this->fh = -1; @@ -689,9 +699,9 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, return NULL; } - dir_files = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t) * MAXFILES); - hide_files = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t) * MAXFILES); - norm_files = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t) * MAXFILES); + dir_files = (xine_mrl_t *) calloc(MAXFILES, sizeof(xine_mrl_t)); + hide_files = (xine_mrl_t *) calloc(MAXFILES, sizeof(xine_mrl_t)); + norm_files = (xine_mrl_t *) calloc(MAXFILES, sizeof(xine_mrl_t)); while((pdirent = readdir(pdir)) != NULL) { @@ -708,11 +718,8 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, } else { - dir_files[num_dir_files].mrl = (char *) - xine_xmalloc(strlen(current_dir_slashed) + 1 + strlen(pdirent->d_name) + 1); - dir_files[num_dir_files].origin = strdup(current_dir); - sprintf(dir_files[num_dir_files].mrl, "%s%s", + asprintf(&(dir_files[num_dir_files].mrl), "%s%s", current_dir_slashed, pdirent->d_name); dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = get_file_type(fullfilename, current_dir, this->xine); @@ -730,8 +737,9 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, xprintf (this->xine, XINE_VERBOSITY_DEBUG, "input_file: readlink() failed: %s\n", strerror(errno)); else { - dir_files[num_dir_files].link = (char *) xine_xmalloc(linksize + 1); - strncpy(dir_files[num_dir_files].link, linkbuf, linksize); + dir_files[num_dir_files].link = + strndup(linkbuf, linksize); + dir_files[num_dir_files].type |= get_file_type(dir_files[num_dir_files].link, current_dir, this->xine); } } @@ -746,11 +754,8 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, /* if user don't want to see hidden files, ignore them */ if(this->show_hidden_files) { - hide_files[num_hide_files].mrl = (char *) - xine_xmalloc(strlen(current_dir_slashed) + 1 + strlen(pdirent->d_name) + 1); - hide_files[num_hide_files].origin = strdup(current_dir); - sprintf(hide_files[num_hide_files].mrl, "%s%s", + asprintf(&(hide_files[num_hide_files].mrl), "%s%s", current_dir_slashed, pdirent->d_name); hide_files[num_hide_files].link = NULL; hide_files[num_hide_files].type = get_file_type(fullfilename, current_dir, this->xine); @@ -769,9 +774,8 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, "input_file: readlink() failed: %s\n", strerror(errno)); } else { - hide_files[num_hide_files].link = (char *) - xine_xmalloc(linksize + 1); - strncpy(hide_files[num_hide_files].link, linkbuf, linksize); + hide_files[num_hide_files].link = + strndup(linkbuf, linksize); hide_files[num_hide_files].type |= get_file_type(hide_files[num_hide_files].link, current_dir, this->xine); } } @@ -782,11 +786,8 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, } /* So a *normal* one. */ else { - norm_files[num_norm_files].mrl = (char *) - xine_xmalloc(strlen(current_dir_slashed) + 1 + strlen(pdirent->d_name) + 1); - norm_files[num_norm_files].origin = strdup(current_dir); - sprintf(norm_files[num_norm_files].mrl, "%s%s", + asprintf(&(norm_files[num_norm_files].mrl), "%s%s", current_dir_slashed, pdirent->d_name); norm_files[num_norm_files].link = NULL; norm_files[num_norm_files].type = get_file_type(fullfilename, current_dir, this->xine); @@ -805,9 +806,8 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, "input_file: readlink() failed: %s\n", strerror(errno)); } else { - norm_files[num_norm_files].link = (char *) - xine_xmalloc(linksize + 1); - strncpy(norm_files[num_norm_files].link, linkbuf, linksize); + norm_files[num_norm_files].link = + strndup(linkbuf, linksize); norm_files[num_norm_files].type |= get_file_type(norm_files[num_norm_files].link, current_dir, this->xine); } } @@ -849,7 +849,7 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, if(num_files >= this->mrls_allocated_entries) { ++this->mrls_allocated_entries; this->mrls = realloc(this->mrls, (this->mrls_allocated_entries+1) * sizeof(xine_mrl_t*)); - this->mrls[num_files] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[num_files] = calloc(1, sizeof(xine_mrl_t)); } else memset(this->mrls[num_files], 0, sizeof(xine_mrl_t)); @@ -867,7 +867,7 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, if(num_files >= this->mrls_allocated_entries) { ++this->mrls_allocated_entries; this->mrls = realloc(this->mrls, (this->mrls_allocated_entries+1) * sizeof(xine_mrl_t*)); - this->mrls[num_files] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[num_files] = calloc(1, sizeof(xine_mrl_t)); } else memset(this->mrls[num_files], 0, sizeof(xine_mrl_t)); @@ -885,7 +885,7 @@ static xine_mrl_t **file_class_get_dir (input_class_t *this_gen, if(num_files >= this->mrls_allocated_entries) { ++this->mrls_allocated_entries; this->mrls = realloc(this->mrls, (this->mrls_allocated_entries+1) * sizeof(xine_mrl_t*)); - this->mrls[num_files] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[num_files] = calloc(1, sizeof(xine_mrl_t)); } else memset(this->mrls[num_files], 0, sizeof(xine_mrl_t)); @@ -965,7 +965,7 @@ static void *init_plugin (xine_t *xine, void *data) { file_input_class_t *this; config_values_t *config; - this = (file_input_class_t *) xine_xmalloc (sizeof (file_input_class_t)); + this = (file_input_class_t *) calloc(1, sizeof (file_input_class_t)); this->xine = xine; this->config = xine->config; @@ -979,7 +979,7 @@ static void *init_plugin (xine_t *xine, void *data) { this->input_class.dispose = file_class_dispose; this->input_class.eject_media = NULL; - this->mrls = (xine_mrl_t **) xine_xmalloc(sizeof(xine_mrl_t*)); + this->mrls = (xine_mrl_t **) calloc(1, sizeof(xine_mrl_t*)); this->mrls_allocated_entries = 0; { diff --git a/src/input/input_gnome_vfs.c b/src/input/input_gnome_vfs.c index 0848b9206..a3dfafdd5 100644 --- a/src/input/input_gnome_vfs.c +++ b/src/input/input_gnome_vfs.c @@ -121,6 +121,13 @@ gnomevfs_plugin_read_block (input_plugin_t *this_gen, fifo_buffer_t *fifo, off_t total_bytes; buf_element_t *buf = fifo->buffer_pool_alloc (fifo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; diff --git a/src/input/input_http.c b/src/input/input_http.c index af696ca14..c831dfc59 100644 --- a/src/input/input_http.c +++ b/src/input/input_http.c @@ -82,6 +82,8 @@ typedef struct { char auth[BUFSIZE]; char proxyauth[BUFSIZE]; + + char *mime_type; char *proto; char *user; @@ -235,26 +237,16 @@ static int http_plugin_basicauth (const char *user, const char *password, char* char *tmp; char *sptr; char *dptr; - int totlen; + size_t count; int enclen; - int count; - - totlen = strlen (user) + 1; - if(password != NULL) - totlen += strlen (password); - enclen = ((totlen + 2) / 3 ) * 4 + 1; + count = asprintf(&tmp, "%s:%s", user, (password != NULL) ? password : ""); + + enclen = ((count + 2) / 3 ) * 4 + 1; if (len < enclen) return -1; - - tmp = malloc (sizeof(char) * (totlen + 1)); - strcpy (tmp, user); - strcat (tmp, ":"); - if (password != NULL) - strcat (tmp, password); - - count = strlen(tmp); + sptr = tmp; dptr = dest; while (count >= 3) { @@ -429,6 +421,9 @@ static off_t http_plugin_read (input_plugin_t *this_gen, num_bytes = 0; + if (nlen < 0) + return -1; + if (this->curpos < this->preview_size) { if (nlen > (this->preview_size - this->curpos)) @@ -445,7 +440,7 @@ static off_t http_plugin_read (input_plugin_t *this_gen, n = nlen - num_bytes; - if (n) { + if (n > 0) { int read_bytes; read_bytes = http_plugin_read_int (this, &buf[num_bytes], n); @@ -511,6 +506,13 @@ static buf_element_t *http_plugin_read_block (input_plugin_t *this_gen, fifo_buf off_t total_bytes; buf_element_t *buf = fifo->buffer_pool_alloc (fifo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -562,7 +564,7 @@ static off_t http_plugin_seek(input_plugin_t *this_gen, off_t offset, int origin if ((origin == SEEK_CUR) && (offset >= 0)) { for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - if( !this_gen->read (this_gen, this->seek_buf, BUFSIZE) ) + if( this_gen->read (this_gen, this->seek_buf, BUFSIZE) <= 0 ) return this->curpos; } @@ -584,7 +586,7 @@ static off_t http_plugin_seek(input_plugin_t *this_gen, off_t offset, int origin offset -= this->curpos; for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - if( !this_gen->read (this_gen, this->seek_buf, BUFSIZE) ) + if( this_gen->read (this_gen, this->seek_buf, BUFSIZE) <= 0 ) return this->curpos; } @@ -602,17 +604,20 @@ static const char* http_plugin_get_mrl (input_plugin_t *this_gen) { } static int http_plugin_get_optional_data (input_plugin_t *this_gen, - void *data, int data_type) { + void *const data, int data_type) { + void **const ptr = (void **const) data; http_input_plugin_t *this = (http_input_plugin_t *) this_gen; switch (data_type) { case INPUT_OPTIONAL_DATA_PREVIEW: - memcpy (data, this->preview, this->preview_size); return this->preview_size; - break; + case INPUT_OPTIONAL_DATA_MIME_TYPE: + *ptr = this->mime_type; + case INPUT_OPTIONAL_DATA_DEMUX_MIME_TYPE: + return *this->mime_type ? INPUT_OPTIONAL_SUCCESS : INPUT_OPTIONAL_UNSUPPORTED; } return INPUT_OPTIONAL_UNSUPPORTED; @@ -637,6 +642,7 @@ static void http_plugin_dispose (input_plugin_t *this_gen ) { if (this->user) free(this->user); if (this->password) free(this->password); if (this->uri) free(this->uri); + if (this->mime_type) free(this->mime_type); free (this); } @@ -661,11 +667,13 @@ static int http_plugin_open (input_plugin_t *this_gen ) { int done, len, linenum; int httpcode; int res; - int buflen; + size_t buflen; int use_proxy; int proxyport; int mpegurl_redirect = 0; - + char mime_type[256]; + + mime_type[0] = 0; use_proxy = this_class->proxyhost && strlen(this_class->proxyhost); if (use_proxy) { @@ -753,43 +761,38 @@ static int http_plugin_open (input_plugin_t *this_gen ) { if (use_proxy) { if (this->port != DEFAULT_HTTP_PORT) { - snprintf (this->buf, BUFSIZE, "GET http://%s:%d%s HTTP/1.0\015\012", - this->host, this->port, this->uri); + buflen = snprintf (this->buf, BUFSIZE, "GET http://%s:%d%s HTTP/1.0\015\012", + this->host, this->port, this->uri); } else { - snprintf (this->buf, BUFSIZE, "GET http://%s%s HTTP/1.0\015\012", - this->host, this->uri); + buflen = snprintf (this->buf, BUFSIZE, "GET http://%s%s HTTP/1.0\015\012", + this->host, this->uri); } } else - snprintf (this->buf, BUFSIZE, "GET %s HTTP/1.0\015\012", this->uri); + buflen = snprintf (this->buf, BUFSIZE, "GET %s HTTP/1.0\015\012", this->uri); - buflen = strlen(this->buf); if (this->port != DEFAULT_HTTP_PORT) - snprintf (this->buf + buflen, BUFSIZE - buflen, "Host: %s:%d\015\012", - this->host, this->port); + buflen += snprintf (this->buf + buflen, BUFSIZE - buflen, "Host: %s:%d\015\012", + this->host, this->port); else - snprintf (this->buf + buflen, BUFSIZE - buflen, "Host: %s\015\012", - this->host); + buflen += snprintf (this->buf + buflen, BUFSIZE - buflen, "Host: %s\015\012", + this->host); - buflen = strlen(this->buf); if (this_class->proxyuser && strlen(this_class->proxyuser)) { - snprintf (this->buf + buflen, BUFSIZE - buflen, - "Proxy-Authorization: Basic %s\015\012", this->proxyauth); - buflen = strlen(this->buf); + buflen += snprintf (this->buf + buflen, BUFSIZE - buflen, + "Proxy-Authorization: Basic %s\015\012", this->proxyauth); } if (this->user && strlen(this->user)) { - snprintf (this->buf + buflen, BUFSIZE - buflen, - "Authorization: Basic %s\015\012", this->auth); - buflen = strlen(this->buf); + buflen += snprintf (this->buf + buflen, BUFSIZE - buflen, + "Authorization: Basic %s\015\012", this->auth); } - snprintf(this->buf + buflen, BUFSIZE - buflen, - "User-Agent: xine/%s\015\012" - "Accept: */*\015\012" - "Icy-MetaData: 1\015\012" - "\015\012", - VERSION); - buflen = strlen(this->buf); + buflen += snprintf(this->buf + buflen, BUFSIZE - buflen, + "User-Agent: xine/%s\015\012" + "Accept: */*\015\012" + "Icy-MetaData: 1\015\012" + "\015\012", + VERSION); if (_x_io_tcp_write (this->stream, this->fh, this->buf, buflen) != buflen) { _x_message(this->stream, XINE_MSG_CONNECTION_REFUSED, "couldn't send request", NULL); xprintf(this_class->xine, XINE_VERBOSITY_DEBUG, "input_http: couldn't send request\n"); @@ -934,7 +937,11 @@ static int http_plugin_open (input_plugin_t *this_gen ) { /* content type */ if (!strncasecmp(this->buf, TAG_CONTENT_TYPE, sizeof(TAG_CONTENT_TYPE) - 1)) { - if (!strncasecmp(this->buf + sizeof(TAG_CONTENT_TYPE) - 1, "video/nsv", 9)) { + const char *type = this->buf + sizeof (TAG_CONTENT_TYPE) - 1; + while (isspace (*type)) + ++type; + sprintf (mime_type, "%.255s", type); + if (!strncasecmp (type, "video/nsv", 9)) { lprintf("shoutcast nsv detected\n"); this->is_nsv = 1; } @@ -999,12 +1006,15 @@ static int http_plugin_open (input_plugin_t *this_gen ) { this->preview_size = http_plugin_read_int (this, this->preview, MAX_PREVIEW_SIZE); } if (this->preview_size < 0) { + this->preview_size = 0; xine_log (this->stream->xine, XINE_LOG_MSG, _("input_http: read error %d\n"), errno); return -12; } lprintf("preview_size=%"PRId64"\n", this->preview_size); this->curpos = 0; + if (*mime_type) + this->mime_type = strdup (mime_type); return 1; } @@ -1022,11 +1032,10 @@ static input_plugin_t *http_class_get_instance (input_class_t *cls_gen, xine_str strncasecmp (mrl, "peercast://pls/", 15)) { return NULL; } - this = (http_input_plugin_t *) xine_xmalloc(sizeof(http_input_plugin_t)); + this = calloc(1, sizeof(http_input_plugin_t)); if (!strncasecmp (mrl, "peercast://pls/", 15)) { - this->mrl = xine_xmalloc (30 + strlen(mrl) - 15); - sprintf (this->mrl, "http://127.0.0.1:7144/stream/%s", mrl+15); + asprintf (&this->mrl, "http://127.0.0.1:7144/stream/%s", mrl+15); } else { this->mrl = strdup (mrl); } @@ -1073,7 +1082,7 @@ static void *init_class (xine_t *xine, void *data) { config_values_t *config; char *proxy_env; - this = (http_input_class_t *) xine_xmalloc (sizeof (http_input_class_t)); + this = calloc(1, sizeof (http_input_class_t)); this->xine = xine; this->config = xine->config; @@ -1090,25 +1099,21 @@ static void *init_class (xine_t *xine, void *data) { /* * honour http_proxy envvar */ - if((proxy_env = getenv("http_proxy")) && (strlen(proxy_env))) { + if((proxy_env = getenv("http_proxy")) && *proxy_env) { int proxy_port = DEFAULT_HTTP_PORT; - char *http_proxy = xine_xmalloc(strlen(proxy_env) + 1); char *p; if(!strncmp(proxy_env, "http://", 7)) proxy_env += 7; + + this->proxyhost_env = strdup(proxy_env); - sprintf(http_proxy, "%s", proxy_env); - - if((p = strrchr(&http_proxy[0], ':')) && (strlen(p) > 1)) { + if((p = strrchr(this->proxyhost_env, ':')) && (strlen(p) > 1)) { *p++ = '\0'; proxy_port = (int) strtol(p, &p, 10); } - this->proxyhost_env = strdup(http_proxy); this->proxyport_env = proxy_port; - - free(http_proxy); } else proxy_env = NULL; /* proxy_env can be "" */ diff --git a/src/input/input_mms.c b/src/input/input_mms.c index 6a1e729e6..cd88a0609 100644 --- a/src/input/input_mms.c +++ b/src/input/input_mms.c @@ -122,6 +122,13 @@ static buf_element_t *mms_plugin_read_block (input_plugin_t *this_gen, lprintf ("mms_plugin_read_block: %"PRId64" bytes...\n", todo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -401,7 +408,7 @@ static input_plugin_t *mms_class_get_instance (input_class_t *cls_gen, xine_stre return NULL; } - this = (mms_input_plugin_t *) xine_xmalloc (sizeof (mms_input_plugin_t)); + this = calloc(1, sizeof (mms_input_plugin_t)); cls->ip = this; this->stream = stream; this->mms = NULL; @@ -459,7 +466,7 @@ static void *init_class (xine_t *xine, void *data) { mms_input_class_t *this; - this = (mms_input_class_t *) xine_xmalloc (sizeof (mms_input_class_t)); + this = calloc(1, sizeof (mms_input_class_t)); this->xine = xine; this->ip = NULL; diff --git a/src/input/input_net.c b/src/input/input_net.c index fe78c93f4..d9da27b54 100644 --- a/src/input/input_net.c +++ b/src/input/input_net.c @@ -253,6 +253,9 @@ static off_t net_plugin_read (input_plugin_t *this_gen, lprintf("reading %" PRIdMAX " bytes...\n", (intmax_t)len); + if (len < 0) + return -1; + total=0; if (this->curpos < this->preview_size) { n = this->preview_size - this->curpos; @@ -288,6 +291,13 @@ static buf_element_t *net_plugin_read_block (input_plugin_t *this_gen, buf_element_t *buf = fifo->buffer_pool_alloc (fifo); off_t total_bytes; + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -331,7 +341,7 @@ static off_t net_plugin_seek (input_plugin_t *this_gen, off_t offset, int origin if ((origin == SEEK_CUR) && (offset >= 0)) { for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - if( !this_gen->read (this_gen, this->seek_buf, BUFSIZE) ) + if( this_gen->read (this_gen, this->seek_buf, BUFSIZE) <= 0 ) return this->curpos; } @@ -353,7 +363,7 @@ static off_t net_plugin_seek (input_plugin_t *this_gen, off_t offset, int origin offset -= this->curpos; for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - if( !this_gen->read (this_gen, this->seek_buf, BUFSIZE) ) + if( this_gen->read (this_gen, this->seek_buf, BUFSIZE) <= 0 ) return this->curpos; } @@ -480,7 +490,7 @@ static input_plugin_t *net_class_get_instance (input_class_t *cls_gen, xine_stre return NULL; } - this = xine_xmalloc(sizeof(net_input_plugin_t)); + this = calloc(1, sizeof(net_input_plugin_t)); this->mrl = strdup(mrl); this->host_port = strdup(filename); this->stream = stream; @@ -528,7 +538,7 @@ static void *init_class (xine_t *xine, void *data) { net_input_class_t *this; - this = (net_input_class_t *) xine_xmalloc(sizeof(net_input_class_t)); + this = calloc(1, sizeof(net_input_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/input/input_plugin.h b/src/input/input_plugin.h index 1d1e5cf53..080e05476 100644 --- a/src/input/input_plugin.h +++ b/src/input/input_plugin.h @@ -307,6 +307,13 @@ struct input_plugin_s { #define INPUT_OPTIONAL_DATA_SPULANG 3 #define INPUT_OPTIONAL_DATA_PREVIEW 7 +/* buffer is a const char **; the string is freed by the input plugin. */ +#define INPUT_OPTIONAL_DATA_MIME_TYPE 8 +/* buffer is unused; true if the demuxer should be determined by the MIME type */ +#define INPUT_OPTIONAL_DATA_DEMUX_MIME_TYPE 9 +/* buffer is a const char **; the string is static or freed by the input plugin. */ +#define INPUT_OPTIONAL_DATA_DEMUXER 10 + #define MAX_MRL_ENTRIES 255 #define MAX_PREVIEW_SIZE 4096 @@ -333,65 +340,38 @@ struct input_plugin_s { /* * Freeing/zeroing all of entries of given mrl. */ -#define MRL_ZERO(m) { \ - if((m)) { \ - if((m)->origin) \ - free((m)->origin); \ - if((m)->mrl) \ - free((m)->mrl); \ - if((m)->link) \ - free((m)->link); \ - (m)->origin = NULL; \ - (m)->mrl = NULL; \ - (m)->link = NULL; \ - (m)->type = 0; \ - (m)->size = (off_t) 0; \ - } \ -} +#define MRL_ZERO(m) { \ + if((m)) { \ + free((m)->origin); \ + free((m)->mrl); \ + free((m)->link); \ + (m)->origin = NULL; \ + (m)->mrl = NULL; \ + (m)->link = NULL; \ + (m)->type = 0; \ + (m)->size = (off_t) 0; \ + } \ + } /* * Duplicate two mrls entries (s = source, d = destination). */ -#define MRL_DUPLICATE(s, d) { \ - _x_assert((s) != NULL); \ - _x_assert((d) != NULL); \ - \ - if((s)->origin) { \ - if((d)->origin) { \ - (d)->origin = (char *) realloc((d)->origin, strlen((s)->origin) + 1); \ - sprintf((d)->origin, "%s", (s)->origin); \ - } \ - else \ - (d)->origin = strdup((s)->origin); \ - } \ - else \ - (d)->origin = NULL; \ - \ - if((s)->mrl) { \ - if((d)->mrl) { \ - (d)->mrl = (char *) realloc((d)->mrl, strlen((s)->mrl) + 1); \ - sprintf((d)->mrl, "%s", (s)->mrl); \ - } \ - else \ - (d)->mrl = strdup((s)->mrl); \ - } \ - else \ - (d)->mrl = NULL; \ - \ - if((s)->link) { \ - if((d)->link) { \ - (d)->link = (char *) realloc((d)->link, strlen((s)->link) + 1); \ - sprintf((d)->link, "%s", (s)->link); \ - } \ - else \ - (d)->link = strdup((s)->link); \ - } \ - else \ - (d)->link = NULL; \ - \ - (d)->type = (s)->type; \ - (d)->size = (s)->size; \ -} +#define MRL_DUPLICATE(s, d) { \ + _x_assert((s) != NULL); \ + _x_assert((d) != NULL); \ + \ + free((d)->origin); \ + (d)->origin = (s)->origin ? strdup((s)->origin) : NULL; \ + \ + free((d)->mrl); \ + (d)->mrl = (s)->mrl ? strdup((s)->mrl) : NULL; \ + \ + free((d)->link); \ + (d)->link = (s)->link ? strdup((s)->link) : NULL; \ + \ + (d)->type = (s)->type; \ + (d)->size = (s)->size; \ + } /* * Duplicate two arrays of mrls (s = source, d = destination). diff --git a/src/input/input_pnm.c b/src/input/input_pnm.c index 680c5b1e8..f609695d5 100644 --- a/src/input/input_pnm.c +++ b/src/input/input_pnm.c @@ -82,10 +82,9 @@ static off_t pnm_plugin_read (input_plugin_t *this_gen, lprintf ("pnm_plugin_read: %"PRId64" bytes ...\n", len); - nbc_check_buffers (this->nbc); - n = pnm_read (this->pnm, buf, len); - this->curpos += n; + if (n >= 0) + this->curpos += n; return n; } @@ -98,6 +97,13 @@ static buf_element_t *pnm_plugin_read_block (input_plugin_t *this_gen, lprintf ("pnm_plugin_read_block: %"PRId64" bytes...\n", todo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -125,10 +131,16 @@ static off_t pnm_plugin_seek (input_plugin_t *this_gen, off_t offset, int origin if ((origin == SEEK_CUR) && (offset >= 0)) { for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - this->curpos += pnm_plugin_read (this_gen, this->scratch, BUFSIZE); + off_t n = pnm_plugin_read (this_gen, this->scratch, BUFSIZE); + if (n <= 0) + return this->curpos; + this->curpos += n; } - this->curpos += pnm_plugin_read (this_gen, this->scratch, offset); + off_t n = pnm_plugin_read (this_gen, this->scratch, offset); + if (n <= 0) + return this->curpos; + this->curpos += n; } return this->curpos; @@ -231,7 +243,7 @@ static input_plugin_t *pnm_class_get_instance (input_class_t *cls_gen, xine_stre return NULL; } - this = (pnm_input_plugin_t *) xine_xmalloc (sizeof (pnm_input_plugin_t)); + this = calloc(1, sizeof (pnm_input_plugin_t)); this->stream = stream; this->pnm = NULL; @@ -276,7 +288,7 @@ static void *init_class (xine_t *xine, void *data) { pnm_input_class_t *this; - this = (pnm_input_class_t *) xine_xmalloc (sizeof (pnm_input_class_t)); + this = calloc(1, sizeof (pnm_input_class_t)); this->xine = xine; diff --git a/src/input/input_pvr.c b/src/input/input_pvr.c index 1b8000072..a9c92e42e 100644 --- a/src/input/input_pvr.c +++ b/src/input/input_pvr.c @@ -376,10 +376,10 @@ static void pvrscr_exit (scr_plugin_t *scr) { free(this); } -static pvrscr_t* pvrscr_init (void) { +static pvrscr_t *XINE_MALLOC pvrscr_init (void) { pvrscr_t *this; - this = (pvrscr_t *) xine_xmalloc(sizeof(pvrscr_t)); + this = calloc(1, sizeof(pvrscr_t)); this->scr.interface_version = 3; this->scr.get_priority = pvrscr_get_priority; @@ -424,6 +424,9 @@ static uint32_t pvr_plugin_get_capabilities (input_plugin_t *this_gen) { static off_t pvr_plugin_read (input_plugin_t *this_gen, char *buf, off_t len) { /*pvr_input_plugin_t *this = (pvr_input_plugin_t *) this_gen;*/ + if (len < 4) + return -1; + /* FIXME: Tricking the demux_mpeg_block plugin */ buf[0] = 0; buf[1] = 0; @@ -504,34 +507,24 @@ static void pvr_adjust_realtime_speed(pvr_input_plugin_t *this, fifo_buffer_t *f } #define PVR_FILENAME "%s%08d_%08d.vob" -#define PVR_FILENAME_SIZE 1+8+1+8+4+1 static char *make_temp_name(pvr_input_plugin_t *this, int page) { - char *filename; - int size = strlen(this->tmp_prefix)+PVR_FILENAME_SIZE; - filename = malloc(size); - - snprintf(filename, size, PVR_FILENAME, this->tmp_prefix, this->session, page); + asprintf(&filename, PVR_FILENAME, this->tmp_prefix, this->session, page); return filename; } #define SAVE_BASE_FILENAME "ch%03d %02d-%02d-%04d %02d:%02d:%02d" -#define SAVE_BASE_FILENAME_SIZE 2+3+1+2+1+2+1+4+1+2+1+2+1+2+1 static char *make_base_save_name(int channel, time_t tm) { - struct tm rec_time; char *filename; - int size = SAVE_BASE_FILENAME_SIZE; - filename = malloc(size); - localtime_r(&tm, &rec_time); - snprintf(filename, size, SAVE_BASE_FILENAME, + asprintf(&filename, SAVE_BASE_FILENAME, channel, rec_time.tm_mon+1, rec_time.tm_mday, rec_time.tm_year+1900, rec_time.tm_hour, rec_time.tm_min, rec_time.tm_sec); @@ -539,16 +532,11 @@ static char *make_base_save_name(int channel, time_t tm) { } #define SAVE_FILENAME "%s%s_%04d.vob" -#define SAVE_FILENAME_SIZE 1+4+4+1 static char *make_save_name(pvr_input_plugin_t *this, char *base, int page) { - char *filename; - int size = strlen(this->save_prefix)+strlen(base)+SAVE_FILENAME_SIZE; - filename = malloc(size); - - snprintf(filename, size, SAVE_FILENAME, this->save_prefix, base, page); + asprintf(&filename, SAVE_FILENAME, this->save_prefix, base, page); return filename; } @@ -1219,6 +1207,14 @@ static buf_element_t *pvr_plugin_read_block (input_plugin_t *this_gen, fifo_buff return NULL; } + buf = fifo->buffer_pool_alloc (fifo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer(buf); + return NULL; + } + if( this->scr_tunning == -2 ) speed = this->speed_before_pause; @@ -1242,7 +1238,6 @@ static buf_element_t *pvr_plugin_read_block (input_plugin_t *this_gen, fifo_buff pvr_event_handler(this); - buf = fifo->buffer_pool_alloc (fifo); buf->content = buf->mem; pthread_mutex_lock(&this->lock); @@ -1480,7 +1475,7 @@ static input_plugin_t *pvr_class_get_instance (input_class_t *cls_gen, xine_stre mrl = strdup(data); aux = &mrl[5]; - this = (pvr_input_plugin_t *) xine_xmalloc (sizeof (pvr_input_plugin_t)); + this = calloc(1, sizeof (pvr_input_plugin_t)); this->class = cls; this->stream = stream; this->dev_fd = -1; @@ -1564,7 +1559,7 @@ static void *init_plugin (xine_t *xine, void *data) { pvr_input_class_t *this; - this = (pvr_input_class_t *) xine_xmalloc (sizeof (pvr_input_class_t)); + this = calloc(1, sizeof (pvr_input_class_t)); this->xine = xine; this->config = xine->config; diff --git a/src/input/input_rtp.c b/src/input/input_rtp.c index 25498f289..90bae6670 100644 --- a/src/input/input_rtp.c +++ b/src/input/input_rtp.c @@ -453,6 +453,9 @@ static off_t rtp_plugin_read (input_plugin_t *this_gen, struct timespec timeout; off_t copied = 0; + if (length < 0) + return -1; + while(length > 0) { off_t n; @@ -524,6 +527,12 @@ static buf_element_t *rtp_plugin_read_block (input_plugin_t *this_gen, buf_element_t *buf = fifo->buffer_pool_alloc (fifo); int total_bytes; + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -609,11 +618,14 @@ static int rtp_plugin_get_optional_data (input_plugin_t *this_gen, if (data_type == INPUT_OPTIONAL_DATA_PREVIEW) { if (!this->preview_read_done) { this->preview_size = rtp_plugin_read(this_gen, this->preview, MAX_PREVIEW_SIZE); + if (this->preview_size < 0) + this->preview_size = 0; lprintf("Preview data length = %d\n", this->preview_size); this->preview_read_done = 1; } - memcpy(data, this->preview, this->preview_size); + if (this->preview_size) + memcpy(data, this->preview, this->preview_size); return this->preview_size; } else { @@ -717,7 +729,7 @@ static input_plugin_t *rtp_class_get_instance (input_class_t *cls_gen, } } - this = (rtp_input_plugin_t *) xine_xmalloc(sizeof(rtp_input_plugin_t)); + this = calloc(1, sizeof(rtp_input_plugin_t)); this->stream = stream; this->mrl = mrl; this->filename = filename; @@ -784,7 +796,7 @@ static void *init_class (xine_t *xine, void *data) { rtp_input_class_t *this; - this = (rtp_input_class_t *) xine_xmalloc(sizeof(rtp_input_class_t)); + this = calloc(1, sizeof(rtp_input_class_t)); this->config = xine->config; this->xine = xine; diff --git a/src/input/input_rtsp.c b/src/input/input_rtsp.c index 2895edf5d..fad395e0b 100644 --- a/src/input/input_rtsp.c +++ b/src/input/input_rtsp.c @@ -83,10 +83,9 @@ static off_t rtsp_plugin_read (input_plugin_t *this_gen, lprintf ("rtsp_plugin_read: %"PRId64" bytes ...\n", len); - nbc_check_buffers (this->nbc); - n = rtsp_session_read (this->rtsp, buf, len); - this->curpos += n; + if (n > 0) + this->curpos += n; return n; } @@ -99,6 +98,13 @@ static buf_element_t *rtsp_plugin_read_block (input_plugin_t *this_gen, lprintf ("rtsp_plugin_read_block: %"PRId64" bytes...\n", todo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -125,10 +131,16 @@ static off_t rtsp_plugin_seek (input_plugin_t *this_gen, off_t offset, int origi if ((origin == SEEK_CUR) && (offset >= 0)) { for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - this->curpos += rtsp_plugin_read (this_gen, this->scratch, BUFSIZE); + off_t n = rtsp_plugin_read (this_gen, this->scratch, BUFSIZE); + if (n <= 0) + return this->curpos; + this->curpos += n; } - this->curpos += rtsp_plugin_read (this_gen, this->scratch, offset); + off_t n = rtsp_plugin_read (this_gen, this->scratch, offset); + if (n <= 0) + return this->curpos; + this->curpos += n; } return this->curpos; @@ -246,7 +258,7 @@ static input_plugin_t *rtsp_class_get_instance (input_class_t *cls_gen, xine_str if (strncasecmp (mrl, "rtsp://", 6)) return NULL; - this = (rtsp_input_plugin_t *) xine_xmalloc (sizeof (rtsp_input_plugin_t)); + this = calloc(1, sizeof (rtsp_input_plugin_t)); this->stream = stream; this->rtsp = NULL; @@ -254,8 +266,7 @@ static input_plugin_t *rtsp_class_get_instance (input_class_t *cls_gen, xine_str /* since we handle only real streams yet, we can savely add * an .rm extention to force handling by demux_real. */ - this->public_mrl = xine_xmalloc (sizeof (char)*(strlen(this->mrl)+10)); - sprintf(this->public_mrl, "%s.rm", this->mrl); + asprintf(&this->public_mrl, "%s.rm", this->mrl); this->nbc = nbc_init (stream); @@ -298,7 +309,7 @@ static void *init_class (xine_t *xine, void *data) { rtsp_input_class_t *this; - this = (rtsp_input_class_t *) xine_xmalloc (sizeof (rtsp_input_class_t)); + this = calloc(1, sizeof (rtsp_input_class_t)); this->xine = xine; diff --git a/src/input/input_smb.c b/src/input/input_smb.c index 7da9c1454..e49eaa889 100644 --- a/src/input/input_smb.c +++ b/src/input/input_smb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 the xine project + * Copyright (C) 2008 the xine project * * This file is part of xine, a free video player. * @@ -51,7 +51,7 @@ typedef struct { xine_stream_t *stream; /* File */ - char *mrl; + const char *mrl; int fd; } smb_input_t; @@ -69,6 +69,8 @@ smb_plugin_read (input_plugin_t *this_gen, char *buf, off_t len) smb_input_t *this = (smb_input_t *) this_gen; off_t n, num_bytes; + if (len < 0) + return -1; num_bytes = 0; while (num_bytes < len) @@ -89,6 +91,13 @@ smb_plugin_read_block (input_plugin_t *this_gen, fifo_buffer_t *fifo, off_t total_bytes; buf_element_t *buf = fifo->buffer_pool_alloc (fifo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -138,7 +147,7 @@ smb_plugin_get_length (input_plugin_t *this_gen) return st.st_size; } -static char* +static const char* smb_plugin_get_mrl (input_plugin_t *this_gen) { smb_input_t *this = (smb_input_t *) this_gen; @@ -150,7 +159,7 @@ static uint32_t smb_plugin_get_blocksize (input_plugin_t *this_gen) { return 0; } -static char +static const char *smb_class_get_description (input_class_t *this_gen) { return _("CIFS/SMB input plugin based on libsmbclient"); @@ -256,8 +265,8 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, } if ((dir = smbc_opendir(current_path_smb)) >= 0){ - xine_mrl_t *dir_files = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t) * MAXFILES); - xine_mrl_t *norm_files = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t) * MAXFILES); + xine_mrl_t *dir_files = (xine_mrl_t *) calloc(MAXFILES, sizeof(xine_mrl_t)); + xine_mrl_t *norm_files = (xine_mrl_t *) calloc(MAXFILES, sizeof(xine_mrl_t)); int num_dir_files=0; int num_norm_files=0; while ((pdirent = smbc_readdir(dir)) != NULL){ @@ -265,9 +274,7 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].origin = strdup(current_path); - dir_files[num_dir_files].mrl = (char *) xine_xmalloc( - strlen(current_path) + 1 + strlen(pdirent->name) + 1); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", current_path, pdirent->name); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", current_path, pdirent->name); dir_files[num_dir_files].size = pdirent->dirlen; num_dir_files ++; }else if (pdirent->smbc_type == SMBC_SERVER){ @@ -275,17 +282,14 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].origin = strdup("smb:/"); - dir_files[num_dir_files].mrl = (char *) xine_xmalloc(strlen("smb:/") + 4); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", "smb:/", ".."); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", "smb:/", ".."); dir_files[num_dir_files].size = pdirent->dirlen; num_dir_files ++; } dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].origin = strdup("smb:/"); - dir_files[num_dir_files].mrl = - (char *) xine_xmalloc(strlen("smb:/") + 1 + strlen(pdirent->name) + 1); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", "smb:/", pdirent->name); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", "smb:/", pdirent->name); dir_files[num_dir_files].size = pdirent->dirlen; num_dir_files ++; } else if (pdirent->smbc_type == SMBC_FILE_SHARE){ @@ -293,9 +297,7 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].origin = strdup(current_path); - dir_files[num_dir_files].mrl = (char *) xine_xmalloc( - strlen(current_path) + 3); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", current_path, ".."); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", current_path, ".."); dir_files[num_dir_files].type |= mrl_file_directory; dir_files[num_dir_files].size = pdirent->dirlen; num_dir_files ++; @@ -304,9 +306,7 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].origin = strdup(current_path); - dir_files[num_dir_files].mrl = (char *) xine_xmalloc( - strlen(current_path) + 1 + strlen(pdirent->name) + 1); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", current_path, pdirent->name); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", current_path, pdirent->name); dir_files[num_dir_files].size = pdirent->dirlen; num_dir_files ++; } @@ -314,18 +314,14 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].origin = strdup(current_path); - dir_files[num_dir_files].mrl = - (char *) xine_xmalloc(strlen(current_path) + 1 + strlen(pdirent->name) + 1); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", current_path, pdirent->name); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", current_path, pdirent->name); dir_files[num_dir_files].size = pdirent->dirlen; num_dir_files ++; }else if (pdirent->smbc_type == SMBC_FILE){ norm_files[num_norm_files].link = NULL; norm_files[num_norm_files].type = mrl_file | mrl_file_normal; norm_files[num_norm_files].origin = strdup(current_path); - norm_files[num_norm_files].mrl = - (char *) xine_xmalloc(strlen(current_path) + 1 + strlen(pdirent->name) + 1); - sprintf(norm_files[num_norm_files].mrl, "%s/%s", current_path, pdirent->name); + asprintf(&(norm_files[num_norm_files].mrl), "%s/%s", current_path, pdirent->name); norm_files[num_norm_files].size = pdirent->dirlen; num_norm_files ++; } @@ -335,8 +331,7 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, if (num_dir_files == 0) { dir_files[num_dir_files].link = NULL; dir_files[num_dir_files].origin = strdup(current_path); - dir_files[num_dir_files].mrl = (char *) xine_xmalloc(strlen(current_path) + 4); - sprintf(dir_files[num_dir_files].mrl, "%s/%s", current_path, ".."); + asprintf(&(dir_files[num_dir_files].mrl), "%s/%s", current_path, ".."); dir_files[num_dir_files].type = mrl_file | mrl_file_directory; dir_files[num_dir_files].size = 0; num_dir_files ++; @@ -359,7 +354,7 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, ++this->mrls_allocated_entries; this->mrls = realloc(this->mrls, (this->mrls_allocated_entries+1) * sizeof(xine_mrl_t*)); - this->mrls[num_files] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[num_files] = calloc(1, sizeof(xine_mrl_t)); }else memset(this->mrls[num_files], 0, sizeof(xine_mrl_t)); @@ -376,7 +371,7 @@ static xine_mrl_t **smb_class_get_dir (input_class_t *this_gen, ++this->mrls_allocated_entries; this->mrls = realloc(this->mrls, (this->mrls_allocated_entries+1) * sizeof(xine_mrl_t*)); - this->mrls[num_files] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[num_files] = calloc(1, sizeof(xine_mrl_t)); }else memset(this->mrls[num_files], 0, sizeof(xine_mrl_t)); @@ -437,7 +432,7 @@ smb_plugin_dispose (input_plugin_t *this_gen ) if (this->fd>=0) smbc_close(this->fd); if (this->mrl) - free (this->mrl); + free ((char *)this->mrl); free (this); } @@ -475,7 +470,7 @@ smb_class_get_instance (input_class_t *class_gen, xine_stream_t *stream, if (strncmp (mrl, "smb://",6)) return NULL; - this = (smb_input_t *)xine_xmalloc(sizeof(smb_input_t)); + this = calloc(1, sizeof(smb_input_t)); this->stream = stream; this->mrl = strdup (mrl); this->fd = -1; @@ -514,7 +509,7 @@ static void if (smbc_init(smb_auth,(xine->verbosity >= XINE_VERBOSITY_DEBUG))) goto _exit_error; - this = (smb_input_class_t *) xine_xmalloc(sizeof(smb_input_class_t)); + this = calloc(1, sizeof(smb_input_class_t)); this->xine = xine; this->input_class.get_instance = smb_class_get_instance; diff --git a/src/input/input_stdin_fifo.c b/src/input/input_stdin_fifo.c index 465e9c00b..64b8d748c 100644 --- a/src/input/input_stdin_fifo.c +++ b/src/input/input_stdin_fifo.c @@ -85,6 +85,8 @@ static off_t stdin_plugin_read (input_plugin_t *this_gen, off_t n, total; lprintf ("reading %"PRId64" bytes...\n", len); + if (len < 0) + return -1; total=0; if (this->curpos < this->preview_size) { @@ -121,6 +123,13 @@ static buf_element_t *stdin_plugin_read_block (input_plugin_t *this_gen, fifo_bu /* stdin_input_plugin_t *this = (stdin_input_plugin_t *) this_gen; */ buf_element_t *buf = fifo->buffer_pool_alloc (fifo); + if (todo > buf->max_size) + todo = buf->max_size; + if (todo < 0) { + buf->free_buffer (buf); + return NULL; + } + buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; @@ -146,7 +155,7 @@ static off_t stdin_plugin_seek (input_plugin_t *this_gen, off_t offset, int orig if ((origin == SEEK_CUR) && (offset >= 0)) { for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - if( !this_gen->read (this_gen, this->seek_buf, BUFSIZE) ) + if( this_gen->read (this_gen, this->seek_buf, BUFSIZE) <= 0 ) return this->curpos; } @@ -168,7 +177,7 @@ static off_t stdin_plugin_seek (input_plugin_t *this_gen, off_t offset, int orig offset -= this->curpos; for (;((int)offset) - BUFSIZE > 0; offset -= BUFSIZE) { - if( !this_gen->read (this_gen, this->seek_buf, BUFSIZE) ) + if( this_gen->read (this_gen, this->seek_buf, BUFSIZE) <= 0 ) return this->curpos; } @@ -270,6 +279,8 @@ static int stdin_plugin_open (input_plugin_t *this_gen ) { this->preview_size = stdin_plugin_read (&this->input_plugin, this->preview, MAX_PREVIEW_SIZE); + if (this->preview_size < 0) + this->preview_size = 0; this->curpos = 0; return 1; @@ -311,7 +322,7 @@ static input_plugin_t *stdin_class_get_instance (input_class_t *class_gen, * => create plugin instance */ - this = (stdin_input_plugin_t *) xine_xmalloc(sizeof(stdin_input_plugin_t)); + this = calloc(1, sizeof(stdin_input_plugin_t)); this->stream = stream; this->curpos = 0; @@ -362,7 +373,7 @@ static void *init_class (xine_t *xine, void *data) { stdin_input_class_t *this; - this = (stdin_input_class_t *) xine_xmalloc (sizeof (stdin_input_class_t)); + this = calloc(1, sizeof (stdin_input_class_t)); this->xine = xine; diff --git a/src/input/input_v4l.c b/src/input/input_v4l.c index b43a2684a..3a020bd69 100644 --- a/src/input/input_v4l.c +++ b/src/input/input_v4l.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2004 the xine project + * Copyright (C) 2003-2008 the xine project * Copyright (C) 2003 J.Asselman <j.asselman@itsec-ps.nl> * * This file is part of xine, a free video player. @@ -91,13 +91,15 @@ static const resolution_t resolutions[] = { }; #define NUM_RESOLUTIONS (sizeof(resolutions)/sizeof(resolutions[0])) -#define RADIO_DEV "/dev/v4l/radio0" -#define VIDEO_DEV "/dev/v4l/video0" - -#if !defined(NDELAY) && defined(O_NDELAY) -#define FNDELAY O_NDELAY +#define RADIO_DEV "/dev/radio0" +#define VIDEO_DEV "/dev/video0" +#ifdef HAVE_ALSA +#define AUDIO_DEV "plughw:0,0" #endif +static char *tv_standard_names[] = { "AUTO", "PAL", "NTSC", "SECAM", "OLD", NULL }; +static int tv_standard_values[] = { VIDEO_MODE_AUTO, VIDEO_MODE_PAL, VIDEO_MODE_NTSC, VIDEO_MODE_SECAM, -1 }; + typedef struct pvrscr_s pvrscr_t; typedef struct { @@ -117,6 +119,10 @@ typedef struct { int old_zoomx; int old_zoomy; int audio_only; + + buf_element_t *frames_base; + void *audio_content_base; + void *video_content_base; /* Audio */ buf_element_t *aud_frames; @@ -342,11 +348,11 @@ static void pvrscr_exit (scr_plugin_t *scr) free(this); } -static pvrscr_t* pvrscr_init (void) +static pvrscr_t *XINE_MALLOC pvrscr_init (void) { pvrscr_t *this; - this = (pvrscr_t *) xine_xmalloc(sizeof(pvrscr_t)); + this = calloc(1, sizeof(pvrscr_t)); this->scr.interface_version = 3; this->scr.get_priority = pvrscr_get_priority; @@ -539,6 +545,12 @@ static int set_frequency(v4l_input_plugin_t *this, unsigned long frequency) fd = this->radio_fd; if (frequency != 0) { + /* FIXME: Don't assume tuner 0 ? */ + this->tuner = 0; + ret = ioctl(fd, VIDIOCSTUNER, &this->tuner); + lprintf("(%d) Response on set tuner to %d\n", ret, this->tuner); + this->video_tuner.tuner = this->tuner; + if (this->video_tuner.flags & VIDEO_TUNER_LOW) { this->calc_frequency = frequency * 16; } else { @@ -624,6 +636,7 @@ static int search_by_channel(v4l_input_plugin_t *this, char *input_source) { int ret = 0; int fd = 0; + cfg_entry_t *tv_standard_entry; lprintf("input_source: %s\n", input_source); @@ -659,20 +672,19 @@ static int search_by_channel(v4l_input_plugin_t *this, char *input_source) return -1; } + tv_standard_entry = this->stream->xine->config->lookup_entry(this->stream->xine->config, + "media.video4linux.tv_standard"); this->tuner_name = input_source; - ret = ioctl(fd, VIDIOCSCHAN, &this->input); + if (tv_standard_entry->num_value != 0) { + this->video_channel.norm = tv_standard_values[ tv_standard_entry->num_value ]; + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + "input_v4l: TV Standard configured as STD %s (%d)\n", + tv_standard_names[ tv_standard_entry->num_value ], this->video_channel.norm ); + ret = ioctl(fd, VIDIOCSCHAN, &this->video_channel); + } else + ret = ioctl(fd, VIDIOCSCHAN, &this->input); lprintf("(%d) Set channel to %d\n", ret, this->input); - - /* FIXME: Don't assume tuner 0 ? */ - - this->tuner = 0; - - ret = ioctl(fd, VIDIOCSTUNER, &this->tuner); - - lprintf("(%d) Response on set tuner to %d\n", ret, this->tuner); - - this->video_tuner.tuner = this->tuner; } else { xprintf(this->stream->xine, XINE_VERBOSITY_LOG, "input_v4l: Not setting video source. No source given\n"); @@ -708,23 +720,50 @@ static int search_by_channel(v4l_input_plugin_t *this, char *input_source) return 1; } -static void allocate_audio_frames(v4l_input_plugin_t *this) +static void allocate_frames(v4l_input_plugin_t *this, unsigned dovideo) { + const size_t framescount = dovideo ? 2*NUM_FRAMES : NUM_FRAMES; + + /* Allocate a single memory area for both audio and video frames */ + buf_element_t *frames = this->frames_base = + calloc(framescount, sizeof(buf_element_t)); + extra_info_t *infos = + calloc(framescount, sizeof(extra_info_t)); + int i; - + + uint8_t *audio_content = this->audio_content_base = + calloc(NUM_FRAMES, this->periodsize); + + /* Set up audio frames */ for (i = 0; i < NUM_FRAMES; i++) { - buf_element_t *frame; - /* Audio frame */ - frame = xine_xmalloc(sizeof(buf_element_t)); - - frame->content = xine_xmalloc(this->periodsize); - frame->type = BUF_AUDIO_LPCM_LE; - frame->source = this; - frame->free_buffer = store_aud_frame; - frame->extra_info = xine_xmalloc(sizeof(extra_info_t)); - - store_aud_frame(frame); + frames[i].content = audio_content; + frames[i].type = BUF_AUDIO_LPCM_LE; + frames[i].source = this; + frames[i].free_buffer = store_aud_frame; + frames[i].extra_info = &infos[i]; + + audio_content += this->periodsize; + store_aud_frame(&frames[i]); + } + + if ( dovideo ) { + uint8_t *video_content = this->video_content_base = + calloc(NUM_FRAMES, this->frame_size); + + /* Set up video frames */ + for (i = NUM_FRAMES; i < 2*NUM_FRAMES; i++) { + /* Video frame */ + frames[i].content = video_content; + frames[i].type = this->frame_format; + frames[i].source = this; + frames[i].free_buffer = store_vid_frame; + frames[i].extra_info = &infos[i]; + + video_content += this->frame_size; + store_vid_frame(&frames[i]); + } } } @@ -775,7 +814,7 @@ static int open_radio_capture_device(v4l_input_plugin_t *this) /* Pre-allocate some frames for audio so it doesn't have to be done during * capture */ - allocate_audio_frames(this); + allocate_frames(this, 0); this->audio_only = 1; @@ -801,7 +840,7 @@ static int open_video_capture_device(v4l_input_plugin_t *this) { int found = 0; int tuner_found = 0; - int i, ret; + int ret; unsigned int j; cfg_entry_t *entry; @@ -845,10 +884,6 @@ static int open_video_capture_device(v4l_input_plugin_t *this) _x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_AUDIO, 1); _x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_VIDEO, 1); - /* Pre-allocate some frames for audio and video so it doesn't have to be - * done during capture */ - allocate_audio_frames(this); - /* Unmute audio off video capture device */ unmute_audio(this); @@ -951,27 +986,17 @@ static int open_video_capture_device(v4l_input_plugin_t *this) break; } - for (i = 0; i < NUM_FRAMES; i++) { - buf_element_t *frame; - - frame = xine_xmalloc (sizeof (buf_element_t)); - - frame->content = xine_xmalloc (this->frame_size); - frame->type = this->frame_format; - frame->source = this; - frame->free_buffer = store_vid_frame; - frame->extra_info = xine_xmalloc(sizeof(extra_info_t)); - - store_vid_frame(frame); - } - /* Strip the vbi / sync signal from the image by zooming in */ this->old_zoomx = xine_get_param(this->stream, XINE_PARAM_VO_ZOOM_X); this->old_zoomy = xine_get_param(this->stream, XINE_PARAM_VO_ZOOM_Y); xine_set_param(this->stream, XINE_PARAM_VO_ZOOM_X, 103); xine_set_param(this->stream, XINE_PARAM_VO_ZOOM_Y, 103); - + + /* Pre-allocate some frames for audio and video so it doesn't have to be + * done during capture */ + allocate_frames(this, 1); + /* If we made it here, everything went ok */ this->audio_only = 0; if (tuner_found) @@ -1566,52 +1591,19 @@ static void v4l_plugin_dispose (input_plugin_t *this_gen) { if (this->event_queue) xine_event_dispose_queue (this->event_queue); - - lprintf("Freeing allocated audio frames"); - if (this->aud_frames) { - buf_element_t *cur_frame = this->aud_frames; - - while (cur_frame != NULL) { - buf_element_t *next_frame = cur_frame->next; -#ifdef LOG - printf("."); -#endif - if (cur_frame->content) - free(cur_frame->content); - - if (cur_frame->extra_info) - free(cur_frame->extra_info); - - free(cur_frame); - cur_frame = next_frame; - } - } -#ifdef LOG - printf("\n"); -#endif + /* All the frames, both video and audio, are allocated in a single + memory area pointed by the frames_base pointer. The content of + the frames is divided in two areas, one pointed by + audio_content_base and the other by video_content_base. The + extra_info structures are all allocated in the first frame + data. */ + free(this->audio_content_base); + free(this->video_content_base); + if (this->frames_base) + free(this->frames_base->extra_info); + free(this->frames_base); - - lprintf("Freeing allocated video frames"); - if (this->vid_frames) { - buf_element_t *cur_frame = this->vid_frames; - - while (cur_frame != NULL) { - buf_element_t *next_frame = cur_frame->next; -#ifdef LOG - printf("."); -#endif - - if (cur_frame->content) - free(cur_frame->content); - - if (cur_frame->extra_info) - free(cur_frame->extra_info); - - free(cur_frame); - cur_frame = next_frame; - } - } #ifdef LOG printf("\n"); #endif @@ -1701,6 +1693,9 @@ static input_plugin_t *v4l_class_get_instance (input_class_t *cls_gen, { /* v4l_input_class_t *cls = (v4l_input_class_t *) cls_gen; */ v4l_input_plugin_t *this; +#ifdef HAVE_ALSA + cfg_entry_t *entry; +#endif char *mrl = strdup(data); /* Example mrl: v4l:/Television/62500 */ @@ -1709,7 +1704,7 @@ static input_plugin_t *v4l_class_get_instance (input_class_t *cls_gen, return NULL; } - this = (v4l_input_plugin_t *) xine_xmalloc (sizeof (v4l_input_plugin_t)); + this = calloc(1, sizeof (v4l_input_plugin_t)); extract_mrl(this, mrl); @@ -1721,13 +1716,14 @@ static input_plugin_t *v4l_class_get_instance (input_class_t *cls_gen, this->event_queue = NULL; this->scr = NULL; #ifdef HAVE_ALSA - this->pcm_name = NULL; this->pcm_data = NULL; this->pcm_hwparams = NULL; /* Audio */ this->pcm_stream = SND_PCM_STREAM_CAPTURE; - this->pcm_name = strdup("plughw:0,0"); + entry = this->stream->xine->config->lookup_entry(this->stream->xine->config, + "media.video4linux.audio_device"); + this->pcm_name = strdup (entry->str_value); this->audio_capture = 1; #endif this->rate = 44100; @@ -1870,11 +1866,11 @@ static input_plugin_t *v4l_class_get_radio_instance (input_class_t *cls_gen, * v4l input plugin class stuff */ -static char *v4l_class_get_video_description (input_class_t *this_gen) { +static const char *v4l_class_get_video_description (input_class_t *this_gen) { return _("v4l tv input plugin"); } -static char *v4l_class_get_radio_description (input_class_t *this_gen) { +static const char *v4l_class_get_radio_description (input_class_t *this_gen) { return _("v4l radio input plugin"); } @@ -1893,7 +1889,7 @@ static void *init_video_class (xine_t *xine, void *data) v4l_input_class_t *this; config_values_t *config = xine->config; - this = (v4l_input_class_t *) xine_xmalloc (sizeof (v4l_input_class_t)); + this = calloc(1, sizeof (v4l_input_class_t)); this->xine = xine; @@ -1910,7 +1906,19 @@ static void *init_video_class (xine_t *xine, void *data) _("v4l video device"), _("The path to your Video4Linux video device."), 10, NULL, NULL); - +#ifdef HAVE_ALSA + config->register_filename (config, "media.video4linux.audio_device", + AUDIO_DEV, 0, + _("v4l ALSA audio input device"), + _("The name of the audio device which corresponds " + "to your Video4Linux video device."), + 10, NULL, NULL); +#endif + config->register_enum (config, "media.video4linux.tv_standard", 4 /* old */, + tv_standard_names, _("v4l TV standard"), + _("Selects the TV standard of the input signals. " + "Either: AUTO, PAL, NTSC or SECAM. "), 20, NULL, NULL); + return this; } @@ -1919,7 +1927,7 @@ static void *init_radio_class (xine_t *xine, void *data) v4l_input_class_t *this; config_values_t *config = xine->config; - this = (v4l_input_class_t *) xine_xmalloc (sizeof (v4l_input_class_t)); + this = calloc(1, sizeof (v4l_input_class_t)); this->xine = xine; diff --git a/src/input/input_vcd.c b/src/input/input_vcd.c index 007fa5946..c99f57f09 100644 --- a/src/input/input_vcd.c +++ b/src/input/input_vcd.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2006 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -84,7 +84,7 @@ typedef struct { const char *device; - char *filelist[100]; + char **filelist; int mrls_allocated_entries; xine_mrl_t **mrls; @@ -92,7 +92,7 @@ typedef struct { #if defined (__linux__) || defined(__sun) struct cdrom_tochdr tochdr; struct cdrom_tocentry tocent[100]; -#elif defined (__FreeBSD_kernel__) +#elif defined (__FreeBSD_kernel__) || defined (__OpenBSD__) struct ioc_toc_header tochdr; struct cd_toc_entry *tocent; off_t cur_sec; @@ -117,7 +117,7 @@ typedef struct { int cur_track; -#if defined (__linux__) || defined(__sun) || defined (__FreeBSD_kernel__) +#if defined (__linux__) || defined(__sun) || defined (__FreeBSD_kernel__) || defined (__OpenBSD__) uint8_t cur_min, cur_sec, cur_frame; #endif @@ -177,7 +177,7 @@ static int input_vcd_read_toc (vcd_input_class_t *this, int fd) { return 0; } -#elif defined (__FreeBSD_kernel__) +#elif defined (__FreeBSD_kernel__) || defined (__OpenBSD__) static int input_vcd_read_toc (vcd_input_class_t *this, int fd) { struct ioc_read_toc_entry te; @@ -393,7 +393,7 @@ static off_t vcd_plugin_read (input_plugin_t *this_gen, memcpy (buf, data.data, VCDSECTORSIZE); /* FIXME */ return VCDSECTORSIZE; } -#elif defined (__FreeBSD_kernel__) +#elif defined (__FreeBSD_kernel__) || defined (__OpenBSD__) static off_t vcd_plugin_read (input_plugin_t *this_gen, char *buf, off_t nlen) { vcd_input_plugin_t *this = (vcd_input_plugin_t *) this_gen; @@ -531,7 +531,7 @@ static buf_element_t *vcd_plugin_read_block (input_plugin_t *this_gen, memcpy (buf->mem, data.data, VCDSECTORSIZE); /* FIXME */ return buf; } -#elif defined (__FreeBSD_kernel__) +#elif defined (__FreeBSD_kernel__) || defined (__OpenBSD__) static buf_element_t *vcd_plugin_read_block (input_plugin_t *this_gen, fifo_buffer_t *fifo, off_t nlen) { @@ -690,7 +690,7 @@ static off_t vcd_plugin_seek (input_plugin_t *this_gen, return offset ; /* FIXME */ } -#elif defined (__FreeBSD_kernel__) +#elif defined (__FreeBSD_kernel__) || defined (__OpenBSD__) static off_t vcd_plugin_seek (input_plugin_t *this_gen, off_t offset, int origin) { @@ -764,7 +764,7 @@ static off_t vcd_plugin_get_length (input_plugin_t *this_gen) { return (off_t) 0; } -#elif defined (__FreeBSD_kernel__) +#elif defined (__FreeBSD_kernel__) || defined (__OpenBSD__) static off_t vcd_plugin_get_length (input_plugin_t *this_gen) { vcd_input_plugin_t *this = (vcd_input_plugin_t *) this_gen; off_t len ; @@ -859,6 +859,10 @@ static int vcd_plugin_open (input_plugin_t *this_gen) { this->cur_min = this->cls->tocent[this->cur_track].cdte_addr.msf.minute; this->cur_sec = this->cls->tocent[this->cur_track].cdte_addr.msf.second; this->cur_frame = this->cls->tocent[this->cur_track].cdte_addr.msf.frame; +#elif defined (__OpenBSD__) + this->cur_min = this->cls->tocent[this->cur_track + 1 - this->cls->tochdr.starting_track].addr.msf.minute; + this->cur_sec = this->cls->tocent[this->cur_track + 1 - this->cls->tochdr.starting_track].addr.msf.second; + this->cur_frame = this->cls->tocent[this->cur_track + 1 - this->cls->tochdr.starting_track].addr.msf.frame; #elif defined (__FreeBSD_kernel__) { int bsize = 2352; @@ -889,7 +893,7 @@ static input_plugin_t *vcd_class_get_instance (input_class_t *cls_gen, xine_stre return 0; } - this = (vcd_input_plugin_t *) xine_xmalloc(sizeof(vcd_input_plugin_t)); + this = calloc(1, sizeof(vcd_input_plugin_t)); this->stream = stream; this->mrl = mrl; @@ -924,17 +928,26 @@ static const char *vcd_class_get_identifier (input_class_t *this_gen) { return "vcdo"; } +static void vcd_filelist_dispose(vcd_input_class_t *this) { + if ( this->filelist == NULL ) return; + + char **entry = this->filelist; + + while(*(entry)) { + free(*(entry++)); + } + + free(this->filelist); +} + static void vcd_class_dispose (input_class_t *this_gen) { vcd_input_class_t *this = (vcd_input_class_t *) this_gen; - int i; config_values_t *config = this->xine->config; config->unregister_callback(config, "media.vcd.device"); - for (i = 0; i < 100; i++) - free (this->filelist[i]); - + vcd_filelist_dispose(this); free (this->mrls); free (this); } @@ -982,33 +995,19 @@ static xine_mrl_t **vcd_class_get_dir (input_class_t *this_gen, const char *file /* printf ("%d tracks\n", this->total_tracks); */ for (i=1; i<this->total_tracks; i++) { /* FIXME: check if track 0 contains valid data */ - char mrl[1024]; - - memset(&mrl, 0, sizeof (mrl)); - sprintf(mrl, "vcdo:/%d",i); - if((i-1) >= this->mrls_allocated_entries) { ++this->mrls_allocated_entries; /* note: 1 extra pointer for terminating NULL */ this->mrls = realloc(this->mrls, (this->mrls_allocated_entries+1) * sizeof(xine_mrl_t*)); - this->mrls[(i-1)] = (xine_mrl_t *) xine_xmalloc(sizeof(xine_mrl_t)); + this->mrls[(i-1)] = calloc(1, sizeof(xine_mrl_t)); } else { memset(this->mrls[(i-1)], 0, sizeof(xine_mrl_t)); } - if(this->mrls[(i-1)]->mrl) { - this->mrls[(i-1)]->mrl = (char *) - realloc(this->mrls[(i-1)]->mrl, strlen(mrl) + 1); - } - else { - this->mrls[(i-1)]->mrl = (char *) xine_xmalloc(strlen(mrl) + 1); - } - - this->mrls[i-1]->origin = NULL; - sprintf(this->mrls[i-1]->mrl, "%s", mrl); - this->mrls[i-1]->link = NULL; - this->mrls[i-1]->type = (0 | mrl_vcd); + asprintf(&(this->mrls[i-1]->mrl), "vcdo:/%d", i); + + this->mrls[i-1]->type = mrl_vcd; /* hack */ this->mrls[i-1]->size = vcd_plugin_get_length ((input_plugin_t *) this); @@ -1055,20 +1054,15 @@ static char ** vcd_class_get_autoplay_list (input_class_t *this_gen, int *num_fi fd = -1; *num_files = this->total_tracks - 1; - - /* printf ("%d tracks\n", this->total_tracks); */ - - for (i = 1; i < this->total_tracks; i++) { /* FIXME: check if track 0 contains valid data */ - if(this->filelist[i - 1] == NULL) - this->filelist[i - 1] = (char *) realloc(this->filelist[i - 1], sizeof(char *) * 256); + vcd_filelist_dispose(this); + this->filelist = calloc(this->total_tracks+1, sizeof(char*)); - sprintf (this->filelist[i - 1], "vcdo:/%d",i); - /* printf ("list[%d] : %d %s\n", i, this->filelist[i-1], this->filelist[i-1]); */ - } + /* FIXME: check if track 0 contains valid data */ + for (i = 1; i < this->total_tracks; i++) + asprintf(&this->filelist[i-1], "vcdo:/%d", i); - this->filelist[i - 1] = (char *) realloc(this->filelist[i-1], sizeof(char *)); - this->filelist[i - 1] = NULL; + /* printf ("%d tracks\n", this->total_tracks); */ return this->filelist; } @@ -1077,9 +1071,8 @@ static void *init_class (xine_t *xine, void *data) { vcd_input_class_t *this; config_values_t *config = xine->config; - int i; - this = (vcd_input_class_t *) xine_xmalloc (sizeof (vcd_input_class_t)); + this = calloc(1, sizeof (vcd_input_class_t)); this->xine = xine; @@ -1097,13 +1090,9 @@ static void *init_class (xine_t *xine, void *data) { "you intend to play your VideoCDs with."), 10, device_change_cb, (void *)this); - this->mrls = (xine_mrl_t **) xine_xmalloc(sizeof(xine_mrl_t*)); + this->mrls = calloc(1, sizeof(xine_mrl_t*)); this->mrls_allocated_entries = 0; - for (i = 0; i < 100; i++) { - this->filelist[i] = (char *) xine_xmalloc(sizeof(char *) * 256); - } - return this; } diff --git a/src/input/libdvdnav/bswap.h b/src/input/libdvdnav/bswap.h index 2a2d222fe..23f0251d6 100644 --- a/src/input/libdvdnav/bswap.h +++ b/src/input/libdvdnav/bswap.h @@ -20,7 +20,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <config.h> +#include "config.h" #if defined(WORDS_BIGENDIAN) /* All bigendian systems are fine, just ignore the swaps. */ diff --git a/src/input/libdvdnav/diff_against_cvs.patch b/src/input/libdvdnav/diff_against_cvs.patch index 202474fef..6df704e2a 100644 --- a/src/input/libdvdnav/diff_against_cvs.patch +++ b/src/input/libdvdnav/diff_against_cvs.patch @@ -323,7 +323,7 @@ diff -u -p -u -r1.5 dvd_reader.h -#ifdef _MSC_VER +#ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" +#endif +#ifdef _MSC_VER diff --git a/src/input/libdvdnav/dvd_reader.c b/src/input/libdvdnav/dvd_reader.c index 200a1dbec..eff1977fc 100644 --- a/src/input/libdvdnav/dvd_reader.c +++ b/src/input/libdvdnav/dvd_reader.c @@ -1037,6 +1037,28 @@ int32_t DVDFileSeek( dvd_file_t *dvd_file, int32_t offset ) return offset; } +int32_t DVDFileSeekForce( dvd_file_t *dvd_file, int offset, int force_size ) +{ + /* Check arguments. */ + if( dvd_file == NULL || offset < 0 ) + return -1; + + if( dvd_file->dvd->isImageFile ) { + if( force_size < 0 ) + force_size = (offset - 1) / DVD_VIDEO_LB_LEN + 1; + if( dvd_file->filesize < force_size) { + dvd_file->filesize = force_size; + fprintf(stderr, "libdvdread: Ignored UDF provided size of file.\n"); + } + } + + if( offset > dvd_file->filesize * DVD_VIDEO_LB_LEN ) { + return -1; + } + dvd_file->seek_pos = (uint32_t) offset; + return offset; +} + ssize_t DVDReadBytes( dvd_file_t *dvd_file, void *data, size_t byte_size ) { unsigned char *secbuf_base, *secbuf; @@ -1077,7 +1099,7 @@ ssize_t DVDReadBytes( dvd_file_t *dvd_file, void *data, size_t byte_size ) memcpy( data, &(secbuf[ seek_byte ]), byte_size ); free( secbuf_base ); - dvd_file->seek_pos += byte_size; + DVDFileSeekForce(dvd_file, dvd_file->seek_pos + byte_size, -1); return byte_size; } diff --git a/src/input/libdvdnav/dvd_reader.h b/src/input/libdvdnav/dvd_reader.h index bb3f5053b..c7b3f9df8 100644 --- a/src/input/libdvdnav/dvd_reader.h +++ b/src/input/libdvdnav/dvd_reader.h @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -#include <config.h> +#include "config.h" #endif #ifdef _MSC_VER @@ -171,6 +171,8 @@ ssize_t DVDReadBlocks( dvd_file_t *, int, size_t, unsigned char * ); */ int32_t DVDFileSeek( dvd_file_t *, int32_t ); +int32_t DVDFileSeekForce( dvd_file_t *, int, int ); + /** * Reads the given number of bytes from the file. This call can only be used * on the information files, and may not be used for reading from a VOB. This diff --git a/src/input/libdvdnav/ifo_read.c b/src/input/libdvdnav/ifo_read.c index 8f47d2a54..bc1ba580b 100644 --- a/src/input/libdvdnav/ifo_read.c +++ b/src/input/libdvdnav/ifo_read.c @@ -93,6 +93,10 @@ static inline int DVDFileSeek_( dvd_file_t *dvd_file, uint32_t offset ) { return (DVDFileSeek(dvd_file, (int)offset) == (int)offset); } +static inline int32_t DVDFileSeekForce_( dvd_file_t *dvd_file, uint32_t offset, int force_size ) { + return (DVDFileSeekForce(dvd_file, (int)offset, force_size) == (int)offset); +} + ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { ifo_handle_t *ifofile; @@ -1507,7 +1511,7 @@ static int ifoRead_VOBU_ADMAP_internal(ifo_handle_t *ifofile, unsigned int i; int info_length; - if(!DVDFileSeek_(ifofile->file, sector * DVD_BLOCK_LEN)) + if(!DVDFileSeekForce_(ifofile->file, sector * DVD_BLOCK_LEN, sector)) return 0; if(!(DVDReadBytes(ifofile->file, vobu_admap, VOBU_ADMAP_SIZE))) diff --git a/src/input/libdvdnav/md5.c b/src/input/libdvdnav/md5.c index 2bfdddee4..16b7b0690 100644 --- a/src/input/libdvdnav/md5.c +++ b/src/input/libdvdnav/md5.c @@ -21,7 +21,7 @@ /* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */ #ifdef HAVE_CONFIG_H -# include <config.h> +# include "config.h" #endif #include <sys/types.h> diff --git a/src/input/libdvdnav/remap.c b/src/input/libdvdnav/remap.c index 43c81c66f..df0be29ce 100644 --- a/src/input/libdvdnav/remap.c +++ b/src/input/libdvdnav/remap.c @@ -216,6 +216,7 @@ remap_t* remap_loadmap( char *title) { remap_add_node( map, tmp); } } + close (fp); /* ignoring errors... */ if (map->nblocks == 0 && map->debug == 0) return NULL; return map; diff --git a/src/input/libreal/asmrp.c b/src/input/libreal/asmrp.c index f7206b583..902c59d42 100644 --- a/src/input/libreal/asmrp.c +++ b/src/input/libreal/asmrp.c @@ -32,6 +32,10 @@ */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -95,7 +99,7 @@ typedef struct { } asmrp_t; -static asmrp_t *asmrp_new () { +static asmrp_t *XINE_MALLOC asmrp_new () { asmrp_t *p; diff --git a/src/input/libreal/real.c b/src/input/libreal/real.c index df50f0440..dcb90bcd0 100644 --- a/src/input/libreal/real.c +++ b/src/input/libreal/real.c @@ -21,6 +21,10 @@ * adopted from joschkas real tools. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <string.h> @@ -48,9 +52,6 @@ static const unsigned char xor_table[] = { #define _X_BE_32C(x,y) do { *(uint32_t *)(x) = be2me_32((y)); } while(0) #define _X_LE_32C(x,y) do { *(uint32_t *)(x) = le2me_32((y)); } while(0) -#define MAX(x,y) ((x>y) ? x : y) - - static void hash(char *field, char *param) { uint32_t a, b, c, d; @@ -313,7 +314,7 @@ static void calc_response_string (char *result, char *challenge) { void real_calc_response_and_checksum (char *response, char *chksum, char *challenge) { - int ch_len, resp_len; + size_t ch_len, resp_len; int i; char *ptr; char buf[128]; @@ -449,7 +450,7 @@ rmff_header_t *real_parse_sdp(char *data, char **stream_rules, uint32_t bandwidt if (!desc) return NULL; buf=xine_buffer_init(2048); - header = xine_xmalloc(sizeof(rmff_header_t)); + header = calloc(1, sizeof(rmff_header_t)); header->fileheader=rmff_new_fileheader(4+desc->stream_count); header->cont=rmff_new_cont( @@ -458,7 +459,7 @@ rmff_header_t *real_parse_sdp(char *data, char **stream_rules, uint32_t bandwidt desc->copyright, desc->abstract); header->data=rmff_new_dataheader(0,0); - header->streams = xine_xmalloc(sizeof(rmff_mdpr_t*)*(desc->stream_count+1)); + header->streams = calloc((desc->stream_count+1), sizeof(rmff_mdpr_t*)); lprintf("number of streams: %u\n", desc->stream_count); for (i=0; i<desc->stream_count; i++) { @@ -660,7 +661,7 @@ rmff_header_t *real_setup_and_get_header(rtsp_t *rtsp_session, uint32_t bandwid lprintf("Stream description size: %i\n", size); - description = malloc(sizeof(char)*(size+1)); + description = malloc(size+1); if( rtsp_read_data(rtsp_session, description, size) <= 0) { xine_buffer_free(buf); diff --git a/src/input/libreal/rmff.c b/src/input/libreal/rmff.c index 159b81ee6..2d3fcc613 100644 --- a/src/input/libreal/rmff.c +++ b/src/input/libreal/rmff.c @@ -21,6 +21,10 @@ * adopted from joschkas real tools */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #define LOG_MODULE "rmff" #define LOG_VERBOSE /* @@ -35,9 +39,13 @@ * writes header data to a buffer */ -static void rmff_dump_fileheader(rmff_fileheader_t *fileheader, char *buffer) { +static int rmff_dump_fileheader(rmff_fileheader_t *fileheader, uint8_t *buffer, int bufsize) { + + if (!fileheader) return 0; + + if (bufsize < RMFF_FILEHEADER_SIZE) + return -1; - if (!fileheader) return; fileheader->object_id=_X_BE_32(&fileheader->object_id); fileheader->size=_X_BE_32(&fileheader->size); fileheader->object_version=_X_BE_16(&fileheader->object_version); @@ -53,11 +61,17 @@ static void rmff_dump_fileheader(rmff_fileheader_t *fileheader, char *buffer) { fileheader->file_version=_X_BE_32(&fileheader->file_version); fileheader->num_headers=_X_BE_32(&fileheader->num_headers); fileheader->object_id=_X_BE_32(&fileheader->object_id); + + return RMFF_FILEHEADER_SIZE; } -static void rmff_dump_prop(rmff_prop_t *prop, char *buffer) { +static int rmff_dump_prop(rmff_prop_t *prop, uint8_t *buffer, int bufsize) { + + if (!prop) return 0; + + if (bufsize < RMFF_PROPHEADER_SIZE) + return -1; - if (!prop) return; prop->object_id=_X_BE_32(&prop->object_id); prop->size=_X_BE_32(&prop->size); prop->object_version=_X_BE_16(&prop->object_version); @@ -93,13 +107,19 @@ static void rmff_dump_prop(rmff_prop_t *prop, char *buffer) { prop->num_streams=_X_BE_16(&prop->num_streams); prop->flags=_X_BE_16(&prop->flags); prop->object_id=_X_BE_32(&prop->object_id); + + return RMFF_PROPHEADER_SIZE; } -static void rmff_dump_mdpr(rmff_mdpr_t *mdpr, char *buffer) { +static int rmff_dump_mdpr(rmff_mdpr_t *mdpr, uint8_t *buffer, int bufsize) { int s1, s2, s3; - if (!mdpr) return; + if (!mdpr) return 0; + + if (bufsize < RMFF_MDPRHEADER_SIZE + mdpr->type_specific_len + mdpr->stream_name_size + mdpr->mime_type_size) + return -1; + mdpr->object_id=_X_BE_32(&mdpr->object_id); mdpr->size=_X_BE_32(&mdpr->size); mdpr->object_version=_X_BE_16(&mdpr->object_version); @@ -141,13 +161,19 @@ static void rmff_dump_mdpr(rmff_mdpr_t *mdpr, char *buffer) { mdpr->duration=_X_BE_32(&mdpr->duration); mdpr->object_id=_X_BE_32(&mdpr->object_id); + return RMFF_MDPRHEADER_SIZE + s1 + s2 + s3; } -static void rmff_dump_cont(rmff_cont_t *cont, char *buffer) { +static int rmff_dump_cont(rmff_cont_t *cont, uint8_t *buffer, int bufsize) { int p; - if (!cont) return; + if (!cont) return 0; + + if (bufsize < RMFF_CONTHEADER_SIZE + cont->title_len + cont->author_len + + cont->copyright_len + cont->comment_len) + return -1; + cont->object_id=_X_BE_32(&cont->object_id); cont->size=_X_BE_32(&cont->size); cont->object_version=_X_BE_16(&cont->object_version); @@ -181,11 +207,18 @@ static void rmff_dump_cont(rmff_cont_t *cont, char *buffer) { cont->size=_X_BE_32(&cont->size); cont->object_version=_X_BE_16(&cont->object_version); cont->object_id=_X_BE_32(&cont->object_id); + + return RMFF_CONTHEADER_SIZE + cont->title_len + cont->author_len + + cont->copyright_len + cont->comment_len; } -static void rmff_dump_dataheader(rmff_data_t *data, char *buffer) { +static int rmff_dump_dataheader(rmff_data_t *data, uint8_t *buffer, int bufsize) { + + if (!data) return 0; + + if (bufsize < RMFF_DATAHEADER_SIZE) + return -1; - if (!data) return; data->object_id=_X_BE_32(&data->object_id); data->size=_X_BE_32(&data->size); data->object_version=_X_BE_16(&data->object_version); @@ -201,31 +234,43 @@ static void rmff_dump_dataheader(rmff_data_t *data, char *buffer) { data->size=_X_BE_32(&data->size); data->object_version=_X_BE_16(&data->object_version); data->object_id=_X_BE_32(&data->object_id); + + return RMFF_DATAHEADER_SIZE; } -int rmff_dump_header(rmff_header_t *h, char *buffer, int max) { +int rmff_dump_header(rmff_header_t *h, void *buf_gen, int max) { + uint8_t *buffer = buf_gen; - int written=0; + int written=0, size; rmff_mdpr_t **stream=h->streams; - rmff_dump_fileheader(h->fileheader, &buffer[written]); - written+=h->fileheader->size; - rmff_dump_prop(h->prop, &buffer[written]); - written+=h->prop->size; - rmff_dump_cont(h->cont, &buffer[written]); - written+=h->cont->size; + if ((size=rmff_dump_fileheader(h->fileheader, &buffer[written], max)) < 0) + return -1; + written+=size; + max -= size; + if ((size=rmff_dump_prop(h->prop, &buffer[written], max)) < 0) + return -1; + written+=size; + max -= size; + if ((size=rmff_dump_cont(h->cont, &buffer[written], max)) < 0) + return -1; + written+=size; + max -= size; if (stream) { while(*stream) { - rmff_dump_mdpr(*stream, &buffer[written]); - written+=(*stream)->size; + if ((size=rmff_dump_mdpr(*stream, &buffer[written], max)) < 0) + return -1; + written+=size; + max -= size; stream++; } } - rmff_dump_dataheader(h->data, &buffer[written]); - written+=18; + if ((size=rmff_dump_dataheader(h->data, &buffer[written], max)) < 0) + return -1; + written+=size; return written; } @@ -289,12 +334,14 @@ static rmff_prop_t *rmff_scan_prop(const char *data) { return prop; } -static rmff_mdpr_t *rmff_scan_mdpr(const char *data) { - - rmff_mdpr_t *mdpr = malloc(sizeof(rmff_mdpr_t)); +static rmff_mdpr_t *rmff_scan_mdpr(const char *data) +{ + rmff_mdpr_t *mdpr = calloc(sizeof(rmff_mdpr_t), 1); mdpr->object_id=_X_BE_32(data); mdpr->size=_X_BE_32(&data[4]); + if (mdpr->size < 46) + goto fail; mdpr->object_version=_X_BE_16(&data[8]); if (mdpr->object_version != 0) { @@ -310,21 +357,40 @@ static rmff_mdpr_t *rmff_scan_mdpr(const char *data) { mdpr->duration=_X_BE_32(&data[36]); mdpr->stream_name_size=data[40]; - mdpr->stream_name = malloc(sizeof(char)*(mdpr->stream_name_size+1)); + if (mdpr->size < 46 + mdpr->stream_name_size) + goto fail; + mdpr->stream_name = malloc(mdpr->stream_name_size+1); + if (!mdpr->stream_name) + goto fail; memcpy(mdpr->stream_name, &data[41], mdpr->stream_name_size); mdpr->stream_name[mdpr->stream_name_size]=0; mdpr->mime_type_size=data[41+mdpr->stream_name_size]; - mdpr->mime_type = malloc(sizeof(char)*(mdpr->mime_type_size+1)); + if (mdpr->size < 46 + mdpr->stream_name_size + mdpr->mime_type_size) + goto fail; + mdpr->mime_type = malloc(mdpr->mime_type_size+1); + if (!mdpr->mime_type) + goto fail; memcpy(mdpr->mime_type, &data[42+mdpr->stream_name_size], mdpr->mime_type_size); mdpr->mime_type[mdpr->mime_type_size]=0; mdpr->type_specific_len=_X_BE_32(&data[42+mdpr->stream_name_size+mdpr->mime_type_size]); - mdpr->type_specific_data = malloc(sizeof(char)*(mdpr->type_specific_len)); + if (mdpr->size < 46 + mdpr->stream_name_size + mdpr->mime_type_size + mdpr->type_specific_data) + goto fail; + mdpr->type_specific_data = malloc(mdpr->type_specific_len); + if (!mdpr->type_specific_data) + goto fail; memcpy(mdpr->type_specific_data, &data[46+mdpr->stream_name_size+mdpr->mime_type_size], mdpr->type_specific_len); return mdpr; + +fail: + free (mdpr->stream_name); + free (mdpr->mime_type); + free (mdpr->type_specific_data); + free (mdpr); + return NULL; } static rmff_cont_t *rmff_scan_cont(const char *data) { @@ -340,22 +406,22 @@ static rmff_cont_t *rmff_scan_cont(const char *data) { lprintf("warning: unknown object version in CONT: 0x%04x\n", cont->object_version); } cont->title_len=_X_BE_16(&data[10]); - cont->title = malloc(sizeof(char)*(cont->title_len+1)); + cont->title = malloc(cont->title_len+1); memcpy(cont->title, &data[12], cont->title_len); cont->title[cont->title_len]=0; pos=cont->title_len+12; cont->author_len=_X_BE_16(&data[pos]); - cont->author = malloc(sizeof(char)*(cont->author_len+1)); + cont->author = malloc(cont->author_len+1); memcpy(cont->author, &data[pos+2], cont->author_len); cont->author[cont->author_len]=0; pos=pos+2+cont->author_len; cont->copyright_len=_X_BE_16(&data[pos]); - cont->copyright = malloc(sizeof(char)*(cont->copyright_len+1)); + cont->copyright = malloc(cont->copyright_len+1); memcpy(cont->copyright, &data[pos+2], cont->copyright_len); cont->copyright[cont->copyright_len]=0; pos=pos+2+cont->copyright_len; cont->comment_len=_X_BE_16(&data[pos]); - cont->comment = malloc(sizeof(char)*(cont->comment_len+1)); + cont->comment = malloc(cont->comment_len+1); memcpy(cont->comment, &data[pos+2], cont->comment_len); cont->comment[cont->comment_len]=0; @@ -403,10 +469,7 @@ rmff_header_t *rmff_scan_header(const char *data) { header->fileheader=rmff_scan_fileheader(ptr); ptr += header->fileheader->size; - header->streams = malloc(sizeof(rmff_mdpr_t*)*(header->fileheader->num_headers)); - for (i=0; i<header->fileheader->num_headers; i++) { - header->streams[i]=NULL; - } + header->streams = calloc(header->fileheader->num_headers, sizeof(rmff_mdpr_t*)); for (i=1; i<header->fileheader->num_headers; i++) { chunk_type = _X_BE_32(ptr); @@ -425,8 +488,11 @@ rmff_header_t *rmff_scan_header(const char *data) { break; case MDPR_TAG: mdpr=rmff_scan_mdpr(ptr); - chunk_size=mdpr->size; - header->streams[mdpr->stream_number]=mdpr; + if (mdpr) /* FIXME: what to do if NULL? */ + { + chunk_size=mdpr->size; + header->streams[mdpr->stream_number]=mdpr; + } break; case CONT_TAG: header->cont=rmff_scan_cont(ptr); @@ -586,7 +652,7 @@ rmff_mdpr_t *rmff_new_mdpr( mdpr->mime_type_size=strlen(mime_type); } mdpr->type_specific_len=type_specific_len; - mdpr->type_specific_data = malloc(sizeof(char)*type_specific_len); + mdpr->type_specific_data = malloc(type_specific_len); memcpy(mdpr->type_specific_data,type_specific_data,type_specific_len); mdpr->mlti_data=NULL; diff --git a/src/input/libreal/rmff.h b/src/input/libreal/rmff.h index d39942088..50656349d 100644 --- a/src/input/libreal/rmff.h +++ b/src/input/libreal/rmff.h @@ -32,13 +32,19 @@ #include <string.h> #include <inttypes.h> - #ifndef HAVE_RMFF_H #define HAVE_RMFF_H +#include "attributes.h" #define RMFF_HEADER_SIZE 0x12 +#define RMFF_FILEHEADER_SIZE 18 +#define RMFF_PROPHEADER_SIZE 50 +#define RMFF_MDPRHEADER_SIZE 46 +#define RMFF_CONTHEADER_SIZE 18 +#define RMFF_DATAHEADER_SIZE 18 + #define FOURCC_TAG( ch0, ch1, ch2, ch3 ) \ (((long)(unsigned char)(ch3) ) | \ ( (long)(unsigned char)(ch2) << 8 ) | \ @@ -214,7 +220,7 @@ rmff_data_t *rmff_new_dataheader( /* * reads header infos from data and returns a newly allocated header struct */ -rmff_header_t *rmff_scan_header(const char *data); +rmff_header_t *rmff_scan_header(const char *data) XINE_MALLOC; /* * scans a data packet header. Notice, that this function does not allocate @@ -225,7 +231,7 @@ void rmff_scan_pheader(rmff_pheader_t *h, char *data); /* * reads header infos from stream and returns a newly allocated header struct */ -rmff_header_t *rmff_scan_header_stream(int fd); +rmff_header_t *rmff_scan_header_stream(int fd) XINE_MALLOC; /* * prints header information in human readible form to stdout @@ -245,7 +251,7 @@ int rmff_get_header_size(rmff_header_t *h); /* * dumps the header <h> to <buffer>. <max> is the size of <buffer> */ -int rmff_dump_header(rmff_header_t *h, char *buffer, int max); +int rmff_dump_header(rmff_header_t *h, void *buf_gen, int max); /* * dumps a packet header diff --git a/src/input/libreal/sdpplin.c b/src/input/libreal/sdpplin.c index c62b6bbc1..a07cb3360 100644 --- a/src/input/libreal/sdpplin.c +++ b/src/input/libreal/sdpplin.c @@ -19,6 +19,10 @@ * * sdp/sdpplin parser. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #define LOG_MODULE "sdpplin" #define LOG_VERBOSE @@ -60,7 +64,8 @@ static char *b64_decode(const char *in, char *out, int *size) k=0; /*CONSTANTCONDITION*/ - for (j=0; j<strlen(in); j+=4) + const size_t in_len = strlen(in); + for (j=0; j<in_len; j+=4) { char a[4], b[4]; @@ -99,7 +104,7 @@ static char *nl(char *data) { static int filter(const char *in, const char *filter, char **out) { - int flen=strlen(filter); + size_t flen=strlen(filter); size_t len; if (!in) @@ -120,9 +125,9 @@ static int filter(const char *in, const char *filter, char **out) { return 0; } -static sdpplin_stream_t *sdpplin_parse_stream(char **data) { +static sdpplin_stream_t *XINE_MALLOC sdpplin_parse_stream(char **data) { - sdpplin_stream_t *desc = xine_xmalloc(sizeof(sdpplin_stream_t)); + sdpplin_stream_t *desc = calloc(1, sizeof(sdpplin_stream_t)); char *buf=xine_buffer_init(32); char *decoded=xine_buffer_init(32); int handled; @@ -143,7 +148,14 @@ static sdpplin_stream_t *sdpplin_parse_stream(char **data) { handled=0; if(filter(*data,"a=control:streamid=",&buf)) { - desc->stream_id=atoi(buf); + /* This way negative values are mapped to unfeasibly high + * values, and will be discarded afterward + */ + unsigned long tmp = strtoul(buf, NULL, 10); + if ( tmp > UINT16_MAX ) + lprintf("stream id out of bound: %lu\n", tmp); + else + desc->stream_id=tmp; handled=1; *data=nl(*data); } @@ -199,7 +211,7 @@ static sdpplin_stream_t *sdpplin_parse_stream(char **data) { if(filter(*data,"a=OpaqueData:buffer;",&buf)) { decoded = b64_decode(buf, decoded, &(desc->mlti_data_size)); if ( decoded != NULL ) { - desc->mlti_data = malloc(sizeof(char)*desc->mlti_data_size); + desc->mlti_data = malloc(desc->mlti_data_size); memcpy(desc->mlti_data, decoded, desc->mlti_data_size); handled=1; *data=nl(*data); @@ -232,7 +244,7 @@ static sdpplin_stream_t *sdpplin_parse_stream(char **data) { sdpplin_t *sdpplin_parse(char *data) { - sdpplin_t *desc = xine_xmalloc(sizeof(sdpplin_t)); + sdpplin_t *desc = calloc(1, sizeof(sdpplin_t)); sdpplin_stream_t *stream; char *buf=xine_buffer_init(32); char *decoded=xine_buffer_init(32); @@ -252,7 +264,10 @@ sdpplin_t *sdpplin_parse(char *data) { } stream=sdpplin_parse_stream(&data); lprintf("got data for stream id %u\n", stream->stream_id); - desc->stream[stream->stream_id]=stream; + if ( stream->stream_id >= desc->stream_count ) + lprintf("stream id %u is greater than stream count %u\n", stream->stream_id, desc->stream_count); + else + desc->stream[stream->stream_id]=stream; continue; } @@ -293,8 +308,15 @@ sdpplin_t *sdpplin_parse(char *data) { } if(filter(data,"a=StreamCount:integer;",&buf)) { - desc->stream_count=atoi(buf); - desc->stream = malloc(sizeof(sdpplin_stream_t*)*desc->stream_count); + /* This way negative values are mapped to unfeasibly high + * values, and will be discarded afterward + */ + unsigned long tmp = strtoul(buf, NULL, 10); + if ( tmp > UINT16_MAX ) + lprintf("stream count out of bound: %lu\n", tmp); + else + desc->stream_count = tmp; + desc->stream = calloc(desc->stream_count, sizeof(sdpplin_stream_t*)); handled=1; data=nl(data); } diff --git a/src/input/libreal/sdpplin.h b/src/input/libreal/sdpplin.h index cb3b434d4..1604ee38c 100644 --- a/src/input/libreal/sdpplin.h +++ b/src/input/libreal/sdpplin.h @@ -37,7 +37,7 @@ typedef struct { char *id; char *bandwidth; - int stream_id; + uint16_t stream_id; char *range; char *length; char *rtpmap; @@ -81,7 +81,7 @@ typedef struct { int flags; int is_real_data_type; - int stream_count; + uint16_t stream_count; char *title; char *author; char *copyright; @@ -101,7 +101,7 @@ typedef struct { } sdpplin_t; -sdpplin_t *sdpplin_parse(char *data); +sdpplin_t *sdpplin_parse(char *data) XINE_MALLOC; void sdpplin_free(sdpplin_t *description); diff --git a/src/input/librtsp/rtsp.c b/src/input/librtsp/rtsp.c index 530ffc6cf..de4440b1c 100644 --- a/src/input/librtsp/rtsp.c +++ b/src/input/librtsp/rtsp.c @@ -21,6 +21,10 @@ * *not* RFC 2326 compilant yet. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <unistd.h> #include <stdio.h> #include <assert.h> @@ -123,7 +127,7 @@ static char *rtsp_get(rtsp_t *s) { static void rtsp_put(rtsp_t *s, const char *string) { - int len=strlen(string); + size_t len=strlen(string); char *buf = malloc(sizeof(char)*len+2); lprintf(">> '%s'", string); @@ -173,9 +177,7 @@ static void rtsp_send_request(rtsp_t *s, const char *type, const char *what) { char **payload=s->scheduled; char *buf; - buf = malloc(strlen(type)+strlen(what)+strlen(rtsp_protocol_version)+3); - - sprintf(buf,"%s %s %s",type, what, rtsp_protocol_version); + asprintf(&buf,"%s %s %s",type, what, rtsp_protocol_version); rtsp_put(s,buf); free(buf); if (payload) @@ -200,8 +202,7 @@ static void rtsp_schedule_standard(rtsp_t *s) { if (s->session) { char *buf; - buf = malloc(strlen(s->session)+15); - sprintf(buf, "Session: %s", s->session); + asprintf(&buf, "Session: %s", s->session); rtsp_schedule_field(s, buf); free(buf); } @@ -232,38 +233,32 @@ static int rtsp_get_answers(rtsp_t *s) { if (!answer) return 0; - if (!strncasecmp(answer,"Cseq:",5)) { - sscanf(answer,"%*s %u",&answer_seq); + if (!strncasecmp(answer,"Cseq: ",6)) { + sscanf(answer+6,"%u",&answer_seq); if (s->cseq != answer_seq) { lprintf("warning: Cseq mismatch. got %u, assumed %u", answer_seq, s->cseq); s->cseq=answer_seq; } } - if (!strncasecmp(answer,"Server:",7)) { - char *buf = xine_xmalloc(strlen(answer)); - sscanf(answer,"%*s %s",buf); - if (s->server) free(s->server); - s->server=strdup(buf); - free(buf); + if (!strncasecmp(answer,"Server: ",8)) { + free(s->server); + s->server = strdup(answer + 8); } - if (!strncasecmp(answer,"Session:",8)) { - char *buf = xine_xmalloc(strlen(answer)); - sscanf(answer,"%*s %s",buf); + if (!strncasecmp(answer,"Session: ",9)) { + char *tmp = answer + 9; if (s->session) { - if (strcmp(buf, s->session)) { + if (strcmp(tmp, s->session)) { xprintf(s->stream->xine, XINE_VERBOSITY_DEBUG, - "rtsp: warning: setting NEW session: %s\n", buf); - free(s->session); - s->session=strdup(buf); + "rtsp: warning: setting NEW session: %s\n", tmp); + s->session=strdup(tmp); } } else { lprintf("setting session id to: %s\n", buf); - s->session=strdup(buf); + s->session=strdup(tmp); } - free(buf); } *answer_ptr=answer; answer_ptr++; @@ -304,8 +299,7 @@ int rtsp_request_options(rtsp_t *s, const char *what) { buf=strdup(what); } else { - buf = malloc(sizeof(char)*(strlen(s->host)+16)); - sprintf(buf,"rtsp://%s:%i", s->host, s->port); + asprintf(&buf,"rtsp://%s:%i", s->host, s->port); } rtsp_send_request(s,"OPTIONS",buf); free(buf); @@ -321,8 +315,7 @@ int rtsp_request_describe(rtsp_t *s, const char *what) { buf=strdup(what); } else { - buf = malloc(sizeof(char)*(strlen(s->host)+strlen(s->path)+16)); - sprintf(buf,"rtsp://%s:%i/%s", s->host, s->port, s->path); + asprintf(&buf,"rtsp://%s:%i/%s", s->host, s->port, s->path); } rtsp_send_request(s,"DESCRIBE",buf); free(buf); @@ -345,8 +338,7 @@ int rtsp_request_setparameter(rtsp_t *s, const char *what) { buf=strdup(what); } else { - buf = malloc(sizeof(char)*(strlen(s->host)+strlen(s->path)+16)); - sprintf(buf,"rtsp://%s:%i/%s", s->host, s->port, s->path); + asprintf(&buf,"rtsp://%s:%i/%s", s->host, s->port, s->path); } rtsp_send_request(s,"SET_PARAMETER",buf); free(buf); @@ -362,8 +354,7 @@ int rtsp_request_play(rtsp_t *s, const char *what) { buf=strdup(what); } else { - buf = malloc(sizeof(char)*(strlen(s->host)+strlen(s->path)+16)); - sprintf(buf,"rtsp://%s:%i/%s", s->host, s->port, s->path); + asprintf(&buf,"rtsp://%s:%i/%s", s->host, s->port, s->path); } rtsp_send_request(s,"PLAY",buf); free(buf); @@ -412,8 +403,7 @@ int rtsp_read_data(rtsp_t *s, char *buffer, unsigned int size) { } /* lets make the server happy */ rtsp_put(s, "RTSP/1.0 451 Parameter Not Understood"); - rest = malloc(sizeof(char)*17); - sprintf(rest,"CSeq: %u", seq); + asprintf(&rest,"CSeq: %u", seq); rtsp_put(s, rest); free(rest); rtsp_put(s, ""); @@ -486,9 +476,7 @@ rtsp_t *rtsp_connect(xine_stream_t *stream, const char *mrl, const char *user_ag pathbegin=slash-mrl_ptr; hostend=colon-mrl_ptr; - s->host = malloc(sizeof(char)*hostend+1); - strncpy(s->host, mrl_ptr, hostend); - s->host[hostend]=0; + s->host = strndup(mrl_ptr, hostend); if (pathbegin < strlen(mrl_ptr)) s->path=strdup(mrl_ptr+pathbegin+1); if (colon != slash) { diff --git a/src/input/librtsp/rtsp.h b/src/input/librtsp/rtsp.h index dc2624459..2e1fd6aa0 100644 --- a/src/input/librtsp/rtsp.h +++ b/src/input/librtsp/rtsp.h @@ -40,7 +40,7 @@ typedef struct rtsp_s rtsp_t; -rtsp_t* rtsp_connect (xine_stream_t *stream, const char *mrl, const char *user_agent); +rtsp_t* rtsp_connect (xine_stream_t *stream, const char *mrl, const char *user_agent) XINE_MALLOC; int rtsp_request_options(rtsp_t *s, const char *what); int rtsp_request_describe(rtsp_t *s, const char *what); diff --git a/src/input/librtsp/rtsp_session.c b/src/input/librtsp/rtsp_session.c index f3ddb59bc..88103aa7d 100644 --- a/src/input/librtsp/rtsp_session.c +++ b/src/input/librtsp/rtsp_session.c @@ -20,6 +20,10 @@ * high level interface to rtsp servers. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> @@ -78,7 +82,7 @@ const char *rtsp_bandwidth_strs[]={"14.4 Kbps (Modem)", "19.2 Kbps (Modem)", rtsp_session_t *rtsp_session_start(xine_stream_t *stream, char *mrl) { - rtsp_session_t *rtsp_session = xine_xmalloc(sizeof(rtsp_session_t)); + rtsp_session_t *rtsp_session = calloc(1, sizeof(rtsp_session_t)); xine_t *xine = stream->xine; char *server; char *mrl_line=strdup(mrl); @@ -148,6 +152,11 @@ connect: rtsp_session->header_left = rtsp_session->header_len = rmff_dump_header(h,rtsp_session->header,HEADER_SIZE); + if (rtsp_session->header_len < 0) { + xprintf (stream->xine, XINE_VERBOSITY_LOG, + _("rtsp_session: rtsp server returned overly-large headers, session can not be established.\n")); + goto session_abort; + } xine_buffer_copyin(rtsp_session->recv, 0, rtsp_session->header, rtsp_session->header_len); rtsp_session->recv_size = rtsp_session->header_len; @@ -157,6 +166,7 @@ connect: { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("rtsp_session: rtsp server type '%s' not supported yet. sorry.\n"), server); + session_abort: rtsp_close(rtsp_session->s); free(server); xine_buffer_free(rtsp_session->recv); diff --git a/src/input/librtsp/rtsp_session.h b/src/input/librtsp/rtsp_session.h index b47db0730..33ac579e1 100644 --- a/src/input/librtsp/rtsp_session.h +++ b/src/input/librtsp/rtsp_session.h @@ -25,7 +25,7 @@ typedef struct rtsp_session_s rtsp_session_t; -rtsp_session_t *rtsp_session_start(xine_stream_t *stream, char *mrl); +rtsp_session_t *rtsp_session_start(xine_stream_t *stream, char *mrl) XINE_MALLOC; void rtsp_session_set_start_time(rtsp_session_t *this, int start_time); diff --git a/src/input/mms.c b/src/input/mms.c index f11a89cf3..b2d00a46e 100644 --- a/src/input/mms.c +++ b/src/input/mms.c @@ -202,9 +202,9 @@ static void mms_buffer_put_64 (mms_buffer_t *mms_buffer, uint64_t value) { } +#ifdef LOG static void print_command (char *data, int len) { -#ifdef LOG int i; int dir = _X_LE_32 (data + 36) >> 16; int comm = _X_LE_32 (data + 36) & 0xFFFF; @@ -240,8 +240,10 @@ static void print_command (char *data, int len) { if (len > CMD_HEADER_LEN) printf ("\n"); printf ("----------------------------------------------\n"); +} +#else +# define print_command(data, len) #endif -} @@ -288,7 +290,7 @@ static int send_command (mms_t *this, int command, #ifdef USE_ICONV static iconv_t string_utf16_open() { - return iconv_open("UTF-16LE", nl_langinfo(CODESET)); + return iconv_open("UTF-16LE", "UTF-8"); } static void string_utf16_close(iconv_t url_conv) { @@ -678,7 +680,7 @@ mms_t *mms_connect (xine_stream_t *stream, const char *url, int bandwidth) { if (!url) return NULL; - this = (mms_t*) xine_xmalloc (sizeof (mms_t)); + this = calloc(1, sizeof (mms_t)); this->stream = stream; this->url = strdup (url); @@ -769,12 +771,17 @@ mms_t *mms_connect (xine_stream_t *stream, const char *url, int bandwidth) { /* command 0x5 */ { mms_buffer_t command_buffer; - char *path; - int pathlen; + char *path, *unescaped; + size_t pathlen; + + unescaped = strdup (this->uri); + if (!unescaped) + goto fail; + _x_mrl_unescape (unescaped); /* remove the first '/' */ - path = this->uri; - pathlen = strlen(path); + path = unescaped; + pathlen = strlen (path); if (pathlen > 1) { path++; pathlen--; @@ -785,6 +792,7 @@ mms_t *mms_connect (xine_stream_t *stream, const char *url, int bandwidth) { mms_buffer_put_32 (&command_buffer, 0x00000000); /* ?? */ mms_buffer_put_32 (&command_buffer, 0x00000000); /* ?? */ string_utf16 (url_conv, this->scmd_body + command_buffer.pos, path, pathlen); + free (unescaped); if (!send_command (this, 5, 1, 0xffffffff, pathlen * 2 + 12)) goto fail; } diff --git a/src/input/mmsh.c b/src/input/mmsh.c index ae1c62bc1..4ee7ed07d 100644 --- a/src/input/mmsh.c +++ b/src/input/mmsh.c @@ -190,11 +190,9 @@ struct mmsh_s { }; static int send_command (mmsh_t *this, char *cmd) { - int length; - lprintf ("send_command:\n%s\n", cmd); - length = strlen(cmd); + const size_t length = strlen(cmd); if (_x_io_tcp_write(this->stream, this->s, cmd, length) != length) { xprintf (this->stream->xine, XINE_LOG_MSG, _("libmmsh: send error\n")); return 0; @@ -636,7 +634,7 @@ mmsh_t *mmsh_connect (xine_stream_t *stream, const char *url, int bandwidth) { report_progress (stream, 0); - this = (mmsh_t*) xine_xmalloc (sizeof (mmsh_t)); + this = calloc(1, sizeof (mmsh_t)); this->stream = stream; this->url = strdup(url); diff --git a/src/input/net_buf_ctrl.c b/src/input/net_buf_ctrl.c index 624af4081..e27ed99f3 100644 --- a/src/input/net_buf_ctrl.c +++ b/src/input/net_buf_ctrl.c @@ -118,8 +118,8 @@ void nbc_check_buffers (nbc_t *this) { } static void display_stats (nbc_t *this) { - const char *buffering[2] = {" ", "buf"}; - const char *enabled[2] = {"off", "on "}; + const char buffering[2][4] = {" ", "buf"}; + const char enabled[2][4] = {"off", "on "}; printf("bufing: %d, enb: %d\n", this->buffering, this->enabled); printf("net_buf_ctrl: vid %3d%% %4.1fs %4" PRId64 "kbps %1d, "\ @@ -496,7 +496,7 @@ static void nbc_get_cb (fifo_buffer_t *fifo, nbc_t *nbc_init (xine_stream_t *stream) { - nbc_t *this = (nbc_t *) xine_xmalloc (sizeof (nbc_t)); + nbc_t *this = calloc(1, sizeof (nbc_t)); fifo_buffer_t *video_fifo = stream->video_fifo; fifo_buffer_t *audio_fifo = stream->audio_fifo; double video_fifo_factor, audio_fifo_factor; diff --git a/src/input/net_buf_ctrl.h b/src/input/net_buf_ctrl.h index 79f698008..7dfb7b0d1 100644 --- a/src/input/net_buf_ctrl.h +++ b/src/input/net_buf_ctrl.h @@ -27,14 +27,14 @@ typedef struct nbc_s nbc_t; -nbc_t *nbc_init (xine_stream_t *xine); +nbc_t *nbc_init (xine_stream_t *xine) XINE_MALLOC; -void nbc_check_buffers (nbc_t *this); +void nbc_check_buffers (nbc_t *this) XINE_DEPRECATED; void nbc_close (nbc_t *this); -void nbc_set_high_water_mark(nbc_t *this, int value); +void nbc_set_high_water_mark(nbc_t *this, int value) XINE_DEPRECATED; -void nbc_set_low_water_mark(nbc_t *this, int value); +void nbc_set_low_water_mark(nbc_t *this, int value) XINE_DEPRECATED; #endif diff --git a/src/input/pnm.c b/src/input/pnm.c index 38d65b850..aabdbde96 100644 --- a/src/input/pnm.c +++ b/src/input/pnm.c @@ -21,6 +21,10 @@ * based upon code from joschka */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include <unistd.h> #include <stdio.h> #include <sys/socket.h> @@ -90,7 +94,7 @@ struct pnm_s { /* header of rm files */ #define RM_HEADER_SIZE 0x12 -const unsigned char rm_header[]={ +static const unsigned char rm_header[]={ 0x2e, 0x52, 0x4d, 0x46, /* object_id ".RMF" */ 0x00, 0x00, 0x00, 0x12, /* header_size 0x12 */ 0x00, 0x00, /* object_version 0x00 */ @@ -100,7 +104,7 @@ const unsigned char rm_header[]={ /* data chunk header */ #define PNM_DATA_HEADER_SIZE 18 -const unsigned char pnm_data_header[]={ +static const unsigned char pnm_data_header[]={ 'D','A','T','A', 0,0,0,0, /* data chunk size */ 0,0, /* object version */ @@ -411,8 +415,8 @@ static void pnm_send_request(pnm_t *p, uint32_t bandwidth) { */ static void pnm_send_response(pnm_t *p, const char *response) { - - int size=strlen(response); + /** @TODO should check that sze is always < 256 */ + size_t size=strlen(response); p->buffer[0]=0x23; p->buffer[1]=0; @@ -627,10 +631,7 @@ static int pnm_get_stream_chunk(pnm_t *p) { */ n=0; while (p->buffer[0] != 0x5a) { - int i; - for (i=1; i<8; i++) { - p->buffer[i-1]=p->buffer[i]; - } + memmove(p->buffer, &p->buffer[1], 8); _x_io_tcp_read (p->stream, p->s, &p->buffer[7], 1); n++; } @@ -716,7 +717,7 @@ pnm_t *pnm_connect(xine_stream_t *stream, const char *mrl) { mrl_ptr+=6; - p = xine_xmalloc(sizeof(pnm_t)); + p = calloc(1, sizeof(pnm_t)); p->stream = stream; p->port=7070; p->url=strdup(mrl); @@ -732,9 +733,7 @@ pnm_t *pnm_connect(xine_stream_t *stream, const char *mrl) { pathbegin=slash-mrl_ptr; hostend=colon-mrl_ptr; - p->host = malloc(sizeof(char)*hostend+1); - strncpy(p->host, mrl_ptr, hostend); - p->host[hostend]=0; + p->host = strndup(mrl_ptr, hostend); if (pathbegin < strlen(mrl_ptr)) p->path=strdup(mrl_ptr+pathbegin+1); if (colon != slash) { diff --git a/src/input/vcd/Makefile.am b/src/input/vcd/Makefile.am index 31ec6a44c..61eac753b 100644 --- a/src/input/vcd/Makefile.am +++ b/src/input/vcd/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common SUBDIRS = libcdio libvcd diff --git a/src/input/vcd/libcdio/FreeBSD/freebsd.c b/src/input/vcd/libcdio/FreeBSD/freebsd.c index 5a3443e95..bcfe674a5 100644 --- a/src/input/vcd/libcdio/FreeBSD/freebsd.c +++ b/src/input/vcd/libcdio/FreeBSD/freebsd.c @@ -29,11 +29,11 @@ static const char _rcsid[] = "$Id: freebsd.c,v 1.1 2005/01/01 02:43:57 rockyb Exp $"; -#include <arpa/inet.h> #include "freebsd.h" #ifdef HAVE_FREEBSD_CDROM +#include <arpa/inet.h> #include <cdio/sector.h> static access_mode_t diff --git a/src/input/vcd/libcdio/MSWindows/aspi32.c b/src/input/vcd/libcdio/MSWindows/aspi32.c index 238a4b4e9..e62f8a089 100644 --- a/src/input/vcd/libcdio/MSWindows/aspi32.c +++ b/src/input/vcd/libcdio/MSWindows/aspi32.c @@ -162,9 +162,9 @@ have_aspi( HMODULE *hASPI, return false; } - (FARPROC) *lpGetSupport = GetProcAddress( *hASPI, + *lpGetSupport = (FARPROC)GetProcAddress( *hASPI, "GetASPI32SupportInfo" ); - (FARPROC) *lpSendCommand = GetProcAddress( *hASPI, + *lpSendCommand = (FARPROC)GetProcAddress( *hASPI, "SendASPI32Command" ); /* make sure that we've got both function addresses */ diff --git a/src/input/vcd/xine-extra.c b/src/input/vcd/xine-extra.c index 79c962a79..e3b6da912 100644 --- a/src/input/vcd/xine-extra.c +++ b/src/input/vcd/xine-extra.c @@ -45,8 +45,10 @@ static xine_t *my_xine = NULL; void xine_vlog_msg(xine_t *this, int buf, const char *format, va_list args) { + va_list copy; + va_copy (copy, args); xine_vlog(this, buf, format, args); - vfprintf(stdout, format, args); + vfprintf(stdout, format, copy); } /*! This routine is like xine_log, except it takes a va_list instead @@ -59,8 +61,10 @@ xine_vlog_msg(xine_t *this, int buf, const char *format, va_list args) void xine_vlog_err(xine_t *this, int buf, const char *format, va_list args) { + va_list copy; + va_copy (copy, args); xine_vlog(this, buf, format, args); - vfprintf(stderr, format, args); + vfprintf(stderr, format, copy); } /*! Call this before calling any of the xine_log_msg or xine_log_err @@ -116,8 +120,8 @@ xine_log_err(const char *format, ...) { va_list args; - va_start(args, format); if (NULL == my_xine) return false; + va_start(args, format); xine_vlog_err(my_xine, XINE_LOG_MSG, format, args); va_end(args); return true; diff --git a/src/input/vcd/xineplug_inp_vcd.c b/src/input/vcd/xineplug_inp_vcd.c index 2e52ccc0f..50382ee7e 100644 --- a/src/input/vcd/xineplug_inp_vcd.c +++ b/src/input/vcd/xineplug_inp_vcd.c @@ -20,7 +20,7 @@ /* These are plugin routines called by the xine engine. See Chapter 4. Extending xine's input - http://xinehq.de/index.php/hackersguide/index.php?resource=5.3&action=default#INPUT + http://www.xine-project.org/hackersguide#INPUT and the comments in input_plugin.h This is what is referred to below a "the xine plugin spec" @@ -272,11 +272,9 @@ vcd_add_mrl_slot(vcd_input_class_t *this, const char *mrl, off_t size, this->mrls[*i]->type = mrl_vcd; this->mrls[*i]->size = size * M2F2_SECTOR_SIZE; - this->mrls[*i]->mrl = (char *) malloc(strlen(mrl) + 1); + this->mrls[*i]->mrl = strdup(mrl); if (NULL==this->mrls[*i]->mrl) { LOG_ERR("Can't malloc %zu bytes for MRL name %s", sizeof(xine_mrl_t), mrl); - } else { - sprintf(this->mrls[*i]->mrl, "%s", mrl); } (*i)++; } @@ -968,7 +966,7 @@ vcd_class_eject_media (input_class_t *this_gen) * From spec: * return current MRL */ -static char * +static const char * vcd_plugin_get_mrl (input_plugin_t *this_gen) { vcd_input_plugin_t *t = (vcd_input_plugin_t *) this_gen; @@ -989,7 +987,7 @@ vcd_plugin_get_mrl (input_plugin_t *this_gen) /* Bad type. */ LOG_ERR("%s %d", _("Invalid current entry type"), vcdplayer->play_item.type); - return strdup(""); + return ""; } else { n += offset; if (n < t->class->num_mrls) { @@ -997,7 +995,7 @@ vcd_plugin_get_mrl (input_plugin_t *this_gen) t->class->mrls[n]->mrl); return t->class->mrls[n]->mrl; } else { - return strdup(""); + return ""; } } } @@ -1007,7 +1005,7 @@ vcd_plugin_get_mrl (input_plugin_t *this_gen) return human readable (verbose = 1 line) description for this plugin */ -static char * +static const char * vcd_class_get_description (input_class_t *this_gen) { dbg_print((INPUT_DBG_CALL|INPUT_DBG_EXT), "called\n"); @@ -1767,7 +1765,7 @@ vcd_init (xine_t *xine, void *data) dbg_print(INPUT_DBG_CALL, "Called\n"); - class = (vcd_input_class_t *) xine_xmalloc (sizeof (vcd_input_class_t)); + class = calloc(1, sizeof (vcd_input_class_t)); class->xine = xine; class->config = config = xine->config; diff --git a/src/liba52/Makefile.am b/src/liba52/Makefile.am index 508ea9c1b..b13170076 100644 --- a/src/liba52/Makefile.am +++ b/src/liba52/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common if A52 diff --git a/src/liba52/parse.c b/src/liba52/parse.c index 0bfd02fce..f1adc2f40 100644 --- a/src/liba52/parse.c +++ b/src/liba52/parse.c @@ -49,7 +49,7 @@ a52_state_t * a52_init (uint32_t mm_accel) a52_state_t * state; int i; - state = xine_xmalloc (sizeof (a52_state_t)); + state = calloc(1, sizeof (a52_state_t)); if (state == NULL) return NULL; diff --git a/src/liba52/xine_a52_decoder.c b/src/liba52/xine_a52_decoder.c index b8b500ecd..47babce7a 100644 --- a/src/liba52/xine_a52_decoder.c +++ b/src/liba52/xine_a52_decoder.c @@ -27,7 +27,7 @@ /* avoid compiler warnings */ #define _BSD_SOURCE 1 -#include <config.h> +#include "config.h" #include <stdlib.h> #include <unistd.h> @@ -654,7 +654,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre lprintf ("open_plugin called\n"); - this = (a52dec_decoder_t *) xine_xmalloc (sizeof (a52dec_decoder_t)); + this = calloc(1, sizeof (a52dec_decoder_t)); this->audio_decoder.decode_data = a52dec_decode_data; this->audio_decoder.reset = a52dec_reset; @@ -806,7 +806,7 @@ static void *init_plugin (xine_t *xine, void *data) { a52dec_class_t *this; config_values_t *cfg; - this = (a52dec_class_t *) xine_xmalloc (sizeof (a52dec_class_t)); + this = calloc(1, sizeof (a52dec_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libdts/Makefile.am b/src/libdts/Makefile.am index 1329dd49c..b7ec60016 100644 --- a/src/libdts/Makefile.am +++ b/src/libdts/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common if DTS diff --git a/src/libdts/xine_dts_decoder.c b/src/libdts/xine_dts_decoder.c index 6573d5ed0..eba750110 100644 --- a/src/libdts/xine_dts_decoder.c +++ b/src/libdts/xine_dts_decoder.c @@ -21,6 +21,10 @@ * 09-12-2001 DTS passthrough inprovements (C) James Courtier-Dutton */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #ifndef __sun /* required for swab() */ #define _XOPEN_SOURCE 500 @@ -207,19 +211,27 @@ static void dts_decode_frame (dts_decoder_t *this, int64_t pts, int preview_mode audio_buffer->num_frames = this->ac5_pcm_length; - data_out[0] = 0x72; data_out[1] = 0xf8; /* spdif syncword */ - data_out[2] = 0x1f; data_out[3] = 0x4e; /* .............. */ - data_out[4] = ac5_spdif_type; /* DTS data */ - data_out[5] = 0; /* Unknown */ - data_out[6] = (this->ac5_length << 3) & 0xff; /* ac5_length * 8 */ - data_out[7] = ((this->ac5_length ) >> 5) & 0xff; - - if( this->ac5_pcm_length ) { - if( this->ac5_pcm_length % 2) { - swab(data_in, &data_out[8], this->ac5_length ); - } else { - swab(data_in, &data_out[8], this->ac5_length + 1); + // Checking if AC5 data plus IEC958 header will fit into frames samples data + if ( this->ac5_length + 8 <= this->ac5_pcm_length * 2 * 2 ) { + data_out[0] = 0x72; data_out[1] = 0xf8; /* spdif syncword */ + data_out[2] = 0x1f; data_out[3] = 0x4e; /* .............. */ + data_out[4] = ac5_spdif_type; /* DTS data */ + data_out[5] = 0; /* Unknown */ + data_out[6] = (this->ac5_length << 3) & 0xff; /* ac5_length * 8 */ + data_out[7] = ((this->ac5_length ) >> 5) & 0xff; + + if( this->ac5_pcm_length ) { + if( this->ac5_pcm_length % 2) { + swab(data_in, &data_out[8], this->ac5_length ); + } else { + swab(data_in, &data_out[8], this->ac5_length + 1); + } } + // Transmit it without header otherwise, receivers will autodetect DTS + } else { + lprintf("AC5 data is too large (%i > %i), sending without IEC958 header\n", + this->ac5_length + 8, this->ac5_pcm_length * 2 * 2); + memcpy(data_out, data_in, this->ac5_length); } } else { /* Software decode */ @@ -481,7 +493,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre lprintf("open_plugin\n"); - this = (dts_decoder_t *) xine_xmalloc (sizeof (dts_decoder_t)); + this = calloc(1, sizeof (dts_decoder_t)); this->audio_decoder.decode_data = dts_decode_data; this->audio_decoder.reset = dts_reset; @@ -590,7 +602,7 @@ static void *init_plugin (xine_t *xine, void *data) { lprintf("init_plugin\n"); - this = (dts_class_t *) xine_xmalloc (sizeof (dts_class_t)); + this = calloc(1, sizeof (dts_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libfaad/Makefile.am b/src/libfaad/Makefile.am index 729418f1c..92bab83fb 100644 --- a/src/libfaad/Makefile.am +++ b/src/libfaad/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common SUBDIRS = codebook @@ -10,8 +11,10 @@ xineplug_LTLIBRARIES = $(faad_module) VPATH = @srcdir@:@srcdir@/codebook: -xineplug_decode_faad_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) -fno-strict-aliasing -xineplug_decode_faad_la_SOURCES = \ +if EXTERNAL_LIBFAAD +libfaad_sources = +else +libfaad_sources = \ bits.c \ cfft.c \ common.c \ @@ -49,11 +52,21 @@ xineplug_decode_faad_la_SOURCES = \ ssr_fb.c \ ssr_ipqf.c \ syntax.c \ - tns.c \ + tns.c +endif + +xineplug_decode_faad_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) -fno-strict-aliasing +xineplug_decode_faad_la_SOURCES = \ + $(libfaad_sources) \ xine_faad_decoder.c xineplug_decode_faad_la_LDFLAGS = $(xineplug_ldflags) +if EXTERNAL_LIBFAAD +xineplug_decode_faad_la_LIBADD = $(XINE_LIB) -lfaad -lm $(LTLIBINTL) +else xineplug_decode_faad_la_LIBADD = $(XINE_LIB) -lm $(LTLIBINTL) +endif + noinst_HEADERS = \ analysis.h \ @@ -103,4 +116,17 @@ noinst_HEADERS = \ ssr_win.h \ structs.h \ syntax.h \ - tns.h + tns.h \ + codebook/hcb.h \ + codebook/hcb_1.h \ + codebook/hcb_2.h \ + codebook/hcb_3.h \ + codebook/hcb_4.h \ + codebook/hcb_5.h \ + codebook/hcb_6.h \ + codebook/hcb_7.h \ + codebook/hcb_8.h \ + codebook/hcb_9.h \ + codebook/hcb_10.h \ + codebook/hcb_11.h \ + codebook/hcb_sf.h diff --git a/src/libfaad/analysis.h b/src/libfaad/analysis.h index 810a95f3b..50e43fa04 100644 --- a/src/libfaad/analysis.h +++ b/src/libfaad/analysis.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: analysis.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: analysis.h,v 1.18 2007/11/01 12:33:29 menno Exp $ **/ #ifndef __ANALYSIS_H__ diff --git a/src/libfaad/bits.c b/src/libfaad/bits.c index ae273c7d8..dc14d7a03 100644 --- a/src/libfaad/bits.c +++ b/src/libfaad/bits.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,17 +19,19 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: bits.c,v 1.9 2005/10/29 23:57:06 tmmm Exp $ +** $Id: bits.c,v 1.44 2007/11/01 12:33:29 menno Exp $ **/ #include "common.h" #include "structs.h" #include <stdlib.h> -#include <string.h> #include "bits.h" /* initialize buffer, call once before first getbits or showbits */ @@ -40,25 +42,38 @@ void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size) if (ld == NULL) return; - memset(ld, 0, sizeof(bitfile)); + // useless + //memset(ld, 0, sizeof(bitfile)); if (buffer_size == 0 || _buffer == NULL) { ld->error = 1; - ld->no_more_reading = 1; return; } - ld->buffer = faad_malloc((buffer_size+12)*sizeof(uint8_t)); - memset(ld->buffer, 0, (buffer_size+12)*sizeof(uint8_t)); - memcpy(ld->buffer, _buffer, buffer_size*sizeof(uint8_t)); + ld->buffer = _buffer; ld->buffer_size = buffer_size; + ld->bytes_left = buffer_size; - tmp = getdword((uint32_t*)ld->buffer); + if (ld->bytes_left >= 4) + { + tmp = getdword((uint32_t*)ld->buffer); + ld->bytes_left -= 4; + } else { + tmp = getdword_n((uint32_t*)ld->buffer, ld->bytes_left); + ld->bytes_left = 0; + } ld->bufa = tmp; - tmp = getdword((uint32_t*)ld->buffer + 1); + if (ld->bytes_left >= 4) + { + tmp = getdword((uint32_t*)ld->buffer + 1); + ld->bytes_left -= 4; + } else { + tmp = getdword_n((uint32_t*)ld->buffer + 1, ld->bytes_left); + ld->bytes_left = 0; + } ld->bufb = tmp; ld->start = (uint32_t*)ld->buffer; @@ -66,21 +81,12 @@ void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size) ld->bits_left = 32; - ld->bytes_used = 0; - ld->no_more_reading = 0; ld->error = 0; } void faad_endbits(bitfile *ld) { - if (ld) - { - if (ld->buffer) - { - faad_free(ld->buffer); - ld->buffer = NULL; - } - } + // void } uint32_t faad_get_processed_bits(bitfile *ld) @@ -90,12 +96,12 @@ uint32_t faad_get_processed_bits(bitfile *ld) uint8_t faad_byte_align(bitfile *ld) { - uint8_t remainder = (uint8_t)((32 - ld->bits_left) % 8); + int remainder = (32 - ld->bits_left) & 0x7; if (remainder) { faad_flushbits(ld, 8 - remainder); - return (8 - remainder); + return (uint8_t)(8 - remainder); } return 0; } @@ -105,20 +111,22 @@ void faad_flushbits_ex(bitfile *ld, uint32_t bits) uint32_t tmp; ld->bufa = ld->bufb; - if (ld->no_more_reading == 0) + if (ld->bytes_left >= 4) { tmp = getdword(ld->tail); - ld->tail++; + ld->bytes_left -= 4; } else { - tmp = 0; + tmp = getdword_n(ld->tail, ld->bytes_left); + ld->bytes_left = 0; } ld->bufb = tmp; + ld->tail++; ld->bits_left += (32 - bits); - ld->bytes_used += 4; - if (ld->bytes_used == ld->buffer_size) - ld->no_more_reading = 1; - if (ld->bytes_used > ld->buffer_size) - ld->error = 1; + //ld->bytes_left -= 4; +// if (ld->bytes_left == 0) +// ld->no_more_reading = 1; +// if (ld->bytes_left < 0) +// ld->error = 1; } /* rewind to beginning */ @@ -126,30 +134,79 @@ void faad_rewindbits(bitfile *ld) { uint32_t tmp; - tmp = ld->start[0]; -#ifndef ARCH_IS_BIG_ENDIAN - BSWAP(tmp); -#endif + ld->bytes_left = ld->buffer_size; + + if (ld->bytes_left >= 4) + { + tmp = getdword((uint32_t*)&ld->start[0]); + ld->bytes_left -= 4; + } else { + tmp = getdword_n((uint32_t*)&ld->start[0], ld->bytes_left); + ld->bytes_left = 0; + } ld->bufa = tmp; - tmp = ld->start[1]; -#ifndef ARCH_IS_BIG_ENDIAN - BSWAP(tmp); -#endif + if (ld->bytes_left >= 4) + { + tmp = getdword((uint32_t*)&ld->start[1]); + ld->bytes_left -= 4; + } else { + tmp = getdword_n((uint32_t*)&ld->start[1], ld->bytes_left); + ld->bytes_left = 0; + } ld->bufb = tmp; + ld->bits_left = 32; ld->tail = &ld->start[2]; - ld->bytes_used = 0; - ld->no_more_reading = 0; +} + +/* reset to a certain point */ +void faad_resetbits(bitfile *ld, int bits) +{ + uint32_t tmp; + int words = bits >> 5; + int remainder = bits & 0x1F; + + ld->bytes_left = ld->buffer_size - words*4; + + if (ld->bytes_left >= 4) + { + tmp = getdword(&ld->start[words]); + ld->bytes_left -= 4; + } else { + tmp = getdword_n(&ld->start[words], ld->bytes_left); + ld->bytes_left = 0; + } + ld->bufa = tmp; + + if (ld->bytes_left >= 4) + { + tmp = getdword(&ld->start[words+1]); + ld->bytes_left -= 4; + } else { + tmp = getdword_n(&ld->start[words+1], ld->bytes_left); + ld->bytes_left = 0; + } + ld->bufb = tmp; + + ld->bits_left = 32 - remainder; + ld->tail = &ld->start[words+2]; + + /* recheck for reading too many bytes */ + ld->error = 0; +// if (ld->bytes_left == 0) +// ld->no_more_reading = 1; +// if (ld->bytes_left < 0) +// ld->error = 1; } uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits DEBUGDEC) { - uint16_t i; - uint8_t temp; - uint16_t bytes = (uint16_t)bits / 8; - uint8_t remainder = (uint8_t)bits % 8; + int i; + unsigned int temp; + int bytes = bits >> 3; + int remainder = bits & 0x7; uint8_t *buffer = (uint8_t*)faad_malloc((bytes+1)*sizeof(uint8_t)); @@ -160,9 +217,9 @@ uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits if (remainder) { - temp = (uint8_t)faad_getbits(ld, remainder DEBUGVAR(print,var,dbg)) << (8-remainder); + temp = faad_getbits(ld, remainder DEBUGVAR(print,var,dbg)) << (8-remainder); - buffer[bytes] = temp; + buffer[bytes] = (uint8_t)temp; } return buffer; @@ -207,7 +264,8 @@ void faad_initbits_rev(bitfile *ld, void *buffer, if (ld->bits_left == 0) ld->bits_left = 32; - ld->bytes_used = 0; - ld->no_more_reading = 0; + ld->bytes_left = ld->buffer_size; ld->error = 0; } + +/* EOF */ diff --git a/src/libfaad/bits.h b/src/libfaad/bits.h index 05460f0cc..e303e8e72 100644 --- a/src/libfaad/bits.h +++ b/src/libfaad/bits.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: bits.h,v 1.11 2005/10/30 01:21:53 tmmm Exp $ +** $Id: bits.h,v 1.45 2007/11/01 12:33:29 menno Exp $ **/ #ifndef __BITS_H__ @@ -37,8 +40,10 @@ extern "C" { #include <stdio.h> #endif -#define BYTE_NUMBIT 8 -#define bit2byte(a) ((a+7)/BYTE_NUMBIT) +#define BYTE_NUMBIT 8 +#define BYTE_NUMBIT_LD 3 +//#define bit2byte(a) ((a+7)/BYTE_NUMBIT) +#define bit2byte(a) ((a+7)>>BYTE_NUMBIT_LD) typedef struct _bitfile { @@ -47,25 +52,16 @@ typedef struct _bitfile uint32_t bufb; uint32_t bits_left; uint32_t buffer_size; /* size of the buffer in bytes */ - uint32_t bytes_used; - uint8_t no_more_reading; + uint32_t bytes_left; uint8_t error; uint32_t *tail; uint32_t *start; - void *buffer; + const void *buffer; } bitfile; -#if defined(_MSC_VER) -#define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax -#elif defined(LINUX) || defined(DJGPP) || defined (__MINGW32__) || defined (__CYGWIN__) -#define BSWAP(a) __asm__ ( "bswapl %0\n" : "=r" (a) : "0" (a) ) -#else -#define BSWAP(a) \ - ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff)) -#endif - -static uint32_t bitmask[] = { +#if 0 +static uint32_t const bitmask[] = { 0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0x1FFFF, 0x3FFFF, 0x7FFFF, 0xFFFFF, 0x1FFFFF, 0x3FFFFF, @@ -74,6 +70,7 @@ static uint32_t bitmask[] = { /* added bitmask 32, correct?!?!?! */ , 0xFFFFFFFF }; +#endif void faad_initbits(bitfile *ld, const void *buffer, const uint32_t buffer_size); void faad_endbits(bitfile *ld); @@ -83,6 +80,7 @@ uint8_t faad_byte_align(bitfile *ld); uint32_t faad_get_processed_bits(bitfile *ld); void faad_flushbits_ex(bitfile *ld, uint32_t bits); void faad_rewindbits(bitfile *ld); +void faad_resetbits(bitfile *ld, int bits); uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits DEBUGDEC); #ifdef DRM @@ -93,7 +91,6 @@ uint32_t faad_origbitbuffer_size(bitfile *ld); /* circumvent memory alignment errors on ARM */ static INLINE uint32_t getdword(void *mem) { -#ifdef ARM uint32_t tmp; #ifndef ARCH_IS_BIG_ENDIAN ((uint8_t*)&tmp)[0] = ((uint8_t*)mem)[3]; @@ -108,25 +105,52 @@ static INLINE uint32_t getdword(void *mem) #endif return tmp; -#else - uint32_t tmp; - tmp = *(uint32_t*)mem; +} + +/* reads only n bytes from the stream instead of the standard 4 */ +static /*INLINE*/ uint32_t getdword_n(void *mem, int n) +{ + uint32_t tmp = 0; #ifndef ARCH_IS_BIG_ENDIAN - BSWAP(tmp); + switch (n) + { + case 3: + ((uint8_t*)&tmp)[1] = ((uint8_t*)mem)[2]; + case 2: + ((uint8_t*)&tmp)[2] = ((uint8_t*)mem)[1]; + case 1: + ((uint8_t*)&tmp)[3] = ((uint8_t*)mem)[0]; + default: + break; + } +#else + switch (n) + { + case 3: + ((uint8_t*)&tmp)[2] = ((uint8_t*)mem)[2]; + case 2: + ((uint8_t*)&tmp)[1] = ((uint8_t*)mem)[1]; + case 1: + ((uint8_t*)&tmp)[0] = ((uint8_t*)mem)[0]; + default: + break; + } #endif + return tmp; -#endif } static INLINE uint32_t faad_showbits(bitfile *ld, uint32_t bits) { if (bits <= ld->bits_left) { - return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits]; + //return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits]; + return (ld->bufa << (32 - ld->bits_left)) >> (32 - bits); } bits -= ld->bits_left; - return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits)); + //return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits)); + return ((ld->bufa & ((1<<ld->bits_left)-1)) << bits) | (ld->bufb >> (32 - bits)); } static INLINE void faad_flushbits(bitfile *ld, uint32_t bits) @@ -144,11 +168,11 @@ static INLINE void faad_flushbits(bitfile *ld, uint32_t bits) } /* return next n bits (right adjusted) */ -static INLINE uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC) +static /*INLINE*/ uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC) { uint32_t ret; - if (ld->no_more_reading || n == 0) + if (n == 0) return 0; ret = faad_showbits(ld, n); @@ -230,22 +254,23 @@ static INLINE void faad_flushbits_rev(bitfile *ld, uint32_t bits) ld->start--; ld->bits_left += (32 - bits); - ld->bytes_used += 4; - if (ld->bytes_used == ld->buffer_size) - ld->no_more_reading = 1; - if (ld->bytes_used > ld->buffer_size) + if (ld->bytes_left < 4) + { ld->error = 1; + ld->bytes_left = 0; + } else { + ld->bytes_left -= 4; + } +// if (ld->bytes_left == 0) +// ld->no_more_reading = 1; } } -static INLINE uint32_t faad_getbits_rev(bitfile *ld, uint32_t n +static /*INLINE*/ uint32_t faad_getbits_rev(bitfile *ld, uint32_t n DEBUGDEC) { uint32_t ret; - if (ld->no_more_reading) - return 0; - if (n == 0) return 0; @@ -261,28 +286,73 @@ static INLINE uint32_t faad_getbits_rev(bitfile *ld, uint32_t n } #ifdef DRM +/* CRC lookup table for G8 polynome in DRM standard */ +static const uint8_t crc_table_G8[256] = { + 0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, + 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, + 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, + 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, + 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, + 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, + 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, + 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, + 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, + 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, + 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, + 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, + 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, + 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, + 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, + 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, + 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, + 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, + 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, + 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, + 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, + 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, + 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, + 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, + 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, + 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, + 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, + 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, + 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, + 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, + 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, + 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4, +}; + static uint8_t faad_check_CRC(bitfile *ld, uint16_t len) { - uint8_t CRC; - uint16_t r=255; /* Initialize to all ones */ + int bytes, rem; + unsigned int CRC; + unsigned int r=255; /* Initialize to all ones */ /* CRC polynome used x^8 + x^4 + x^3 + x^2 +1 */ #define GPOLY 0435 faad_rewindbits(ld); - CRC = (uint8_t) ~faad_getbits(ld, 8 - DEBUGVAR(1,999,"faad_check_CRC(): CRC")); /* CRC is stored inverted */ + CRC = (unsigned int) ~faad_getbits(ld, 8 + DEBUGVAR(1,999,"faad_check_CRC(): CRC")) & 0xFF; /* CRC is stored inverted */ + + bytes = len >> 3; + rem = len & 0x7; - for (; len>0; len--) + for (; bytes > 0; bytes--) + { + r = crc_table_G8[( r ^ faad_getbits(ld, 8 DEBUGVAR(1,998,"")) ) & 0xFF]; + } + for (; rem > 0; rem--) { r = ( (r << 1) ^ (( ( faad_get1bit(ld DEBUGVAR(1,998,"")) & 1) ^ ((r >> 7) & 1)) * GPOLY )) & 0xFF; } if (r != CRC) + // if (0) { - return 8; + return 28; } else { return 0; } diff --git a/src/libfaad/cfft.c b/src/libfaad/cfft.c index 61cac2fd5..5b01d75d3 100644 --- a/src/libfaad/cfft.c +++ b/src/libfaad/cfft.c @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: cfft.c,v 1.12 2006/09/26 18:00:31 dgp85 Exp $ +** $Id: cfft.c,v 1.35 2007/11/01 12:33:29 menno Exp $ **/ /* @@ -546,7 +549,7 @@ static void passf5(const uint16_t ido, const uint16_t l1, const complex_t *cc, ComplexMult(&RE(c4), &RE(c5), ti12, ti11, RE(t5), RE(t4)); ComplexMult(&IM(c4), &IM(c5), - ti12, ti12, IM(t5), IM(t4)); + ti12, ti11, IM(t5), IM(t4)); RE(ch[ah+l1]) = RE(c2) + IM(c5); IM(ch[ah+l1]) = IM(c2) - RE(c5); @@ -648,7 +651,7 @@ static void passf5(const uint16_t ido, const uint16_t l1, const complex_t *cc, ComplexMult(&RE(c4), &RE(c5), ti12, ti11, RE(t5), RE(t4)); ComplexMult(&IM(c4), &IM(c5), - ti12, ti12, IM(t5), IM(t4)); + ti12, ti11, IM(t5), IM(t4)); IM(d2) = IM(c2) - RE(c5); IM(d3) = IM(c3) - RE(c4); @@ -992,13 +995,11 @@ cfft_info *cffti(uint16_t n) void cfftu(cfft_info *cfft) { - if ( ! cfft ) return; - - faad_free(cfft->work); + if (cfft->work) faad_free(cfft->work); #ifndef FIXED_POINT - faad_free(cfft->tab); + if (cfft->tab) faad_free(cfft->tab); #endif - faad_free(cfft); + if (cfft) faad_free(cfft); } diff --git a/src/libfaad/cfft.h b/src/libfaad/cfft.h index a29537bed..dc89cdc85 100644 --- a/src/libfaad/cfft.h +++ b/src/libfaad/cfft.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: cfft.h,v 1.9 2005/10/29 23:57:06 tmmm Exp $ +** $Id: cfft.h,v 1.24 2007/11/01 12:33:29 menno Exp $ **/ #ifndef __CFFT_H__ diff --git a/src/libfaad/cfft_tab.h b/src/libfaad/cfft_tab.h index 072a991f1..80b1b75be 100644 --- a/src/libfaad/cfft_tab.h +++ b/src/libfaad/cfft_tab.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: cfft_tab.h,v 1.6 2005/10/29 23:57:06 tmmm Exp $ +** $Id: cfft_tab.h,v 1.21 2007/11/01 12:33:29 menno Exp $ **/ #ifndef __CFFT_TAB_H__ diff --git a/src/libfaad/codebook/hcb.h b/src/libfaad/codebook/hcb.h index 96093300c..29bbca4f8 100644 --- a/src/libfaad/codebook/hcb.h +++ b/src/libfaad/codebook/hcb.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb.h,v 1.6 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb.h,v 1.8 2007/11/01 12:34:10 menno Exp $ **/ #ifndef __HCB_H__ diff --git a/src/libfaad/codebook/hcb_1.h b/src/libfaad/codebook/hcb_1.h index 220299c55..f6632c230 100644 --- a/src/libfaad/codebook/hcb_1.h +++ b/src/libfaad/codebook/hcb_1.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_1.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_1.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_1 */ diff --git a/src/libfaad/codebook/hcb_10.h b/src/libfaad/codebook/hcb_10.h index 60bcab90a..87e621df5 100644 --- a/src/libfaad/codebook/hcb_10.h +++ b/src/libfaad/codebook/hcb_10.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_10.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_10.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_10 */ diff --git a/src/libfaad/codebook/hcb_11.h b/src/libfaad/codebook/hcb_11.h index bd4f647e6..509a1d684 100644 --- a/src/libfaad/codebook/hcb_11.h +++ b/src/libfaad/codebook/hcb_11.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_11.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_11.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_11 */ diff --git a/src/libfaad/codebook/hcb_2.h b/src/libfaad/codebook/hcb_2.h index 6aff6b12b..8edfe525d 100644 --- a/src/libfaad/codebook/hcb_2.h +++ b/src/libfaad/codebook/hcb_2.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_2.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_2.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_2 */ diff --git a/src/libfaad/codebook/hcb_3.h b/src/libfaad/codebook/hcb_3.h index 25b54da90..e9481e198 100644 --- a/src/libfaad/codebook/hcb_3.h +++ b/src/libfaad/codebook/hcb_3.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_3.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_3.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* Binary search huffman table HCB_3 */ diff --git a/src/libfaad/codebook/hcb_4.h b/src/libfaad/codebook/hcb_4.h index 9378b0980..c2b43e005 100644 --- a/src/libfaad/codebook/hcb_4.h +++ b/src/libfaad/codebook/hcb_4.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_4.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_4.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_4 */ diff --git a/src/libfaad/codebook/hcb_5.h b/src/libfaad/codebook/hcb_5.h index 7e50207e3..ca7c473bf 100644 --- a/src/libfaad/codebook/hcb_5.h +++ b/src/libfaad/codebook/hcb_5.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_5.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_5.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* Binary search huffman table HCB_5 */ diff --git a/src/libfaad/codebook/hcb_6.h b/src/libfaad/codebook/hcb_6.h index 12417d997..2181d63d5 100644 --- a/src/libfaad/codebook/hcb_6.h +++ b/src/libfaad/codebook/hcb_6.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_6.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_6.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_6 */ diff --git a/src/libfaad/codebook/hcb_7.h b/src/libfaad/codebook/hcb_7.h index e5392326d..54c85c11d 100644 --- a/src/libfaad/codebook/hcb_7.h +++ b/src/libfaad/codebook/hcb_7.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_7.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_7.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* Binary search huffman table HCB_7 */ diff --git a/src/libfaad/codebook/hcb_8.h b/src/libfaad/codebook/hcb_8.h index 951743bed..6e3f1009e 100644 --- a/src/libfaad/codebook/hcb_8.h +++ b/src/libfaad/codebook/hcb_8.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_8.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_8.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* 2-step huffman table HCB_8 */ diff --git a/src/libfaad/codebook/hcb_9.h b/src/libfaad/codebook/hcb_9.h index daccf6197..bdba2c222 100644 --- a/src/libfaad/codebook/hcb_9.h +++ b/src/libfaad/codebook/hcb_9.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_9.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_9.h,v 1.5 2007/11/01 12:34:11 menno Exp $ **/ /* Binary search huffman table HCB_9 */ diff --git a/src/libfaad/codebook/hcb_sf.h b/src/libfaad/codebook/hcb_sf.h index 494053177..3c02b3d84 100644 --- a/src/libfaad/codebook/hcb_sf.h +++ b/src/libfaad/codebook/hcb_sf.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcb_sf.h,v 1.4 2005/10/29 23:57:08 tmmm Exp $ +** $Id: hcb_sf.h,v 1.7 2007/11/01 12:34:11 menno Exp $ **/ /* Binary search huffman table HCB_SF */ diff --git a/src/libfaad/common.c b/src/libfaad/common.c index 8c0d93e95..595605586 100644 --- a/src/libfaad/common.c +++ b/src/libfaad/common.c @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: common.c,v 1.8 2005/10/29 23:57:06 tmmm Exp $ +** $Id: common.c,v 1.26 2007/11/01 12:33:30 menno Exp $ **/ /* just some common functions that could be used anywhere */ @@ -229,16 +232,16 @@ static uint32_t __r2 = 1; * which gives a period of 18.410.713.077.675.721.215. The result is the * XORed values of both generators. */ -uint32_t random_int(void) +uint32_t ne_rng(uint32_t *__r1, uint32_t *__r2) { uint32_t t1, t2, t3, t4; - t3 = t1 = __r1; t4 = t2 = __r2; // Parity calculation is done via table lookup, this is also available + t3 = t1 = *__r1; t4 = t2 = *__r2; // Parity calculation is done via table lookup, this is also available t1 &= 0xF5; t2 >>= 25; // on CPUs without parity, can be implemented in C and avoid unpredictable t1 = Parity [t1]; t2 &= 0x63; // jumps and slow rotate through the carry flag operations. t1 <<= 31; t2 = Parity [t2]; - return (__r1 = (t3 >> 1) | t1 ) ^ (__r2 = (t4 + t4) | t2 ); + return (*__r1 = (t3 >> 1) | t1 ) ^ (*__r2 = (t4 + t4) | t2 ); } uint32_t ones32(uint32_t x) diff --git a/src/libfaad/common.h b/src/libfaad/common.h index 31f07708a..4419f1eb5 100644 --- a/src/libfaad/common.h +++ b/src/libfaad/common.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: common.h,v 1.17 2006/06/17 20:43:57 dgp85 Exp $ +** $Id: common.h,v 1.72 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __COMMON_H__ @@ -32,13 +35,16 @@ extern "C" { #endif -#ifdef __CYGWIN__ -#define __STRICT_ANSI__ +#ifdef HAVE_CONFIG_H +# include "config.h" #endif -#include "config.h" - +#if 1 #define INLINE __inline +#else +#define INLINE inline +#endif + #if 0 //defined(_WIN32) && !defined(_WIN32_WCE) #define ALIGN __declspec(align(16)) #else @@ -63,10 +69,13 @@ extern "C" { /* Use if target platform has address generators with autoincrement */ //#define PREFER_POINTERS -#if defined(_WIN32_WCE) || defined(__arm__) +#ifdef _WIN32_WCE #define FIXED_POINT #endif +#ifdef __BFIN__ +#define FIXED_POINT +#endif #define ERROR_RESILIENCE @@ -79,8 +88,6 @@ extern "C" { #define LTP_DEC /* Allow decoding of LD profile AAC */ #define LD_DEC -/* Allow decoding of scalable profiles */ -//#define SCALABLE_DEC /* Allow decoding of Digital Radio Mondiale (DRM) */ //#define DRM //#define DRM_PS @@ -114,20 +121,25 @@ extern "C" { //#define SBR_LOW_POWER #define PS_DEC +#ifdef SBR_LOW_POWER +#undef PS_DEC +#endif + /* FIXED POINT: No MAIN decoding */ #ifdef FIXED_POINT # ifdef MAIN_DEC # undef MAIN_DEC # endif -# ifdef SBR_DEC -# undef SBR_DEC -# endif #endif // FIXED_POINT #ifdef DRM -# ifndef SCALABLE_DEC -# define SCALABLE_DEC +# ifndef ALLOW_SMALL_FRAMELENGTH +# define ALLOW_SMALL_FRAMELENGTH # endif +# undef LD_DEC +# undef LTP_DEC +# undef MAIN_DEC +# undef SSR_DEC #endif @@ -152,6 +164,23 @@ extern "C" { /* END COMPILE TIME DEFINITIONS */ +#if defined(_WIN32) && !defined(__MINGW32__) + +#include <stdlib.h> + +typedef unsigned __int64 uint64_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int8 uint8_t; +typedef __int64 int64_t; +typedef __int32 int32_t; +typedef __int16 int16_t; +typedef __int8 int8_t; +typedef float float32_t; + + +#else + #include <stdio.h> #if HAVE_SYS_TYPES_H # include <sys/types.h> @@ -176,8 +205,6 @@ extern "C" { #if HAVE_STRINGS_H # include <strings.h> #endif - -/* precedence defining int-types by header files for all platforms */ #if HAVE_INTTYPES_H # include <inttypes.h> #else @@ -185,30 +212,23 @@ extern "C" { # include <stdint.h> # else /* we need these... */ -# ifdef WIN32 -typedef unsigned __int64 uint64_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int8 uint8_t; -typedef __int64 int64_t; -typedef __int32 int32_t; -typedef __int16 int16_t; -typedef __int8 int8_t; -# else /* WIN32 */ -typedef float float32_t; +#ifndef __TCS__ typedef unsigned long long uint64_t; +typedef long long int64_t; +#else +typedef unsigned long uint64_t; +typedef long int64_t; +#endif typedef unsigned long uint32_t; typedef unsigned short uint16_t; typedef unsigned char uint8_t; -typedef long long int64_t; typedef long int32_t; typedef short int16_t; typedef char int8_t; -# endif /* WIN32 */ # endif #endif #if HAVE_UNISTD_H -# include <unistd.h> +//# include <unistd.h> #endif #ifndef HAVE_FLOAT32_T @@ -229,6 +249,8 @@ char *strchr(), *strrchr(); # endif #endif +#endif + #ifdef WORDS_BIGENDIAN #define ARCH_IS_BIG_ENDIAN #endif @@ -289,7 +311,6 @@ char *strchr(), *strrchr(); } -#ifndef HAVE_LRINTF #if defined(_WIN32) && !defined(__MINGW32__) #define HAS_LRINTF static INLINE int lrintf(float f) @@ -302,7 +323,9 @@ char *strchr(), *strrchr(); } return i; } - #elif (defined(__i386__) && defined(__GNUC__)) + #elif (defined(__i386__) && defined(__GNUC__) && \ + !defined(__CYGWIN__) && !defined(__MINGW32__)) + #ifndef HAVE_LRINTF #define HAS_LRINTF // from http://www.stereopsis.com/FPU.html static INLINE int lrintf(float f) @@ -315,8 +338,9 @@ char *strchr(), *strrchr(); : "m" (f)); return i; } + #endif /* HAVE_LRINTF */ #endif -#endif + #ifdef __ICL /* only Intel C compiler has fmath ??? */ @@ -331,8 +355,6 @@ char *strchr(), *strrchr(); #else -#include <math.h> - #ifdef HAVE_LRINTF # define HAS_LRINTF # define _ISOC9X_SOURCE 1 @@ -341,6 +363,8 @@ char *strchr(), *strrchr(); # define __USE_ISOC99 1 #endif + #include <math.h> + #ifdef HAVE_SINF # define sin sinf #error @@ -380,7 +404,7 @@ typedef real_t complex_t[2]; /* common functions */ uint8_t cpu_has_sse(void); -uint32_t random_int(void); +uint32_t ne_rng(uint32_t *__r1, uint32_t *__r2); uint32_t ones32(uint32_t x); uint32_t floor_log2(uint32_t x); uint32_t wl_min_lzc(uint32_t x); diff --git a/src/libfaad/decoder.c b/src/libfaad/decoder.c index 33aee247e..7fb4b1965 100644 --- a/src/libfaad/decoder.c +++ b/src/libfaad/decoder.c @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: decoder.c,v 1.10 2005/10/29 23:57:06 tmmm Exp $ +** $Id: decoder.c,v 1.111 2007/11/01 12:33:30 menno Exp $ **/ #include "common.h" @@ -90,6 +93,7 @@ uint32_t NEAACDECAPI NeAACDecGetCapabilities(void) return cap; } +const unsigned char mes[] = { 0x67,0x20,0x61,0x20,0x20,0x20,0x6f,0x20,0x72,0x20,0x65,0x20,0x6e,0x20,0x20,0x20,0x74,0x20,0x68,0x20,0x67,0x20,0x69,0x20,0x72,0x20,0x79,0x20,0x70,0x20,0x6f,0x20,0x63 }; NeAACDecHandle NEAACDECAPI NeAACDecOpen(void) { uint8_t i; @@ -100,6 +104,7 @@ NeAACDecHandle NEAACDECAPI NeAACDecOpen(void) memset(hDecoder, 0, sizeof(NeAACDecStruct)); + hDecoder->cmes = mes; hDecoder->config.outputFormat = FAAD_FMT_16BIT; hDecoder->config.defObjectType = MAIN; hDecoder->config.defSampleRate = 44100; /* Default: 44.1kHz */ @@ -116,6 +121,9 @@ NeAACDecHandle NEAACDECAPI NeAACDecOpen(void) hDecoder->frame = 0; hDecoder->sample_buffer = NULL; + hDecoder->__r1 = 1; + hDecoder->__r2 = 1; + for (i = 0; i < MAX_CHANNELS; i++) { hDecoder->window_shape_prev[i] = 0; @@ -194,6 +202,7 @@ uint8_t NEAACDECAPI NeAACDecSetConfiguration(NeAACDecHandle hDecoder, return 0; } + int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, uint32_t buffer_size, uint32_t *samplerate, uint8_t *channels) @@ -203,6 +212,7 @@ int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, adif_header adif; adts_header adts; + if ((hDecoder == NULL) || (samplerate == NULL) || (channels == NULL)) return -1; @@ -257,7 +267,6 @@ int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, } faad_endbits(&ld); } - hDecoder->channelConfiguration = *channels; #if (defined(PS_DEC) || defined(DRM_PS)) /* check if we have a mono file */ @@ -268,6 +277,8 @@ int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, } #endif + hDecoder->channelConfiguration = *channels; + #ifdef SBR_DEC /* implicit signalling */ if (*samplerate <= 24000 && !(hDecoder->config.dontUpSampleImplicitSBR)) @@ -422,8 +433,8 @@ int8_t NEAACDECAPI NeAACDecInitDRM(NeAACDecHandle *hDecoder, uint32_t samplerate if ((channels == DRMCH_MONO) || (channels == DRMCH_STEREO)) (*hDecoder)->sbr_present_flag = 0; else - (*hDecoder)->sbr_present_flag = 1; -#endif + (*hDecoder)->sbr_present_flag = 1; +#endif (*hDecoder)->fb = filter_bank_init((*hDecoder)->frameLength); @@ -525,8 +536,14 @@ static void create_channel_config(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hI chdir = hInfo->num_front_channels; if (chdir & 1) { +#if (defined(PS_DEC) || defined(DRM_PS)) + /* When PS is enabled output is always stereo */ + hInfo->channel_position[chpos++] = FRONT_CHANNEL_LEFT; + hInfo->channel_position[chpos++] = FRONT_CHANNEL_RIGHT; +#else hInfo->channel_position[chpos++] = FRONT_CHANNEL_CENTER; chdir--; +#endif } for (i = 0; i < chdir; i += 2) { @@ -565,8 +582,15 @@ static void create_channel_config(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hI switch (hDecoder->channelConfiguration) { case 1: +#if (defined(PS_DEC) || defined(DRM_PS)) + /* When PS is enabled output is always stereo */ + hInfo->num_front_channels = 2; + hInfo->channel_position[0] = FRONT_CHANNEL_LEFT; + hInfo->channel_position[1] = FRONT_CHANNEL_RIGHT; +#else hInfo->num_front_channels = 1; hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; +#endif break; case 2: hInfo->num_front_channels = 2; @@ -722,13 +746,25 @@ void* NEAACDECAPI NeAACDecDecode2(NeAACDecHandle hDecoder, sample_buffer, sample_buffer_size); } +#ifdef DRM + +#define ERROR_STATE_INIT 6 + +static void conceal_output(NeAACDecHandle hDecoder, uint16_t frame_len, + uint8_t out_ch, void *sample_buffer) +{ + return; +} +#endif + static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, uint8_t *buffer, uint32_t buffer_size, void **sample_buffer2, uint32_t sample_buffer_size) { + uint16_t i; uint8_t channels = 0; uint8_t output_channels = 0; - bitfile ld; + bitfile ld = {0}; uint32_t bitsconsumed; uint16_t frame_len; void *sample_buffer; @@ -753,6 +789,33 @@ static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, memset(hInfo, 0, sizeof(NeAACDecFrameInfo)); memset(hDecoder->internal_channel, 0, MAX_CHANNELS*sizeof(hDecoder->internal_channel[0])); +#ifdef USE_TIME_LIMIT + if ((TIME_LIMIT * get_sample_rate(hDecoder->sf_index)) > hDecoder->TL_count) + { + hDecoder->TL_count += 1024; + } else { + hInfo->error = (NUM_ERROR_MESSAGES-1); + goto error; + } +#endif + + + /* check for some common metadata tag types in the bitstream + * No need to return an error + */ + /* ID3 */ + if (buffer_size >= 128) + { + if (memcmp(buffer, "TAG", 3) == 0) + { + /* found it */ + hInfo->bytesconsumed = 128; /* 128 bytes fixed size */ + /* no error, but no output either */ + return NULL; + } + } + + /* initialize the bitstream */ faad_initbits(&ld, buffer, buffer_size); @@ -780,7 +843,7 @@ static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, /* We do not support stereo right now */ if (0) //(hDecoder->channelConfiguration == 2) { - hInfo->error = 8; // Throw CRC error + hInfo->error = 28; // Throw CRC error goto error; } @@ -808,14 +871,14 @@ static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, #endif /* decode the complete bitstream */ -#ifdef SCALABLE_DEC - if ((hDecoder->object_type == 6) || (hDecoder->object_type == DRM_ER_LC)) +#ifdef DRM + if (/*(hDecoder->object_type == 6) ||*/ (hDecoder->object_type == DRM_ER_LC)) { - aac_scalable_main_element(hDecoder, hInfo, &ld, &hDecoder->pce, hDecoder->drc); + DRM_aac_scalable_main_element(hDecoder, hInfo, &ld, &hDecoder->pce, hDecoder->drc); } else { #endif raw_data_block(hDecoder, hInfo, &ld, &hDecoder->pce, hDecoder->drc); -#ifdef SCALABLE_DEC +#ifdef DRM } #endif @@ -978,10 +1041,16 @@ static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, } #endif + sample_buffer = output_to_PCM(hDecoder, hDecoder->time_out, sample_buffer, output_channels, frame_len, hDecoder->config.outputFormat); +#ifdef DRM + //conceal_output(hDecoder, frame_len, output_channels, sample_buffer); +#endif + + hDecoder->postSeekResetFlag = 0; hDecoder->frame++; @@ -1013,6 +1082,30 @@ static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, error: + +#ifdef DRM + hDecoder->error_state = ERROR_STATE_INIT; +#endif + + /* reset filterbank state */ + for (i = 0; i < MAX_CHANNELS; i++) + { + if (hDecoder->fb_intermed[i] != NULL) + { + memset(hDecoder->fb_intermed[i], 0, hDecoder->frameLength*sizeof(real_t)); + } + } +#ifdef SBR_DEC + for (i = 0; i < MAX_SYNTAX_ELEMENTS; i++) + { + if (hDecoder->sbr[i] != NULL) + { + sbrReset(hDecoder->sbr[i]); + } + } +#endif + + faad_endbits(&ld); /* cleanup */ diff --git a/src/libfaad/decoder.h b/src/libfaad/decoder.h index 5a3a2663f..a4cb567d2 100644 --- a/src/libfaad/decoder.h +++ b/src/libfaad/decoder.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: decoder.h,v 1.9 2005/10/29 23:57:06 tmmm Exp $ +** $Id: decoder.h,v 1.48 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __DECODER_H__ diff --git a/src/libfaad/drc.c b/src/libfaad/drc.c index ef4b6a96e..3c9ff3ae0 100644 --- a/src/libfaad/drc.c +++ b/src/libfaad/drc.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: drc.c,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: drc.c,v 1.28 2007/11/01 12:33:30 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/drc.h b/src/libfaad/drc.h index 046ecbc3e..49118bcd0 100644 --- a/src/libfaad/drc.h +++ b/src/libfaad/drc.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: drc.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: drc.h,v 1.22 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __DRC_H__ diff --git a/src/libfaad/drm_dec.c b/src/libfaad/drm_dec.c index a782b0f22..61cb8180e 100644 --- a/src/libfaad/drm_dec.c +++ b/src/libfaad/drm_dec.c @@ -1,28 +1,31 @@ /* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: drm_dec.c,v 1.1 2005/10/30 00:50:19 tmmm Exp $ +** $Id: drm_dec.c,v 1.9 2007/11/01 12:33:30 menno Exp $ **/ #include <stdlib.h> @@ -243,17 +246,9 @@ static const real_t sa_sqrt_1_minus[8][2] = { { FRAC_CONST(0.929071574), FRAC_CONST(0) } }; -static const uint8_t sa_freq_scale[9][2] = +static const uint8_t sa_freq_scale[9] = { - { 0, 0}, - { 1, 1}, - { 2, 2}, - { 3, 3}, - { 5, 5}, - { 7, 7}, - {10,10}, - {13,13}, - {46,23} + 0, 1, 2, 3, 5, 7, 10, 13, 23 }; static const uint8_t pan_freq_scale[21] = @@ -290,9 +285,9 @@ static const real_t filter_coeff[] = FRAC_CONST(0.48954165955695) }; -static const uint8_t delay_length[][2] = +static const uint8_t delay_length[3] = { - { 1, 3 }, { 2, 4 }, { 3, 5 } + 3, 4, 5 }; static const real_t delay_fraction[] = @@ -300,15 +295,9 @@ static const real_t delay_fraction[] = FRAC_CONST(0.43), FRAC_CONST(0.75), FRAC_CONST(0.347) }; -static const real_t peak_decay[2] = -{ - FRAC_CONST(0.58664621951003), FRAC_CONST(0.76592833836465) -}; +static const real_t peak_decay = FRAC_CONST(0.76592833836465); -static const real_t smooth_coeff[2] = -{ - FRAC_CONST(0.6), FRAC_CONST(0.25) -}; +static const real_t smooth_coeff = FRAC_CONST(0.25); /* Please note that these are the same tables as in plain PS */ static const complex_t Q_Fract_allpass_Qmf[][3] = { @@ -566,25 +555,22 @@ static void drm_ps_delta_decode(drm_ps_info *ps) { if (ps->bs_sa_dt_flag && !ps->g_last_had_sa) { - for (band = 0; band < DRM_NUM_SA_BANDS; band++) - { - ps->g_prev_sa_index[band] = 0; - } - } - if (ps->bs_sa_dt_flag) - { + /* wait until we get a DT frame */ + ps->bs_enable_sa = 0; + } else if (ps->bs_sa_dt_flag) { + /* DT frame, we have a last frame, so we can decode */ ps->g_sa_index[0] = sa_delta_clip(ps, ps->g_prev_sa_index[0]+ps->bs_sa_data[0]); - } else { + /* DF always decodable */ ps->g_sa_index[0] = sa_delta_clip(ps,ps->bs_sa_data[0]); } for (band = 1; band < DRM_NUM_SA_BANDS; band++) { - if (ps->bs_sa_dt_flag) + if (ps->bs_sa_dt_flag && ps->g_last_had_sa) { ps->g_sa_index[band] = sa_delta_clip(ps, ps->g_prev_sa_index[band] + ps->bs_sa_data[band]); - } else { + } else if (!ps->bs_sa_dt_flag) { ps->g_sa_index[band] = sa_delta_clip(ps, ps->g_sa_index[band-1] + ps->bs_sa_data[band]); } } @@ -618,28 +604,19 @@ static void drm_ps_delta_decode(drm_ps_info *ps) { if (ps->bs_pan_dt_flag && !ps->g_last_had_pan) { -/* The DRM PS spec doesn't say anything about this case. (deltacoded in time without a previous frame) - AAC PS spec you must tread previous frame as 0, so that's what we try. -*/ - for (band = 0; band < DRM_NUM_PAN_BANDS; band++) - { - ps->g_prev_pan_index[band] = 0; - } - } - - if (ps->bs_pan_dt_flag) - { - ps->g_pan_index[0] = pan_delta_clip(ps, ps->g_prev_pan_index[0]+ps->bs_pan_data[0]); + ps->bs_enable_pan = 0; + } else if (ps->bs_pan_dt_flag) { + ps->g_pan_index[0] = pan_delta_clip(ps, ps->g_prev_pan_index[0]+ps->bs_pan_data[0]); } else { - ps->g_pan_index[0] = pan_delta_clip(ps, ps->bs_pan_data[0]); + ps->g_pan_index[0] = pan_delta_clip(ps, ps->bs_pan_data[0]); } for (band = 1; band < DRM_NUM_PAN_BANDS; band++) { - if (ps->bs_pan_dt_flag) + if (ps->bs_pan_dt_flag && ps->g_last_had_pan) { ps->g_pan_index[band] = pan_delta_clip(ps, ps->g_prev_pan_index[band] + ps->bs_pan_data[band]); - } else { + } else if (!ps->bs_pan_dt_flag) { ps->g_pan_index[band] = pan_delta_clip(ps, ps->g_pan_index[band-1] + ps->bs_pan_data[band]); } } @@ -658,7 +635,7 @@ static void drm_ps_delta_decode(drm_ps_info *ps) } } -static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[38][64], uint8_t rateselect) +static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[38][64]) { uint8_t s, b, k; complex_t qfrac, tmp0, tmp, in, R0; @@ -673,7 +650,7 @@ static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[38][64], uint8_t ra uint32_t in_re, in_im; #endif - for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b++) + for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS]; b++) { /* set delay indices */ for (k = 0; k < NUM_OF_LINKS; k++) @@ -701,16 +678,16 @@ static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[38][64], uint8_t ra power = MUL_R(RE(in),RE(in)) + MUL_R(IM(in),IM(in)); #endif - ps->peakdecay_fast[b] = MUL_F(ps->peakdecay_fast[b], peak_decay[rateselect]); + ps->peakdecay_fast[b] = MUL_F(ps->peakdecay_fast[b], peak_decay); if (ps->peakdecay_fast[b] < power) ps->peakdecay_fast[b] = power; peakdiff = ps->prev_peakdiff[b]; - peakdiff += MUL_F((ps->peakdecay_fast[b] - power - ps->prev_peakdiff[b]), smooth_coeff[rateselect]); + peakdiff += MUL_F((ps->peakdecay_fast[b] - power - ps->prev_peakdiff[b]), smooth_coeff); ps->prev_peakdiff[b] = peakdiff; nrg = ps->prev_nrg[b]; - nrg += MUL_F((power - ps->prev_nrg[b]), smooth_coeff[rateselect]); + nrg += MUL_F((power - ps->prev_nrg[b]), smooth_coeff); ps->prev_nrg[b] = nrg; if (MUL_R(peakdiff, gamma) <= nrg) { @@ -763,7 +740,7 @@ static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[38][64], uint8_t ra for (k = 0; k < NUM_OF_LINKS; k++) { - if (++temp_delay_ser[k] >= delay_length[k][rateselect]) + if (++temp_delay_ser[k] >= delay_length[k]) temp_delay_ser[k] = 0; } } @@ -773,7 +750,7 @@ static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[38][64], uint8_t ra ps->delay_buf_index_ser[k] = temp_delay_ser[k]; } -static void drm_add_ambiance(drm_ps_info *ps, uint8_t rateselect, qmf_t X_left[38][64], qmf_t X_right[38][64]) +static void drm_add_ambiance(drm_ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64]) { uint8_t s, b, ifreq, qclass; real_t sa_map[MAX_SA_BAND], sa_dir_map[MAX_SA_BAND], k_sa_map[MAX_SA_BAND], k_sa_dir_map[MAX_SA_BAND]; @@ -783,7 +760,7 @@ static void drm_add_ambiance(drm_ps_info *ps, uint8_t rateselect, qmf_t X_left[3 { /* Instead of dequantization and mapping, we use an inverse mapping to look up all the values we need */ - for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b++) + for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS]; b++) { const real_t inv_f_num_of_subsamples = FRAC_CONST(0.03333333333); @@ -804,7 +781,7 @@ static void drm_add_ambiance(drm_ps_info *ps, uint8_t rateselect, qmf_t X_left[3 for (s = 0; s < NUM_OF_SUBSAMPLES; s++) { - for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b++) + for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS]; b++) { QMF_RE(X_right[s][b]) = MUL_F(QMF_RE(X_left[s][b]), sa_dir_map[b]) - MUL_F(QMF_RE(ps->SA[s][b]), sa_map[b]); QMF_IM(X_right[s][b]) = MUL_F(QMF_IM(X_left[s][b]), sa_dir_map[b]) - MUL_F(QMF_IM(ps->SA[s][b]), sa_map[b]); @@ -814,7 +791,7 @@ static void drm_add_ambiance(drm_ps_info *ps, uint8_t rateselect, qmf_t X_left[3 sa_map[b] += k_sa_map[b]; sa_dir_map[b] += k_sa_dir_map[b]; } - for (b = sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b < NUM_OF_QMF_CHANNELS; b++) + for (b = sa_freq_scale[DRM_NUM_SA_BANDS]; b < NUM_OF_QMF_CHANNELS; b++) { QMF_RE(X_right[s][b]) = QMF_RE(X_left[s][b]); QMF_IM(X_right[s][b]) = QMF_IM(X_left[s][b]); @@ -833,7 +810,7 @@ static void drm_add_ambiance(drm_ps_info *ps, uint8_t rateselect, qmf_t X_left[3 } } -static void drm_add_pan(drm_ps_info *ps, uint8_t rateselect, qmf_t X_left[38][64], qmf_t X_right[38][64]) +static void drm_add_pan(drm_ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64]) { uint8_t s, b, qclass, ifreq; real_t tmp, coeff1, coeff2; @@ -924,10 +901,8 @@ void drm_ps_free(drm_ps_info *ps) } /* main DRM PS decoding function */ -uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, qmf_t X_left[38][64], qmf_t X_right[38][64]) -{ - uint8_t rateselect = (samplerate >= 24000); - +uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, qmf_t X_left[38][64], qmf_t X_right[38][64]) +{ if (ps == NULL) { memcpy(X_right, X_left, sizeof(qmf_t)*30*64); @@ -958,8 +933,8 @@ uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, qmf_t ps->drm_ps_data_available = 0; - drm_calc_sa_side_signal(ps, X_left, rateselect); - drm_add_ambiance(ps, rateselect, X_left, X_right); + drm_calc_sa_side_signal(ps, X_left); + drm_add_ambiance(ps, X_left, X_right); if (ps->bs_enable_sa) { @@ -973,7 +948,7 @@ uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, qmf_t if (ps->bs_enable_pan) { - drm_add_pan(ps, rateselect, X_left, X_right); + drm_add_pan(ps, X_left, X_right); ps->g_last_had_pan = 1; diff --git a/src/libfaad/drm_dec.h b/src/libfaad/drm_dec.h index bb7d6dc93..d0ac995e4 100644 --- a/src/libfaad/drm_dec.h +++ b/src/libfaad/drm_dec.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: drm_dec.h,v 1.1 2005/10/30 00:50:19 tmmm Exp $ +** $Id: drm_dec.h,v 1.8 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __DRM_DEC_H__ @@ -88,7 +91,7 @@ uint16_t drm_ps_data(drm_ps_info *ps, bitfile *ld); drm_ps_info *drm_ps_init(void); void drm_ps_free(drm_ps_info *ps); -uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, qmf_t X_left[38][64], qmf_t X_right[38][64]); +uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, qmf_t X_left[38][64], qmf_t X_right[38][64]); #ifdef __cplusplus } diff --git a/src/libfaad/error.c b/src/libfaad/error.c index 2fbe08fc1..c552e06cd 100644 --- a/src/libfaad/error.c +++ b/src/libfaad/error.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: error.c,v 1.8 2005/10/29 23:57:06 tmmm Exp $ +** $Id: error.c,v 1.32 2007/11/01 12:33:30 menno Exp $ **/ #include "common.h" @@ -56,6 +59,11 @@ char *err_msg[] = { "Unexpected fill element with SBR data", "Not all elements were provided with SBR data", "LTP decoding not available", - "Output data buffer too small" + "Output data buffer too small", + "CRC error in DRM data", + "PNS not allowed in DRM data stream", + "No standard extension payload allowed in DRM", + "PCE shall be the first element in a frame", + "Bitstream value not allowed by specification" }; diff --git a/src/libfaad/error.h b/src/libfaad/error.h index 1009a9f57..7f750217c 100644 --- a/src/libfaad/error.h +++ b/src/libfaad/error.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: error.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: error.h,v 1.26 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __ERROR_H__ @@ -32,7 +35,7 @@ extern "C" { #endif -#define NUM_ERROR_MESSAGES 28 +#define NUM_ERROR_MESSAGES 33 extern char *err_msg[]; #ifdef __cplusplus diff --git a/src/libfaad/faad.h b/src/libfaad/faad.h deleted file mode 100644 index e46c31d87..000000000 --- a/src/libfaad/faad.h +++ /dev/null @@ -1,217 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software 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 -** 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 -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id: faad.h,v 1.7 2004/12/03 01:15:30 tmattern Exp $ -**/ - -#ifndef __AACDEC_H__ -#define __AACDEC_H__ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifdef _WIN32 - #pragma pack(push, 8) - #ifndef FAADAPI - #define FAADAPI __cdecl - #endif -#else - #ifndef FAADAPI - #define FAADAPI - #endif -#endif - -#define FAAD2_VERSION "2.0 " - -/* object types for AAC */ -#define MAIN 1 -#define LC 2 -#define SSR 3 -#define LTP 4 -#define HE_AAC 5 -#define ER_LC 17 -#define ER_LTP 19 -#define LD 23 -#define DRM_ER_LC 27 /* special object type for DRM */ - -/* header types */ -#define RAW 0 -#define ADIF 1 -#define ADTS 2 - -/* SBR signalling */ -#define NO_SBR 0 -#define SBR_UPSAMPLED 1 -#define SBR_DOWNSAMPLED 2 -#define NO_SBR_UPSAMPLED 3 - -/* library output formats */ -#define FAAD_FMT_16BIT 1 -#define FAAD_FMT_24BIT 2 -#define FAAD_FMT_32BIT 3 -#define FAAD_FMT_FLOAT 4 -#define FAAD_FMT_DOUBLE 5 - -/* Capabilities */ -#define LC_DEC_CAP (1<<0) /* Can decode LC */ -#define MAIN_DEC_CAP (1<<1) /* Can decode MAIN */ -#define LTP_DEC_CAP (1<<2) /* Can decode LTP */ -#define LD_DEC_CAP (1<<3) /* Can decode LD */ -#define ERROR_RESILIENCE_CAP (1<<4) /* Can decode ER */ -#define FIXED_POINT_CAP (1<<5) /* Fixed point */ - -/* Channel definitions */ -#define FRONT_CHANNEL_CENTER (1) -#define FRONT_CHANNEL_LEFT (2) -#define FRONT_CHANNEL_RIGHT (3) -#define SIDE_CHANNEL_LEFT (4) -#define SIDE_CHANNEL_RIGHT (5) -#define BACK_CHANNEL_LEFT (6) -#define BACK_CHANNEL_RIGHT (7) -#define BACK_CHANNEL_CENTER (8) -#define LFE_CHANNEL (9) -#define UNKNOWN_CHANNEL (0) - -/* DRM channel definitions */ -#define DRMCH_MONO 1 -#define DRMCH_STEREO 2 -#define DRMCH_SBR_MONO 3 -#define DRMCH_SBR_LC_STEREO 4 -#define DRMCH_SBR_STEREO 5 - - -/* A decode call can eat up to FAAD_MIN_STREAMSIZE bytes per decoded channel, - so at least so much bytes per channel should be available in this stream */ -#define FAAD_MIN_STREAMSIZE 768 /* 6144 bits/channel */ - - -typedef void *faacDecHandle; - -typedef struct mp4AudioSpecificConfig -{ - /* Audio Specific Info */ - unsigned char objectTypeIndex; - unsigned char samplingFrequencyIndex; - unsigned long samplingFrequency; - unsigned char channelsConfiguration; - - /* GA Specific Info */ - unsigned char frameLengthFlag; - unsigned char dependsOnCoreCoder; - unsigned short coreCoderDelay; - unsigned char extensionFlag; - unsigned char aacSectionDataResilienceFlag; - unsigned char aacScalefactorDataResilienceFlag; - unsigned char aacSpectralDataResilienceFlag; - unsigned char epConfig; - - char sbr_present_flag; - char forceUpSampling; -} mp4AudioSpecificConfig; - -typedef struct faacDecConfiguration -{ - unsigned char defObjectType; - unsigned long defSampleRate; - unsigned char outputFormat; - unsigned char downMatrix; - unsigned char useOldADTSFormat; - unsigned char dontUpSampleImplicitSBR; -} faacDecConfiguration, *faacDecConfigurationPtr; - -typedef struct faacDecFrameInfo -{ - unsigned long bytesconsumed; - unsigned long samples; - unsigned char channels; - unsigned char error; - unsigned long samplerate; - - /* SBR: 0: off, 1: on; upsample, 2: on; downsampled, 3: off; upsampled */ - unsigned char sbr; - - /* MPEG-4 ObjectType */ - unsigned char object_type; - - /* AAC header type; MP4 will be signalled as RAW also */ - unsigned char header_type; - - /* multichannel configuration */ - unsigned char num_front_channels; - unsigned char num_side_channels; - unsigned char num_back_channels; - unsigned char num_lfe_channels; - unsigned char channel_position[64]; -} faacDecFrameInfo; - -char* FAADAPI faacDecGetErrorMessage(unsigned char errcode); - -unsigned long FAADAPI faacDecGetCapabilities(void); - -faacDecHandle FAADAPI faacDecOpen(void); - -faacDecConfigurationPtr FAADAPI faacDecGetCurrentConfiguration(faacDecHandle hDecoder); - -unsigned char FAADAPI faacDecSetConfiguration(faacDecHandle hDecoder, - faacDecConfigurationPtr config); - -/* Init the library based on info from the AAC file (ADTS/ADIF) */ -long FAADAPI faacDecInit(faacDecHandle hDecoder, - unsigned char *buffer, - unsigned long buffer_size, - unsigned long *samplerate, - unsigned char *channels); - -/* Init the library using a DecoderSpecificInfo */ -char FAADAPI faacDecInit2(faacDecHandle hDecoder, unsigned char *pBuffer, - unsigned long SizeOfDecoderSpecificInfo, - unsigned long *samplerate, unsigned char *channels); - -/* Init the library for DRM */ -char FAADAPI faacDecInitDRM(faacDecHandle hDecoder, unsigned long samplerate, - unsigned char channels); - -void FAADAPI faacDecPostSeekReset(faacDecHandle hDecoder, long frame); - -void FAADAPI faacDecClose(faacDecHandle hDecoder); - -void* FAADAPI faacDecDecode(faacDecHandle hDecoder, - faacDecFrameInfo *hInfo, - unsigned char *buffer, - unsigned long buffer_size); - -char FAADAPI AudioSpecificConfig(unsigned char *pBuffer, - unsigned long buffer_size, - mp4AudioSpecificConfig *mp4ASC); - -#ifdef _WIN32 - #pragma pack(pop) -#endif - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif diff --git a/src/libfaad/filtbank.c b/src/libfaad/filtbank.c index 2919b5be3..eaeddcce6 100644 --- a/src/libfaad/filtbank.c +++ b/src/libfaad/filtbank.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: filtbank.c,v 1.10 2005/10/29 23:57:06 tmmm Exp $ +** $Id: filtbank.c,v 1.45 2007/11/01 12:33:30 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/filtbank.h b/src/libfaad/filtbank.h index 54c72c0ef..de0149c97 100644 --- a/src/libfaad/filtbank.h +++ b/src/libfaad/filtbank.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: filtbank.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: filtbank.h,v 1.27 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __FILTBANK_H__ diff --git a/src/libfaad/fixed.h b/src/libfaad/fixed.h index c58ee26cb..531583772 100644 --- a/src/libfaad/fixed.h +++ b/src/libfaad/fixed.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: fixed.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: fixed.h,v 1.32 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __FIXED_H__ @@ -36,6 +39,7 @@ extern "C" { #include <cmnintrin.h> #endif + #define COEF_BITS 28 #define COEF_PRECISION (1 << COEF_BITS) #define REAL_BITS 14 // MAXIMUM OF 14 FOR FIXED POINT SBR @@ -240,9 +244,27 @@ static INLINE void ComplexMult(real_t *y1, real_t *y2, return _MulHigh(A,B) << (32-FRAC_BITS); } #else +#ifdef __BFIN__ +#define _MulHigh(X,Y) ({ int __xxo; \ + asm ( \ + "a1 = %2.H * %1.L (IS,M);\n\t" \ + "a0 = %1.H * %2.H, a1+= %1.H * %2.L (IS,M);\n\t"\ + "a1 = a1 >>> 16;\n\t" \ + "%0 = (a0 += a1);\n\t" \ + : "=d" (__xxo) : "d" (X), "d" (Y) : "A0","A1"); __xxo; }) + +#define MUL_F(X,Y) ({ int __xxo; \ + asm ( \ + "a1 = %2.H * %1.L (M);\n\t" \ + "a0 = %1.H * %2.H, a1+= %1.H * %2.L (M);\n\t" \ + "a1 = a1 >>> 16;\n\t" \ + "%0 = (a0 += a1);\n\t" \ + : "=d" (__xxo) : "d" (X), "d" (Y) : "A0","A1"); __xxo; }) +#else #define _MulHigh(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (FRAC_SIZE-1))) >> FRAC_SIZE) #define MUL_F(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (FRAC_BITS-1))) >> FRAC_BITS) #endif +#endif #define MUL_Q2(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (Q2_BITS-1))) >> Q2_BITS) #define MUL_SHIFT6(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (6-1))) >> 6) #define MUL_SHIFT23(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (23-1))) >> 23) diff --git a/src/libfaad/hcr.c b/src/libfaad/hcr.c index 94f08fd2a..c76629641 100644 --- a/src/libfaad/hcr.c +++ b/src/libfaad/hcr.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2004 G.C. Pascutto, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: hcr.c,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: hcr.c,v 1.24 2007/11/01 12:33:30 menno Exp $ **/ #include "common.h" @@ -222,6 +225,7 @@ uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, uint16_t sp_offset[8]; uint16_t g, i, sortloop, set, bitsread; + uint16_t bitsleft, codewordsleft; uint8_t w_idx, sfb, this_CB, last_CB, this_sec_CB; const uint16_t nshort = hDecoder->frameLength/8; @@ -236,7 +240,7 @@ uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, /* since there is spectral data, at least one codeword has nonzero length */ if (ics->length_of_longest_codeword == 0) return 10; - + if (sp_data_len < ics->length_of_longest_codeword) return 10; @@ -272,7 +276,7 @@ uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, for (sfb = 0; sfb < ics->max_sfb; sfb++) { /* loop over all in this sfb, 4 lines per loop */ - for (w_idx = 0; 4*w_idx < (ics->swb_offset[sfb+1] - ics->swb_offset[sfb]); w_idx++) + for (w_idx = 0; 4*w_idx < (min(ics->swb_offset[sfb+1], ics->swb_offset_max) - ics->swb_offset[sfb]); w_idx++) { for(g = 0; g < ics->num_window_groups; g++) { @@ -404,6 +408,25 @@ uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, rewrev_bits(&segment[i]); } +#if 0 // Seems to give false errors + bitsleft = 0; + + for (i = 0; i < numberOfSegments && !bitsleft; i++) + bitsleft += segment[i].len; + + if (bitsleft) return 10; + + codewordsleft = 0; + + for (i = 0; (i < numberOfCodewords - numberOfSegments) && (!codewordsleft); i++) + if (!codeword[i].decoded) + codewordsleft++; + + if (codewordsleft) return 10; +#endif + + return 0; + } #endif diff --git a/src/libfaad/huffman.c b/src/libfaad/huffman.c index 6c24a6cec..e2656c089 100644 --- a/src/libfaad/huffman.c +++ b/src/libfaad/huffman.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: huffman.c,v 1.5 2005/10/29 23:57:06 tmmm Exp $ +** $Id: huffman.c,v 1.26 2007/11/01 12:33:30 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/huffman.h b/src/libfaad/huffman.h index cffe23093..f8bcb237e 100644 --- a/src/libfaad/huffman.h +++ b/src/libfaad/huffman.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: huffman.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: huffman.h,v 1.28 2007/11/01 12:33:30 menno Exp $ **/ #ifndef __HUFFMAN_H__ diff --git a/src/libfaad/ic_predict.c b/src/libfaad/ic_predict.c index 82753a9f2..70027ba2f 100644 --- a/src/libfaad/ic_predict.c +++ b/src/libfaad/ic_predict.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ic_predict.c,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: ic_predict.c,v 1.28 2007/11/01 12:33:31 menno Exp $ **/ #include "common.h" @@ -81,7 +84,8 @@ static void ic_predict(pred_state *state, real_t input, real_t *output, uint8_t { uint16_t tmp; int16_t i, j; - real_t dr1, predictedvalue; + real_t dr1; + float32_t predictedvalue; real_t e0, e1; real_t k1, k2; @@ -114,7 +118,7 @@ static void ic_predict(pred_state *state, real_t input, real_t *output, uint8_t #define B 0.953125 real_t c = COR[0]; real_t v = VAR[0]; - real_t tmp; + float32_t tmp; if (c == 0 || v <= 1) { k1 = 0; @@ -144,7 +148,7 @@ static void ic_predict(pred_state *state, real_t input, real_t *output, uint8_t #define B 0.953125 real_t c = COR[1]; real_t v = VAR[1]; - real_t tmp; + float32_t tmp; if (c == 0 || v <= 1) { k2 = 0; @@ -209,7 +213,7 @@ void pns_reset_pred_state(ic_stream *ics, pred_state *state) if (is_noise(ics, g, sfb)) { offs = ics->swb_offset[sfb]; - offs2 = ics->swb_offset[sfb+1]; + offs2 = min(ics->swb_offset[sfb+1], ics->swb_offset_max); for (i = offs; i < offs2; i++) reset_pred_state(&state[i]); @@ -241,7 +245,7 @@ void ic_prediction(ic_stream *ics, real_t *spec, pred_state *state, for (sfb = 0; sfb < max_pred_sfb(sf_index); sfb++) { uint16_t low = ics->swb_offset[sfb]; - uint16_t high = ics->swb_offset[sfb+1]; + uint16_t high = min(ics->swb_offset[sfb+1], ics->swb_offset_max); for (bin = low; bin < high; bin++) { diff --git a/src/libfaad/ic_predict.h b/src/libfaad/ic_predict.h index 233992b96..e69cd114e 100644 --- a/src/libfaad/ic_predict.h +++ b/src/libfaad/ic_predict.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ic_predict.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: ic_predict.h,v 1.23 2007/11/01 12:33:31 menno Exp $ **/ #ifdef MAIN_DEC diff --git a/src/libfaad/iq_table.h b/src/libfaad/iq_table.h index 9002e15d7..3cc2b8061 100644 --- a/src/libfaad/iq_table.h +++ b/src/libfaad/iq_table.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: iq_table.h,v 1.6 2005/10/29 23:57:06 tmmm Exp $ +** $Id: iq_table.h,v 1.20 2007/11/01 12:33:31 menno Exp $ **/ #ifndef IQ_TABLE_H__ diff --git a/src/libfaad/is.c b/src/libfaad/is.c index 9fcdbcbb5..5236db077 100644 --- a/src/libfaad/is.c +++ b/src/libfaad/is.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: is.c,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: is.c,v 1.28 2007/11/01 12:33:31 menno Exp $ **/ #include "common.h" @@ -84,7 +87,7 @@ void is_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec, /* Scale from left to right channel, do not touch left channel */ - for (i = icsr->swb_offset[sfb]; i < icsr->swb_offset[sfb+1]; i++) + for (i = icsr->swb_offset[sfb]; i < min(icsr->swb_offset[sfb+1], ics->swb_offset_max); i++) { #ifndef FIXED_POINT r_spec[(group*nshort)+i] = MUL_R(l_spec[(group*nshort)+i], scale); diff --git a/src/libfaad/is.h b/src/libfaad/is.h index 0786f7258..3e3b750ab 100644 --- a/src/libfaad/is.h +++ b/src/libfaad/is.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: is.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: is.h,v 1.20 2007/11/01 12:33:31 menno Exp $ **/ #ifndef __IS_H__ diff --git a/src/libfaad/kbd_win.h b/src/libfaad/kbd_win.h index 046b6b995..de404c7ea 100644 --- a/src/libfaad/kbd_win.h +++ b/src/libfaad/kbd_win.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: kbd_win.h,v 1.7 2005/10/29 23:57:06 tmmm Exp $ +** $Id: kbd_win.h,v 1.21 2007/11/01 12:33:31 menno Exp $ **/ #ifndef __KBD_WIN_H__ diff --git a/src/libfaad/lt_predict.c b/src/libfaad/lt_predict.c index 3aab00426..2be18ae9f 100644 --- a/src/libfaad/lt_predict.c +++ b/src/libfaad/lt_predict.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: lt_predict.c,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: lt_predict.c,v 1.27 2007/11/01 12:33:31 menno Exp $ **/ @@ -53,9 +56,6 @@ uint8_t is_ltp_ot(uint8_t object_type) #ifdef LD_DEC || (object_type == LD) #endif -#ifdef SCALABLE_DEC - || (object_type == 6) /* TODO */ -#endif ) { return 1; @@ -120,7 +120,7 @@ void lt_prediction(ic_stream *ics, ltp_info *ltp, real_t *spec, if (ltp->long_used[sfb]) { uint16_t low = ics->swb_offset[sfb]; - uint16_t high = ics->swb_offset[sfb+1]; + uint16_t high = min(ics->swb_offset[sfb+1], ics->swb_offset_max); for (bin = low; bin < high; bin++) { diff --git a/src/libfaad/lt_predict.h b/src/libfaad/lt_predict.h index faa2fbca7..117f83424 100644 --- a/src/libfaad/lt_predict.h +++ b/src/libfaad/lt_predict.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: lt_predict.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: lt_predict.h,v 1.20 2007/11/01 12:33:31 menno Exp $ **/ #ifdef LTP_DEC diff --git a/src/libfaad/mdct.c b/src/libfaad/mdct.c index 0df3d6aae..247691e40 100644 --- a/src/libfaad/mdct.c +++ b/src/libfaad/mdct.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: mdct.c,v 1.11 2005/10/29 23:57:07 tmmm Exp $ +** $Id: mdct.c,v 1.47 2007/11/01 12:33:31 menno Exp $ **/ /* @@ -33,7 +36,7 @@ * As described in: * P. Duhamel, Y. Mahieux, and J.P. Petit, "A Fast Algorithm for the * Implementation of Filter Banks Based on 'Time Domain Aliasing - * Cancellation'," IEEE Proc. on ICASSP'91, 1991, pp. 2209-2212. + * Cancellation’," IEEE Proc. on ICASSP‘91, 1991, pp. 2209-2212. * * * As of April 6th 2002 completely rewritten. diff --git a/src/libfaad/mdct.h b/src/libfaad/mdct.h index c2b738795..736180ead 100644 --- a/src/libfaad/mdct.h +++ b/src/libfaad/mdct.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: mdct.h,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: mdct.h,v 1.30 2007/11/01 12:33:31 menno Exp $ **/ #ifndef __MDCT_H__ diff --git a/src/libfaad/mdct_tab.h b/src/libfaad/mdct_tab.h index 7dd17166b..eea285b67 100644 --- a/src/libfaad/mdct_tab.h +++ b/src/libfaad/mdct_tab.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: mdct_tab.h,v 1.1 2005/10/30 00:50:19 tmmm Exp $ +** $Id: mdct_tab.h,v 1.7 2007/11/01 12:33:32 menno Exp $ **/ #ifndef __MDCT_TAB_H__ diff --git a/src/libfaad/mp4.c b/src/libfaad/mp4.c index 651280805..ef3f8a9c9 100644 --- a/src/libfaad/mp4.c +++ b/src/libfaad/mp4.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: mp4.c,v 1.9 2005/10/29 23:57:07 tmmm Exp $ +** $Id: mp4.c,v 1.38 2007/11/01 12:33:32 menno Exp $ **/ #include "common.h" @@ -58,11 +61,7 @@ static uint8_t ObjectTypesTable[32] = { #else 0, /* 5 SBR */ #endif -#ifdef SCALABLE_DEC - 1, /* 6 AAC Scalable */ -#else 0, /* 6 AAC Scalable */ -#endif 0, /* 7 TwinVQ */ 0, /* 8 CELP */ 0, /* 9 HVXC */ @@ -83,11 +82,7 @@ static uint8_t ObjectTypesTable[32] = { #else 0, /* 19 ER AAC LTP */ #endif -#ifdef SCALABLE_DEC - 1, /* 20 ER AAC scalable */ -#else 0, /* 20 ER AAC scalable */ -#endif 0, /* 21 ER TwinVQ */ 0, /* 22 ER BSAC */ #ifdef LD_DEC @@ -248,10 +243,10 @@ int8_t AudioSpecificConfig2(uint8_t *pBuffer, if (syncExtensionType == 0x2b7) { - mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(&ld, 5 + uint8_t tmp_OTi = (uint8_t)faad_getbits(&ld, 5 DEBUGVAR(1,10,"parse_audio_decoder_specific_info(): extensionAudioObjectType")); - if (mp4ASC->objectTypeIndex == 5) + if (tmp_OTi == 5) { mp4ASC->sbr_present_flag = (uint8_t)faad_get1bit(&ld DEBUGVAR(1,11,"parse_audio_decoder_specific_info(): sbr_present_flag")); @@ -259,6 +254,10 @@ int8_t AudioSpecificConfig2(uint8_t *pBuffer, if (mp4ASC->sbr_present_flag) { uint8_t tmp; + + /* Don't set OT to SBR until checked that it is actually there */ + mp4ASC->objectTypeIndex = tmp_OTi; + tmp = (uint8_t)faad_getbits(&ld, 4 DEBUGVAR(1,12,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); diff --git a/src/libfaad/mp4.h b/src/libfaad/mp4.h index 478c9b9be..532ba3524 100644 --- a/src/libfaad/mp4.h +++ b/src/libfaad/mp4.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: mp4.h,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: mp4.h,v 1.25 2007/11/01 12:33:32 menno Exp $ **/ #ifndef __MP4_H__ diff --git a/src/libfaad/ms.c b/src/libfaad/ms.c index 93b0a2051..97c8fb198 100644 --- a/src/libfaad/ms.c +++ b/src/libfaad/ms.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ms.c,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: ms.c,v 1.21 2007/11/01 12:33:32 menno Exp $ **/ #include "common.h" @@ -58,7 +61,7 @@ void ms_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec, if ((ics->ms_used[g][sfb] || ics->ms_mask_present == 2) && !is_intensity(icsr, g, sfb) && !is_noise(ics, g, sfb)) { - for (i = ics->swb_offset[sfb]; i < ics->swb_offset[sfb+1]; i++) + for (i = ics->swb_offset[sfb]; i < min(ics->swb_offset[sfb+1], ics->swb_offset_max); i++) { k = (group*nshort) + i; tmp = l_spec[k] - r_spec[k]; diff --git a/src/libfaad/ms.h b/src/libfaad/ms.h index 4bc7c8175..30cfadaf6 100644 --- a/src/libfaad/ms.h +++ b/src/libfaad/ms.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ms.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: ms.h,v 1.19 2007/11/01 12:33:32 menno Exp $ **/ #ifndef __MS_H__ diff --git a/src/libfaad/output.c b/src/libfaad/output.c index 33ebed39c..a96ebd983 100644 --- a/src/libfaad/output.c +++ b/src/libfaad/output.c @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: output.c,v 1.9 2006/06/30 21:36:27 dgp85 Exp $ +** $Id: output.c,v 1.46 2007/11/01 12:33:32 menno Exp $ **/ #include "common.h" @@ -463,7 +466,7 @@ static INLINE real_t get_sample(real_t **input, uint8_t channel, uint16_t sample } } -static void* output_to_PCM_orig(NeAACDecHandle hDecoder, +void* output_to_PCM(NeAACDecHandle hDecoder, real_t **input, void *sample_buffer, uint8_t channels, uint16_t frame_len, uint8_t format) { @@ -554,56 +557,4 @@ static void* output_to_PCM_orig(NeAACDecHandle hDecoder, return sample_buffer; } -void *output_to_PCM(NeAACDecHandle hDecoder, - real_t **input, void *sample_buffer, uint8_t channels, - uint16_t frame_len, uint8_t format) -{ - int ch, i; - int16_t *short_sample_buffer; - real_t *ch0, *ch1, *ch2, *ch3, *ch4; - - if (format != FAAD_FMT_16BIT) - return output_to_PCM_orig(hDecoder, input, sample_buffer, channels, frame_len, format); - - short_sample_buffer = (int16_t *)sample_buffer; - ch0 = input[hDecoder->internal_channel[0]]; - ch1 = input[hDecoder->internal_channel[1]]; - ch2 = input[hDecoder->internal_channel[2]]; - ch3 = input[hDecoder->internal_channel[3]]; - ch4 = input[hDecoder->internal_channel[4]]; - - if (hDecoder->downMatrix) - { - for (i = 0; i < frame_len; ++i) - { - int32_t tmp = (ch1[i] + ((ch0[i] + ch3[i]) >> 1) + ((ch0[i] + ch3[i]) >> 2) + (1 << (REAL_BITS))) >> (REAL_BITS + 1); - if ((tmp + 0x8000) & ~0xffff) - tmp = ~(tmp >> 31) - 0x8000; - short_sample_buffer[0] = tmp; - tmp = (ch2[i] + ((ch0[i] + ch4[i]) >> 1) + ((ch0[i] + ch4[i]) >> 2) + (1 << (REAL_BITS))) >> (REAL_BITS + 1); - if ((tmp + 0x8000) & ~0xffff) - tmp = ~(tmp >> 31) - 0x8000; - short_sample_buffer[1] = tmp; - short_sample_buffer += channels; - } - return sample_buffer; - } - - /* Copy output to a standard PCM buffer */ - for (i = 0; i < frame_len; ++i) - { - for (ch = 0; ch < channels; ++ch) - { - int32_t tmp = input[hDecoder->internal_channel[ch]][i]; - tmp += (1 << (REAL_BITS - 1)); - tmp >>= REAL_BITS; - if ((tmp + 0x8000) & ~0xffff) - tmp = ~(tmp >> 31) - 0x8000; - *(short_sample_buffer++) = tmp; - } - } - - return sample_buffer; -} - #endif diff --git a/src/libfaad/output.h b/src/libfaad/output.h index 1b15dae58..0451d8b73 100644 --- a/src/libfaad/output.h +++ b/src/libfaad/output.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: output.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: output.h,v 1.25 2007/11/01 12:33:32 menno Exp $ **/ #ifndef __OUTPUT_H__ diff --git a/src/libfaad/pns.c b/src/libfaad/pns.c index 5266d8eef..248fd05ef 100644 --- a/src/libfaad/pns.c +++ b/src/libfaad/pns.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: pns.c,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: pns.c,v 1.38 2007/11/01 12:33:32 menno Exp $ **/ #include "common.h" @@ -33,7 +36,8 @@ /* static function declarations */ static void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size, - uint8_t sub); + uint8_t sub, + /* RNG states */ uint32_t *__r1, uint32_t *__r2); #ifdef FIXED_POINT @@ -68,7 +72,7 @@ real_t fp_sqrt(real_t value) return root; } -static real_t pow2_table[] = +static real_t const pow2_table[] = { COEF_CONST(1.0), COEF_CONST(1.18920711500272), @@ -83,7 +87,8 @@ static real_t pow2_table[] = multiplication/accumulation per random value. */ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size, - uint8_t sub) + uint8_t sub, + /* RNG states */ uint32_t *__r1, uint32_t *__r2) { #ifndef FIXED_POINT uint16_t i; @@ -93,7 +98,7 @@ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t for (i = 0; i < size; i++) { - real_t tmp = scale*(real_t)(int32_t)random_int(); + real_t tmp = scale*(real_t)(int32_t)ne_rng(__r1, __r2); spec[i] = tmp; energy += tmp*tmp; } @@ -112,7 +117,7 @@ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t for (i = 0; i < size; i++) { /* this can be replaced by a 16 bit random generator!!!! */ - real_t tmp = (int32_t)random_int(); + real_t tmp = (int32_t)ne_rng(__r1, __r2); if (tmp < 0) tmp = -(tmp & ((1<<(REAL_BITS-1))-1)); else @@ -152,7 +157,8 @@ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t void pns_decode(ic_stream *ics_left, ic_stream *ics_right, real_t *spec_left, real_t *spec_right, uint16_t frame_len, - uint8_t channel_pair, uint8_t object_type) + uint8_t channel_pair, uint8_t object_type, + /* RNG states */ uint32_t *__r1, uint32_t *__r2) { uint8_t g, sfb, b; uint16_t size, offs; @@ -202,11 +208,11 @@ void pns_decode(ic_stream *ics_left, ic_stream *ics_right, #endif offs = ics_left->swb_offset[sfb]; - size = ics_left->swb_offset[sfb+1] - offs; + size = min(ics_left->swb_offset[sfb+1], ics_left->swb_offset_max) - offs; /* Generate random vector */ gen_rand_vector(&spec_left[(group*nshort)+offs], - ics_left->scale_factors[g][sfb], size, sub); + ics_left->scale_factors[g][sfb], size, sub, __r1, __r2); } /* From the spec: @@ -233,7 +239,7 @@ void pns_decode(ic_stream *ics_left, ic_stream *ics_right, uint16_t c; offs = ics_right->swb_offset[sfb]; - size = ics_right->swb_offset[sfb+1] - offs; + size = min(ics_right->swb_offset[sfb+1], ics_right->swb_offset_max) - offs; for (c = 0; c < size; c++) { @@ -250,11 +256,11 @@ void pns_decode(ic_stream *ics_left, ic_stream *ics_right, #endif offs = ics_right->swb_offset[sfb]; - size = ics_right->swb_offset[sfb+1] - offs; + size = min(ics_right->swb_offset[sfb+1], ics_right->swb_offset_max) - offs; /* Generate random vector */ gen_rand_vector(&spec_right[(group*nshort)+offs], - ics_right->scale_factors[g][sfb], size, sub); + ics_right->scale_factors[g][sfb], size, sub, __r1, __r2); } } } diff --git a/src/libfaad/pns.h b/src/libfaad/pns.h index 2f246cc4f..38ced252d 100644 --- a/src/libfaad/pns.h +++ b/src/libfaad/pns.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: pns.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: pns.h,v 1.27 2007/11/01 12:33:33 menno Exp $ **/ #ifndef __PNS_H__ @@ -38,7 +41,8 @@ extern "C" { void pns_decode(ic_stream *ics_left, ic_stream *ics_right, real_t *spec_left, real_t *spec_right, uint16_t frame_len, - uint8_t channel_pair, uint8_t object_type); + uint8_t channel_pair, uint8_t object_type, + /* RNG states */ uint32_t *__r1, uint32_t *__r2); static INLINE uint8_t is_noise(ic_stream *ics, uint8_t group, uint8_t sfb) { diff --git a/src/libfaad/ps_dec.c b/src/libfaad/ps_dec.c index 3b957bfda..aebfe0a48 100644 --- a/src/libfaad/ps_dec.c +++ b/src/libfaad/ps_dec.c @@ -1,28 +1,31 @@ /* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ps_dec.c,v 1.3 2006/09/26 17:55:59 dgp85 Exp $ +** $Id: ps_dec.c,v 1.14 2007/11/01 12:33:33 menno Exp $ **/ #include "common.h" @@ -159,7 +162,7 @@ typedef struct /* static function declarations */ static void ps_data_decode(ps_info *ps); -static hyb_info *hybrid_init(void); +static hyb_info *hybrid_init(); static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter, qmf_t *buffer, qmf_t **X_hybrid); static void INLINE DCT3_4_unscaled(real_t *y, real_t *x); @@ -175,7 +178,7 @@ static void delta_decode(uint8_t enable, int8_t *index, int8_t *index_prev, int8_t min_index, int8_t max_index); static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_prev, uint8_t dt_flag, uint8_t nr_par, uint8_t stride, - int8_t log2modulo); + int8_t and_modulo); static void map20indexto34(int8_t *index, uint8_t bins); #ifdef PS_LOW_POWER static void map34indexto20(int8_t *index, uint8_t bins); @@ -189,7 +192,7 @@ static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64 /* */ -static hyb_info *hybrid_init(void) +static hyb_info *hybrid_init() { uint8_t i; @@ -230,16 +233,24 @@ static void hybrid_free(hyb_info *hyb) { uint8_t i; - faad_free(hyb->work); + if (hyb->work) + faad_free(hyb->work); for (i = 0; i < 5; i++) - faad_free(hyb->buffer[i]); - faad_free(hyb->buffer); + { + if (hyb->buffer[i]) + faad_free(hyb->buffer[i]); + } + if (hyb->buffer) + faad_free(hyb->buffer); for (i = 0; i < hyb->frame_len; i++) - faad_free(hyb->temp[i]); - - faad_free(hyb->temp); + { + if (hyb->temp[i]) + faad_free(hyb->temp[i]); + } + if (hyb->temp) + faad_free(hyb->temp); } /* real filter, size 2 */ @@ -666,7 +677,7 @@ static void delta_decode(uint8_t enable, int8_t *index, int8_t *index_prev, /* in: log2 value of the modulo value to allow using AND instead of MOD */ static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_prev, uint8_t dt_flag, uint8_t nr_par, uint8_t stride, - int8_t log2modulo) + int8_t and_modulo) { int8_t i; @@ -676,19 +687,19 @@ static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_pre { /* delta coded in frequency direction */ index[0] = 0 + index[0]; - index[0] &= log2modulo; + index[0] &= and_modulo; for (i = 1; i < nr_par; i++) { index[i] = index[i-1] + index[i]; - index[i] &= log2modulo; + index[i] &= and_modulo; } } else { /* delta coded in time direction */ for (i = 0; i < nr_par; i++) { index[i] = index_prev[i*stride] + index[i]; - index[i] &= log2modulo; + index[i] &= and_modulo; } } } else { @@ -833,11 +844,11 @@ static void ps_data_decode(ps_info *ps) /* delta modulo decode ipd parameters */ delta_modulo_decode(ps->enable_ipdopd, ps->ipd_index[env], ipd_index_prev, - ps->ipd_dt[env], ps->nr_ipdopd_par, 1, /*log2(8)*/ 3); + ps->ipd_dt[env], ps->nr_ipdopd_par, 1, 7); /* delta modulo decode opd parameters */ delta_modulo_decode(ps->enable_ipdopd, ps->opd_index[env], opd_index_prev, - ps->opd_dt[env], ps->nr_ipdopd_par, 1, /*log2(8)*/ 3); + ps->opd_dt[env], ps->nr_ipdopd_par, 1, 7); } /* handle error case */ @@ -906,8 +917,6 @@ static void ps_data_decode(ps_info *ps) if (ps->border_position[ps->num_env] < 32 /* 30 for 960? */) { - ps->num_env++; - ps->border_position[ps->num_env] = 32 /* 30 for 960? */; for (bin = 0; bin < 34; bin++) { ps->iid_index[ps->num_env][bin] = ps->iid_index[ps->num_env-1][bin]; @@ -918,6 +927,8 @@ static void ps_data_decode(ps_info *ps) ps->ipd_index[ps->num_env][bin] = ps->ipd_index[ps->num_env-1][bin]; ps->opd_index[ps->num_env][bin] = ps->opd_index[ps->num_env-1][bin]; } + ps->num_env++; + ps->border_position[ps->num_env] = 32 /* 30 for 960? */; } for (env = 1; env < ps->num_env; env++) @@ -1410,6 +1421,26 @@ static const real_t ipdopd_sin_tab[] = { FRAC_CONST(-0.000000000000000) }; +static real_t magnitude_c(complex_t c) +{ +#ifdef FIXED_POINT +#define ps_abs(A) (((A) > 0) ? (A) : (-(A))) +#define ALPHA FRAC_CONST(0.948059448969) +#define BETA FRAC_CONST(0.392699081699) + + real_t abs_inphase = ps_abs(RE(c)); + real_t abs_quadrature = ps_abs(IM(c)); + + if (abs_inphase > abs_quadrature) { + return MUL_F(abs_inphase, ALPHA) + MUL_F(abs_quadrature, BETA); + } else { + return MUL_F(abs_quadrature, ALPHA) + MUL_F(abs_inphase, BETA); + } +#else + return sqrt(RE(c)*RE(c) + IM(c)*IM(c)); +#endif +} + static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64], qmf_t X_hybrid_left[32][32], qmf_t X_hybrid_right[32][32]) { @@ -1580,8 +1611,7 @@ static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64 if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) { int8_t i; - real_t xxyy, ppqq; - real_t yq, xp, xq, py, tmp; + real_t xy, pq, xypq; /* ringbuffer index */ i = ps->phase_hist; @@ -1614,7 +1644,7 @@ static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64 /* ringbuffer index */ if (i == 0) - { + { i = 2; } i--; @@ -1644,53 +1674,54 @@ static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64 RE(phaseRight) = (float)cos(opd); IM(phaseRight) = (float)sin(opd); #else + // x = IM(tempLeft) // y = RE(tempLeft) // p = IM(tempRight) // q = RE(tempRight) - // cos(atan2(x,y)) = 1/sqrt(1 + (x*x)/(y*y)) - // sin(atan2(x,y)) = x/(y*sqrt(1 + (x*x)/(y*y))) - // cos(atan2(x,y)-atan2(p,q)) = (y*q+x*p)/(y*q * sqrt(1 + (x*x)/(y*y)) * sqrt(1 + (p*p)/(q*q))); - // sin(atan2(x,y)-atan2(p,q)) = (x*q-p*y)/(y*q * sqrt(1 + (x*x)/(y*y)) * sqrt(1 + (p*p)/(q*q))); + // cos(atan2(x,y)) = y/sqrt((x*x) + (y*y)) + // sin(atan2(x,y)) = x/sqrt((x*x) + (y*y)) + // cos(atan2(x,y)-atan2(p,q)) = (y*q + x*p) / ( sqrt((x*x) + (y*y)) * sqrt((p*p) + (q*q)) ); + // sin(atan2(x,y)-atan2(p,q)) = (x*q - y*p) / ( sqrt((x*x) + (y*y)) * sqrt((p*p) + (q*q)) ); - /* (x*x)/(y*y) (REAL > 0) */ - xxyy = DIV_R(MUL_C(IM(tempLeft),IM(tempLeft)), MUL_C(RE(tempLeft),RE(tempLeft))); - ppqq = DIV_R(MUL_C(IM(tempRight),IM(tempRight)), MUL_C(RE(tempRight),RE(tempRight))); + xy = magnitude_c(tempRight); + pq = magnitude_c(tempLeft); - /* 1 + (x*x)/(y*y) (REAL > 1) */ - xxyy += REAL_CONST(1); - ppqq += REAL_CONST(1); - - /* 1 / sqrt(1 + (x*x)/(y*y)) (FRAC <= 1) */ - xxyy = DIV_R(FRAC_CONST(1), ps_sqrt(xxyy)); - ppqq = DIV_R(FRAC_CONST(1), ps_sqrt(ppqq)); + if (xy != 0) + { + RE(phaseLeft) = DIV_R(RE(tempRight), xy); + IM(phaseLeft) = DIV_R(IM(tempRight), xy); + } else { + RE(phaseLeft) = 0; + IM(phaseLeft) = 0; + } - /* COEF */ - yq = MUL_C(RE(tempLeft), RE(tempRight)); - xp = MUL_C(IM(tempLeft), IM(tempRight)); - xq = MUL_C(IM(tempLeft), RE(tempRight)); - py = MUL_C(RE(tempLeft), IM(tempRight)); + xypq = MUL_R(xy, pq); - RE(phaseLeft) = xxyy; - IM(phaseLeft) = MUL_R(xxyy, (DIV_R(IM(tempLeft), RE(tempLeft)))); + if (xypq != 0) + { + real_t tmp1 = MUL_R(RE(tempRight), RE(tempLeft)) + MUL_R(IM(tempRight), IM(tempLeft)); + real_t tmp2 = MUL_R(IM(tempRight), RE(tempLeft)) - MUL_R(RE(tempRight), IM(tempLeft)); - tmp = DIV_C(MUL_F(xxyy, ppqq), yq); + RE(phaseRight) = DIV_R(tmp1, xypq); + IM(phaseRight) = DIV_R(tmp2, xypq); + } else { + RE(phaseRight) = 0; + IM(phaseRight) = 0; + } - /* MUL_C(FRAC,COEF) = FRAC */ - RE(phaseRight) = MUL_C(tmp, (yq+xp)); - IM(phaseRight) = MUL_C(tmp, (xq-py)); #endif - /* MUL_F(COEF, FRAC) = COEF */ - IM(h11) = MUL_F(RE(h11), IM(phaseLeft)); - IM(h12) = MUL_F(RE(h12), IM(phaseRight)); - IM(h21) = MUL_F(RE(h21), IM(phaseLeft)); - IM(h22) = MUL_F(RE(h22), IM(phaseRight)); + /* MUL_F(COEF, REAL) = COEF */ + IM(h11) = MUL_R(RE(h11), IM(phaseLeft)); + IM(h12) = MUL_R(RE(h12), IM(phaseRight)); + IM(h21) = MUL_R(RE(h21), IM(phaseLeft)); + IM(h22) = MUL_R(RE(h22), IM(phaseRight)); - RE(h11) = MUL_F(RE(h11), RE(phaseLeft)); - RE(h12) = MUL_F(RE(h12), RE(phaseRight)); - RE(h21) = MUL_F(RE(h21), RE(phaseLeft)); - RE(h22) = MUL_F(RE(h22), RE(phaseRight)); + RE(h11) = MUL_R(RE(h11), RE(phaseLeft)); + RE(h12) = MUL_R(RE(h12), RE(phaseRight)); + RE(h21) = MUL_R(RE(h21), RE(phaseLeft)); + RE(h22) = MUL_R(RE(h22), RE(phaseRight)); } /* length of the envelope n_e+1 - n_e (in time samples) */ @@ -1927,8 +1958,8 @@ ps_info *ps_init(uint8_t sr_index) /* main Parametric Stereo decoding function */ uint8_t ps_decode(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64]) { - qmf_t X_hybrid_left[32][32] = {{{0}}}; - qmf_t X_hybrid_right[32][32] = {{{0}}}; + qmf_t X_hybrid_left[32][32] = {{0}}; + qmf_t X_hybrid_right[32][32] = {{0}}; /* delta decoding of the bitstream data */ ps_data_decode(ps); diff --git a/src/libfaad/ps_dec.h b/src/libfaad/ps_dec.h index 978161fff..d96561404 100644 --- a/src/libfaad/ps_dec.h +++ b/src/libfaad/ps_dec.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ps_dec.h,v 1.1 2005/10/30 00:50:19 tmmm Exp $ +** $Id: ps_dec.h,v 1.12 2007/11/01 12:33:33 menno Exp $ **/ #ifndef __PS_DEC_H__ diff --git a/src/libfaad/ps_syntax.c b/src/libfaad/ps_syntax.c index fc2f9e7f2..50253d459 100644 --- a/src/libfaad/ps_syntax.c +++ b/src/libfaad/ps_syntax.c @@ -1,6 +1,6 @@ /* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ps_syntax.c,v 1.1 2005/10/30 00:50:19 tmmm Exp $ +** $Id: ps_syntax.c,v 1.11 2007/11/01 12:33:33 menno Exp $ **/ #include "common.h" @@ -308,9 +311,9 @@ static const int8_t t_huff_opd[][2] = { { 2, 3 }, /* index 1: 2 bits: 0x */ { 4, 5 }, /* index 2: 3 bits: 00x */ { /*1*/ -30, /*7*/ -24 }, /* index 3: 3 bits: 01x */ - { /*5*/ -26, 6 }, /* index 4: 4 bits: 000x */ - { /*2*/ -29, /*6*/ -25 }, /* index 5: 4 bits: 001x */ - { /*4*/ -27, /*3*/ -28 } /* index 6: 5 bits: 0001x */ + { /*5*/ -26, /*2*/ -29 }, /* index 4: 4 bits: 000x */ + { /*6*/ -25, 6 }, /* index 5: 4 bits: 001x */ + { /*4*/ -27, /*3*/ -28 } /* index 6: 5 bits: 0011x */ }; /* static function declarations */ @@ -380,7 +383,10 @@ uint16_t ps_data(ps_info *ps, bitfile *ld, uint8_t *header) /* we are here, but no header has been read yet */ if (ps->header_read == 0) + { + ps->ps_data_available = 0; return 1; + } ps->frame_class = (uint8_t)faad_get1bit(ld DEBUGVAR(1,1006,"ps_data(): frame_class")); @@ -394,7 +400,7 @@ uint16_t ps_data(ps_info *ps, bitfile *ld, uint8_t *header) for (n = 1; n < ps->num_env+1; n++) { ps->border_position[n] = (uint8_t)faad_getbits(ld, 5 - DEBUGVAR(1,1008,"ps_data(): border_position")); + DEBUGVAR(1,1008,"ps_data(): border_position")) + 1; } } diff --git a/src/libfaad/ps_tables.h b/src/libfaad/ps_tables.h index c71489617..f3370be9d 100644 --- a/src/libfaad/ps_tables.h +++ b/src/libfaad/ps_tables.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ps_tables.h,v 1.1 2005/10/30 00:50:19 tmmm Exp $ +** $Id: ps_tables.h,v 1.8 2007/11/01 12:33:33 menno Exp $ **/ #ifndef __PS_TABLES_H__ @@ -541,7 +544,7 @@ static const real_t sf_iid_fine[] = { }; #ifdef __cplusplus - +} #endif #endif diff --git a/src/libfaad/pulse.c b/src/libfaad/pulse.c index 9e0a705e6..3dd973abf 100644 --- a/src/libfaad/pulse.c +++ b/src/libfaad/pulse.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,12 +19,14 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: pulse.c,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: pulse.c,v 1.21 2007/11/01 12:33:34 menno Exp $ **/ - #include "common.h" #include "structs.h" @@ -37,7 +39,7 @@ uint8_t pulse_decode(ic_stream *ics, int16_t *spec_data, uint16_t framelen) uint16_t k; pulse_info *pul = &(ics->pul); - k = ics->swb_offset[pul->pulse_start_sfb]; + k = min(ics->swb_offset[pul->pulse_start_sfb], ics->swb_offset_max); for (i = 0; i <= pul->number_pulse; i++) { diff --git a/src/libfaad/pulse.h b/src/libfaad/pulse.h index a057c0d3b..f7676cd89 100644 --- a/src/libfaad/pulse.h +++ b/src/libfaad/pulse.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: pulse.h,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: pulse.h,v 1.20 2007/11/01 12:33:34 menno Exp $ **/ #ifndef __PULSE_H__ diff --git a/src/libfaad/rvlc.c b/src/libfaad/rvlc.c index bad49a0c6..73619c6d1 100644 --- a/src/libfaad/rvlc.c +++ b/src/libfaad/rvlc.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: rvlc.c,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: rvlc.c,v 1.21 2007/11/01 12:33:34 menno Exp $ **/ /* RVLC scalefactor decoding diff --git a/src/libfaad/rvlc.h b/src/libfaad/rvlc.h index 867468580..56f630fa4 100644 --- a/src/libfaad/rvlc.h +++ b/src/libfaad/rvlc.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: rvlc.h,v 1.6 2005/10/29 23:57:07 tmmm Exp $ +** $Id: rvlc.h,v 1.17 2007/11/01 12:33:34 menno Exp $ **/ #ifndef __RVLC_SCF_H__ diff --git a/src/libfaad/sbr_dct.c b/src/libfaad/sbr_dct.c index ba8bbaf9b..16e7128ea 100644 --- a/src/libfaad/sbr_dct.c +++ b/src/libfaad/sbr_dct.c @@ -1,30 +1,38 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dct.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_dct.c,v 1.20 2007/11/01 12:33:34 menno Exp $ **/ + +/* Most of the DCT/DST codes here are generated using Spiral which is GPL + * For more info see: http://www.spiral.net/ + */ + #include "common.h" #ifdef SBR_DEC @@ -479,6 +487,413 @@ void DCT4_32(real_t *y, real_t *x) y[1] = f397 - f396; } +void DST4_32(real_t *y, real_t *x) +{ + real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9; + real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19; + real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29; + real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39; + real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49; + real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59; + real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69; + real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79; + real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89; + real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99; + real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109; + real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119; + real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129; + real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139; + real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149; + real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159; + real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169; + real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179; + real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189; + real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199; + real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209; + real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219; + real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229; + real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239; + real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249; + real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259; + real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269; + real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279; + real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289; + real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299; + real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309; + real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319; + real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329; + real_t f330, f331, f332, f333, f334, f335; + + f0 = x[0] - x[1]; + f1 = x[2] - x[1]; + f2 = x[2] - x[3]; + f3 = x[4] - x[3]; + f4 = x[4] - x[5]; + f5 = x[6] - x[5]; + f6 = x[6] - x[7]; + f7 = x[8] - x[7]; + f8 = x[8] - x[9]; + f9 = x[10] - x[9]; + f10 = x[10] - x[11]; + f11 = x[12] - x[11]; + f12 = x[12] - x[13]; + f13 = x[14] - x[13]; + f14 = x[14] - x[15]; + f15 = x[16] - x[15]; + f16 = x[16] - x[17]; + f17 = x[18] - x[17]; + f18 = x[18] - x[19]; + f19 = x[20] - x[19]; + f20 = x[20] - x[21]; + f21 = x[22] - x[21]; + f22 = x[22] - x[23]; + f23 = x[24] - x[23]; + f24 = x[24] - x[25]; + f25 = x[26] - x[25]; + f26 = x[26] - x[27]; + f27 = x[28] - x[27]; + f28 = x[28] - x[29]; + f29 = x[30] - x[29]; + f30 = x[30] - x[31]; + f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15); + f32 = x[0] - f31; + f33 = x[0] + f31; + f34 = f7 + f23; + f35 = MUL_C(COEF_CONST(1.3065629648763766), f7); + f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34); + f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23); + f38 = f35 + f36; + f39 = f37 - f36; + f40 = f33 - f39; + f41 = f33 + f39; + f42 = f32 - f38; + f43 = f32 + f38; + f44 = f11 - f19; + f45 = f11 + f19; + f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45); + f47 = f3 - f46; + f48 = f3 + f46; + f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44); + f50 = f49 - f27; + f51 = f49 + f27; + f52 = f51 + f48; + f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51); + f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52); + f55 = MUL_C(COEF_CONST(1.1758756024193588), f48); + f56 = f53 + f54; + f57 = f55 - f54; + f58 = f50 + f47; + f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50); + f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58); + f61 = MUL_C(COEF_CONST(1.3870398453221475), f47); + f62 = f59 + f60; + f63 = f61 - f60; + f64 = f41 - f56; + f65 = f41 + f56; + f66 = f43 - f62; + f67 = f43 + f62; + f68 = f42 - f63; + f69 = f42 + f63; + f70 = f40 - f57; + f71 = f40 + f57; + f72 = f5 - f9; + f73 = f5 + f9; + f74 = f13 - f17; + f75 = f13 + f17; + f76 = f21 - f25; + f77 = f21 + f25; + f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75); + f79 = f1 - f78; + f80 = f1 + f78; + f81 = f73 + f77; + f82 = MUL_C(COEF_CONST(1.3065629648763766), f73); + f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81); + f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77); + f85 = f82 + f83; + f86 = f84 - f83; + f87 = f80 - f86; + f88 = f80 + f86; + f89 = f79 - f85; + f90 = f79 + f85; + f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74); + f92 = f29 - f91; + f93 = f29 + f91; + f94 = f76 + f72; + f95 = MUL_C(COEF_CONST(1.3065629648763766), f76); + f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94); + f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72); + f98 = f95 + f96; + f99 = f97 - f96; + f100 = f93 - f99; + f101 = f93 + f99; + f102 = f92 - f98; + f103 = f92 + f98; + f104 = f101 + f88; + f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101); + f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104); + f107 = MUL_C(COEF_CONST(1.0932018670017576), f88); + f108 = f105 + f106; + f109 = f107 - f106; + f110 = f90 - f103; + f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103); + f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110); + f113 = MUL_C(COEF_CONST(1.2472250129866713), f90); + f114 = f112 - f111; + f115 = f113 - f112; + f116 = f102 + f89; + f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102); + f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116); + f119 = MUL_C(COEF_CONST(1.3533180011743529), f89); + f120 = f117 + f118; + f121 = f119 - f118; + f122 = f87 - f100; + f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100); + f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122); + f125 = MUL_C(COEF_CONST(1.4074037375263826), f87); + f126 = f124 - f123; + f127 = f125 - f124; + f128 = f65 - f108; + f129 = f65 + f108; + f130 = f67 - f114; + f131 = f67 + f114; + f132 = f69 - f120; + f133 = f69 + f120; + f134 = f71 - f126; + f135 = f71 + f126; + f136 = f70 - f127; + f137 = f70 + f127; + f138 = f68 - f121; + f139 = f68 + f121; + f140 = f66 - f115; + f141 = f66 + f115; + f142 = f64 - f109; + f143 = f64 + f109; + f144 = f0 + f30; + f145 = MUL_C(COEF_CONST(1.0478631305325901), f0); + f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144); + f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30); + f148 = f145 + f146; + f149 = f147 - f146; + f150 = f4 + f26; + f151 = MUL_F(FRAC_CONST(1.2130114330978077), f4); + f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150); + f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26); + f154 = f151 + f152; + f155 = f153 - f152; + f156 = f8 + f22; + f157 = MUL_C(COEF_CONST(1.3315443865537255), f8); + f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156); + f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22); + f160 = f157 + f158; + f161 = f159 - f158; + f162 = f12 + f18; + f163 = MUL_C(COEF_CONST(1.3989068359730781), f12); + f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162); + f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18); + f166 = f163 + f164; + f167 = f165 - f164; + f168 = f16 + f14; + f169 = MUL_C(COEF_CONST(1.4125100802019777), f16); + f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168); + f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14); + f172 = f169 + f170; + f173 = f171 - f170; + f174 = f20 + f10; + f175 = MUL_C(COEF_CONST(1.3718313541934939), f20); + f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174); + f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10); + f178 = f175 + f176; + f179 = f177 - f176; + f180 = f24 + f6; + f181 = MUL_C(COEF_CONST(1.2784339185752409), f24); + f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180); + f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6); + f184 = f181 + f182; + f185 = f183 - f182; + f186 = f28 + f2; + f187 = MUL_C(COEF_CONST(1.1359069844201433), f28); + f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186); + f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2); + f190 = f187 + f188; + f191 = f189 - f188; + f192 = f149 - f173; + f193 = f149 + f173; + f194 = f148 - f172; + f195 = f148 + f172; + f196 = f155 - f179; + f197 = f155 + f179; + f198 = f154 - f178; + f199 = f154 + f178; + f200 = f161 - f185; + f201 = f161 + f185; + f202 = f160 - f184; + f203 = f160 + f184; + f204 = f167 - f191; + f205 = f167 + f191; + f206 = f166 - f190; + f207 = f166 + f190; + f208 = f192 + f194; + f209 = MUL_C(COEF_CONST(1.1758756024193588), f192); + f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208); + f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194); + f212 = f209 + f210; + f213 = f211 - f210; + f214 = f196 + f198; + f215 = MUL_C(COEF_CONST(1.3870398453221475), f196); + f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214); + f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198); + f218 = f215 + f216; + f219 = f217 - f216; + f220 = f200 + f202; + f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200); + f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220); + f223 = MUL_C(COEF_CONST(1.1758756024193586), f202); + f224 = f221 + f222; + f225 = f223 - f222; + f226 = f204 + f206; + f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204); + f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226); + f229 = MUL_C(COEF_CONST(1.3870398453221475), f206); + f230 = f227 + f228; + f231 = f229 - f228; + f232 = f193 - f201; + f233 = f193 + f201; + f234 = f195 - f203; + f235 = f195 + f203; + f236 = f197 - f205; + f237 = f197 + f205; + f238 = f199 - f207; + f239 = f199 + f207; + f240 = f213 - f225; + f241 = f213 + f225; + f242 = f212 - f224; + f243 = f212 + f224; + f244 = f219 - f231; + f245 = f219 + f231; + f246 = f218 - f230; + f247 = f218 + f230; + f248 = f232 + f234; + f249 = MUL_C(COEF_CONST(1.3065629648763766), f232); + f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248); + f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234); + f252 = f249 + f250; + f253 = f251 - f250; + f254 = f236 + f238; + f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236); + f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254); + f257 = MUL_C(COEF_CONST(1.3065629648763766), f238); + f258 = f255 + f256; + f259 = f257 - f256; + f260 = f240 + f242; + f261 = MUL_C(COEF_CONST(1.3065629648763766), f240); + f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260); + f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242); + f264 = f261 + f262; + f265 = f263 - f262; + f266 = f244 + f246; + f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244); + f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266); + f269 = MUL_C(COEF_CONST(1.3065629648763766), f246); + f270 = f267 + f268; + f271 = f269 - f268; + f272 = f233 - f237; + f273 = f233 + f237; + f274 = f235 - f239; + f275 = f235 + f239; + f276 = f253 - f259; + f277 = f253 + f259; + f278 = f252 - f258; + f279 = f252 + f258; + f280 = f241 - f245; + f281 = f241 + f245; + f282 = f243 - f247; + f283 = f243 + f247; + f284 = f265 - f271; + f285 = f265 + f271; + f286 = f264 - f270; + f287 = f264 + f270; + f288 = f272 - f274; + f289 = f272 + f274; + f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288); + f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289); + f292 = f276 - f278; + f293 = f276 + f278; + f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292); + f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293); + f296 = f280 - f282; + f297 = f280 + f282; + f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296); + f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297); + f300 = f284 - f286; + f301 = f284 + f286; + f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300); + f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301); + f304 = f129 - f273; + f305 = f129 + f273; + f306 = f131 - f281; + f307 = f131 + f281; + f308 = f133 - f285; + f309 = f133 + f285; + f310 = f135 - f277; + f311 = f135 + f277; + f312 = f137 - f295; + f313 = f137 + f295; + f314 = f139 - f303; + f315 = f139 + f303; + f316 = f141 - f299; + f317 = f141 + f299; + f318 = f143 - f291; + f319 = f143 + f291; + f320 = f142 - f290; + f321 = f142 + f290; + f322 = f140 - f298; + f323 = f140 + f298; + f324 = f138 - f302; + f325 = f138 + f302; + f326 = f136 - f294; + f327 = f136 + f294; + f328 = f134 - f279; + f329 = f134 + f279; + f330 = f132 - f287; + f331 = f132 + f287; + f332 = f130 - f283; + f333 = f130 + f283; + f334 = f128 - f275; + f335 = f128 + f275; + y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305); + y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307); + y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309); + y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311); + y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313); + y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315); + y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317); + y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319); + y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321); + y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323); + y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325); + y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327); + y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329); + y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331); + y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333); + y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335); + y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334); + y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332); + y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330); + y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328); + y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326); + y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324); + y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322); + y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320); + y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318); + y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316); + y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314); + y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312); + y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310); + y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308); + y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306); + y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304); +} + #ifdef SBR_LOW_POWER void DCT2_16_unscaled(real_t *y, real_t *x) @@ -1811,7 +2226,7 @@ void dct4_kernel(real_t * in_real, real_t * in_imag, real_t * out_real, real_t * { // Tables with bit reverse values for 5 bits, bit reverse of i at i-th position const uint8_t bit_rev_tab[32] = { 0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31 }; - uint16_t i, i_rev; + uint32_t i, i_rev; /* Step 2: modulate */ // 3*32=96 multiplications @@ -1859,413 +2274,6 @@ void dct4_kernel(real_t * in_real, real_t * in_imag, real_t * out_real, real_t * } -void DST4_32(real_t *y, real_t *x) -{ - real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9; - real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19; - real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29; - real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39; - real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49; - real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59; - real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69; - real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79; - real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89; - real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99; - real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109; - real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119; - real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129; - real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139; - real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149; - real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159; - real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169; - real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179; - real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189; - real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199; - real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209; - real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219; - real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229; - real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239; - real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249; - real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259; - real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269; - real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279; - real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289; - real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299; - real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309; - real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319; - real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329; - real_t f330, f331, f332, f333, f334, f335; - - f0 = x[0] - x[1]; - f1 = x[2] - x[1]; - f2 = x[2] - x[3]; - f3 = x[4] - x[3]; - f4 = x[4] - x[5]; - f5 = x[6] - x[5]; - f6 = x[6] - x[7]; - f7 = x[8] - x[7]; - f8 = x[8] - x[9]; - f9 = x[10] - x[9]; - f10 = x[10] - x[11]; - f11 = x[12] - x[11]; - f12 = x[12] - x[13]; - f13 = x[14] - x[13]; - f14 = x[14] - x[15]; - f15 = x[16] - x[15]; - f16 = x[16] - x[17]; - f17 = x[18] - x[17]; - f18 = x[18] - x[19]; - f19 = x[20] - x[19]; - f20 = x[20] - x[21]; - f21 = x[22] - x[21]; - f22 = x[22] - x[23]; - f23 = x[24] - x[23]; - f24 = x[24] - x[25]; - f25 = x[26] - x[25]; - f26 = x[26] - x[27]; - f27 = x[28] - x[27]; - f28 = x[28] - x[29]; - f29 = x[30] - x[29]; - f30 = x[30] - x[31]; - f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15); - f32 = x[0] - f31; - f33 = x[0] + f31; - f34 = f7 + f23; - f35 = MUL_C(COEF_CONST(1.3065629648763766), f7); - f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34); - f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23); - f38 = f35 + f36; - f39 = f37 - f36; - f40 = f33 - f39; - f41 = f33 + f39; - f42 = f32 - f38; - f43 = f32 + f38; - f44 = f11 - f19; - f45 = f11 + f19; - f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45); - f47 = f3 - f46; - f48 = f3 + f46; - f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44); - f50 = f49 - f27; - f51 = f49 + f27; - f52 = f51 + f48; - f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51); - f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52); - f55 = MUL_C(COEF_CONST(1.1758756024193588), f48); - f56 = f53 + f54; - f57 = f55 - f54; - f58 = f50 + f47; - f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50); - f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58); - f61 = MUL_C(COEF_CONST(1.3870398453221475), f47); - f62 = f59 + f60; - f63 = f61 - f60; - f64 = f41 - f56; - f65 = f41 + f56; - f66 = f43 - f62; - f67 = f43 + f62; - f68 = f42 - f63; - f69 = f42 + f63; - f70 = f40 - f57; - f71 = f40 + f57; - f72 = f5 - f9; - f73 = f5 + f9; - f74 = f13 - f17; - f75 = f13 + f17; - f76 = f21 - f25; - f77 = f21 + f25; - f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75); - f79 = f1 - f78; - f80 = f1 + f78; - f81 = f73 + f77; - f82 = MUL_C(COEF_CONST(1.3065629648763766), f73); - f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81); - f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77); - f85 = f82 + f83; - f86 = f84 - f83; - f87 = f80 - f86; - f88 = f80 + f86; - f89 = f79 - f85; - f90 = f79 + f85; - f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74); - f92 = f29 - f91; - f93 = f29 + f91; - f94 = f76 + f72; - f95 = MUL_C(COEF_CONST(1.3065629648763766), f76); - f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94); - f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72); - f98 = f95 + f96; - f99 = f97 - f96; - f100 = f93 - f99; - f101 = f93 + f99; - f102 = f92 - f98; - f103 = f92 + f98; - f104 = f101 + f88; - f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101); - f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104); - f107 = MUL_C(COEF_CONST(1.0932018670017576), f88); - f108 = f105 + f106; - f109 = f107 - f106; - f110 = f90 - f103; - f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103); - f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110); - f113 = MUL_C(COEF_CONST(1.2472250129866713), f90); - f114 = f112 - f111; - f115 = f113 - f112; - f116 = f102 + f89; - f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102); - f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116); - f119 = MUL_C(COEF_CONST(1.3533180011743529), f89); - f120 = f117 + f118; - f121 = f119 - f118; - f122 = f87 - f100; - f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100); - f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122); - f125 = MUL_C(COEF_CONST(1.4074037375263826), f87); - f126 = f124 - f123; - f127 = f125 - f124; - f128 = f65 - f108; - f129 = f65 + f108; - f130 = f67 - f114; - f131 = f67 + f114; - f132 = f69 - f120; - f133 = f69 + f120; - f134 = f71 - f126; - f135 = f71 + f126; - f136 = f70 - f127; - f137 = f70 + f127; - f138 = f68 - f121; - f139 = f68 + f121; - f140 = f66 - f115; - f141 = f66 + f115; - f142 = f64 - f109; - f143 = f64 + f109; - f144 = f0 + f30; - f145 = MUL_C(COEF_CONST(1.0478631305325901), f0); - f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144); - f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30); - f148 = f145 + f146; - f149 = f147 - f146; - f150 = f4 + f26; - f151 = MUL_F(FRAC_CONST(1.2130114330978077), f4); - f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150); - f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26); - f154 = f151 + f152; - f155 = f153 - f152; - f156 = f8 + f22; - f157 = MUL_C(COEF_CONST(1.3315443865537255), f8); - f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156); - f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22); - f160 = f157 + f158; - f161 = f159 - f158; - f162 = f12 + f18; - f163 = MUL_C(COEF_CONST(1.3989068359730781), f12); - f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162); - f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18); - f166 = f163 + f164; - f167 = f165 - f164; - f168 = f16 + f14; - f169 = MUL_C(COEF_CONST(1.4125100802019777), f16); - f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168); - f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14); - f172 = f169 + f170; - f173 = f171 - f170; - f174 = f20 + f10; - f175 = MUL_C(COEF_CONST(1.3718313541934939), f20); - f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174); - f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10); - f178 = f175 + f176; - f179 = f177 - f176; - f180 = f24 + f6; - f181 = MUL_C(COEF_CONST(1.2784339185752409), f24); - f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180); - f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6); - f184 = f181 + f182; - f185 = f183 - f182; - f186 = f28 + f2; - f187 = MUL_C(COEF_CONST(1.1359069844201433), f28); - f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186); - f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2); - f190 = f187 + f188; - f191 = f189 - f188; - f192 = f149 - f173; - f193 = f149 + f173; - f194 = f148 - f172; - f195 = f148 + f172; - f196 = f155 - f179; - f197 = f155 + f179; - f198 = f154 - f178; - f199 = f154 + f178; - f200 = f161 - f185; - f201 = f161 + f185; - f202 = f160 - f184; - f203 = f160 + f184; - f204 = f167 - f191; - f205 = f167 + f191; - f206 = f166 - f190; - f207 = f166 + f190; - f208 = f192 + f194; - f209 = MUL_C(COEF_CONST(1.1758756024193588), f192); - f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208); - f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194); - f212 = f209 + f210; - f213 = f211 - f210; - f214 = f196 + f198; - f215 = MUL_C(COEF_CONST(1.3870398453221475), f196); - f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214); - f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198); - f218 = f215 + f216; - f219 = f217 - f216; - f220 = f200 + f202; - f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200); - f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220); - f223 = MUL_C(COEF_CONST(1.1758756024193586), f202); - f224 = f221 + f222; - f225 = f223 - f222; - f226 = f204 + f206; - f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204); - f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226); - f229 = MUL_C(COEF_CONST(1.3870398453221475), f206); - f230 = f227 + f228; - f231 = f229 - f228; - f232 = f193 - f201; - f233 = f193 + f201; - f234 = f195 - f203; - f235 = f195 + f203; - f236 = f197 - f205; - f237 = f197 + f205; - f238 = f199 - f207; - f239 = f199 + f207; - f240 = f213 - f225; - f241 = f213 + f225; - f242 = f212 - f224; - f243 = f212 + f224; - f244 = f219 - f231; - f245 = f219 + f231; - f246 = f218 - f230; - f247 = f218 + f230; - f248 = f232 + f234; - f249 = MUL_C(COEF_CONST(1.3065629648763766), f232); - f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248); - f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234); - f252 = f249 + f250; - f253 = f251 - f250; - f254 = f236 + f238; - f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236); - f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254); - f257 = MUL_C(COEF_CONST(1.3065629648763766), f238); - f258 = f255 + f256; - f259 = f257 - f256; - f260 = f240 + f242; - f261 = MUL_C(COEF_CONST(1.3065629648763766), f240); - f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260); - f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242); - f264 = f261 + f262; - f265 = f263 - f262; - f266 = f244 + f246; - f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244); - f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266); - f269 = MUL_C(COEF_CONST(1.3065629648763766), f246); - f270 = f267 + f268; - f271 = f269 - f268; - f272 = f233 - f237; - f273 = f233 + f237; - f274 = f235 - f239; - f275 = f235 + f239; - f276 = f253 - f259; - f277 = f253 + f259; - f278 = f252 - f258; - f279 = f252 + f258; - f280 = f241 - f245; - f281 = f241 + f245; - f282 = f243 - f247; - f283 = f243 + f247; - f284 = f265 - f271; - f285 = f265 + f271; - f286 = f264 - f270; - f287 = f264 + f270; - f288 = f272 - f274; - f289 = f272 + f274; - f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288); - f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289); - f292 = f276 - f278; - f293 = f276 + f278; - f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292); - f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293); - f296 = f280 - f282; - f297 = f280 + f282; - f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296); - f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297); - f300 = f284 - f286; - f301 = f284 + f286; - f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300); - f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301); - f304 = f129 - f273; - f305 = f129 + f273; - f306 = f131 - f281; - f307 = f131 + f281; - f308 = f133 - f285; - f309 = f133 + f285; - f310 = f135 - f277; - f311 = f135 + f277; - f312 = f137 - f295; - f313 = f137 + f295; - f314 = f139 - f303; - f315 = f139 + f303; - f316 = f141 - f299; - f317 = f141 + f299; - f318 = f143 - f291; - f319 = f143 + f291; - f320 = f142 - f290; - f321 = f142 + f290; - f322 = f140 - f298; - f323 = f140 + f298; - f324 = f138 - f302; - f325 = f138 + f302; - f326 = f136 - f294; - f327 = f136 + f294; - f328 = f134 - f279; - f329 = f134 + f279; - f330 = f132 - f287; - f331 = f132 + f287; - f332 = f130 - f283; - f333 = f130 + f283; - f334 = f128 - f275; - f335 = f128 + f275; - y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305); - y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307); - y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309); - y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311); - y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313); - y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315); - y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317); - y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319); - y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321); - y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323); - y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325); - y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327); - y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329); - y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331); - y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333); - y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335); - y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334); - y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332); - y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330); - y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328); - y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326); - y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324); - y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322); - y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320); - y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318); - y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316); - y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314); - y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312); - y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310); - y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308); - y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306); - y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304); -} - #endif #endif diff --git a/src/libfaad/sbr_dct.h b/src/libfaad/sbr_dct.h index 6293486c7..ce44fd7ef 100644 --- a/src/libfaad/sbr_dct.h +++ b/src/libfaad/sbr_dct.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dct.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_dct.h,v 1.19 2007/11/01 12:33:34 menno Exp $ **/ #ifndef __SBR_DCT_H__ diff --git a/src/libfaad/sbr_dec.c b/src/libfaad/sbr_dec.c index 24c1f5031..f87d0106c 100644 --- a/src/libfaad/sbr_dec.c +++ b/src/libfaad/sbr_dec.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dec.c,v 1.9 2006/06/17 20:43:57 dgp85 Exp $ +** $Id: sbr_dec.c,v 1.43 2007/11/01 12:33:34 menno Exp $ **/ @@ -176,6 +179,72 @@ void sbrDecodeEnd(sbr_info *sbr) } } +void sbrReset(sbr_info *sbr) +{ + uint8_t j; + if (sbr->qmfa[0] != NULL) + memset(sbr->qmfa[0]->x, 0, 2 * sbr->qmfa[0]->channels * 10 * sizeof(real_t)); + if (sbr->qmfa[1] != NULL) + memset(sbr->qmfa[1]->x, 0, 2 * sbr->qmfa[1]->channels * 10 * sizeof(real_t)); + if (sbr->qmfs[0] != NULL) + memset(sbr->qmfs[0]->v, 0, 2 * sbr->qmfs[0]->channels * 20 * sizeof(real_t)); + if (sbr->qmfs[1] != NULL) + memset(sbr->qmfs[1]->v, 0, 2 * sbr->qmfs[1]->channels * 20 * sizeof(real_t)); + + for (j = 0; j < 5; j++) + { + if (sbr->G_temp_prev[0][j] != NULL) + memset(sbr->G_temp_prev[0][j], 0, 64*sizeof(real_t)); + if (sbr->G_temp_prev[1][j] != NULL) + memset(sbr->G_temp_prev[1][j], 0, 64*sizeof(real_t)); + if (sbr->Q_temp_prev[0][j] != NULL) + memset(sbr->Q_temp_prev[0][j], 0, 64*sizeof(real_t)); + if (sbr->Q_temp_prev[1][j] != NULL) + memset(sbr->Q_temp_prev[1][j], 0, 64*sizeof(real_t)); + } + + memset(sbr->Xsbr[0], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); + memset(sbr->Xsbr[1], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); + + sbr->GQ_ringbuf_index[0] = 0; + sbr->GQ_ringbuf_index[1] = 0; + sbr->header_count = 0; + sbr->Reset = 1; + + sbr->L_E_prev[0] = 0; + sbr->L_E_prev[1] = 0; + sbr->bs_freq_scale = 2; + sbr->bs_alter_scale = 1; + sbr->bs_noise_bands = 2; + sbr->bs_limiter_bands = 2; + sbr->bs_limiter_gains = 2; + sbr->bs_interpol_freq = 1; + sbr->bs_smoothing_mode = 1; + sbr->bs_start_freq = 5; + sbr->bs_amp_res = 1; + sbr->bs_samplerate_mode = 1; + sbr->prevEnvIsShort[0] = -1; + sbr->prevEnvIsShort[1] = -1; + sbr->bsco = 0; + sbr->bsco_prev = 0; + sbr->M_prev = 0; + sbr->bs_start_freq_prev = -1; + + sbr->f_prev[0] = 0; + sbr->f_prev[1] = 0; + for (j = 0; j < MAX_M; j++) + { + sbr->E_prev[0][j] = 0; + sbr->Q_prev[0][j] = 0; + sbr->E_prev[1][j] = 0; + sbr->Q_prev[1][j] = 0; + sbr->bs_add_harmonic_prev[0][j] = 0; + sbr->bs_add_harmonic_prev[1][j] = 0; + } + sbr->bs_add_harmonic_flag_prev[0] = 0; + sbr->bs_add_harmonic_flag_prev[1] = 0; +} + static uint8_t sbr_save_prev_data(sbr_info *sbr, uint8_t ch) { uint8_t i; @@ -226,11 +295,12 @@ static void sbr_save_matrix(sbr_info *sbr, uint8_t ch) } } -static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_NTSR][64], - uint8_t ch, uint8_t dont_process, - const uint8_t downSampledSBR) +static uint8_t sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_NTSR][64], + uint8_t ch, uint8_t dont_process, + const uint8_t downSampledSBR) { int16_t k, l; + uint8_t ret = 0; #ifdef SBR_LOW_POWER ALIGN real_t deg[64]; @@ -278,7 +348,7 @@ static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_ ,ch); #endif -#ifdef SBR_LOW_POWER +#if 0 //def SBR_LOW_POWER for (l = sbr->t_E[ch][0]; l < sbr->t_E[ch][sbr->L_E[ch]]; l++) { for (k = 0; k < sbr->kx; k++) @@ -290,12 +360,16 @@ static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_ #if 1 /* hf adjustment */ - hf_adjustment(sbr, sbr->Xsbr[ch] + ret = hf_adjustment(sbr, sbr->Xsbr[ch] #ifdef SBR_LOW_POWER ,deg #endif ,ch); #endif + if (ret > 0) + { + dont_process = 1; + } } if ((sbr->just_seeked != 0) || dont_process) @@ -367,6 +441,8 @@ static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_ #endif } } + + return ret; } uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, @@ -400,7 +476,7 @@ uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_cha sbr->just_seeked = 0; } - sbr_process_channel(sbr, left_chan, X, 0, dont_process, downSampledSBR); + sbr->ret += sbr_process_channel(sbr, left_chan, X, 0, dont_process, downSampledSBR); /* subband synthesis */ if (downSampledSBR) { @@ -409,7 +485,7 @@ uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_cha sbr_qmf_synthesis_64(sbr, sbr->qmfs[0], X, left_chan); } - sbr_process_channel(sbr, right_chan, X, 1, dont_process, downSampledSBR); + sbr->ret += sbr_process_channel(sbr, right_chan, X, 1, dont_process, downSampledSBR); /* subband synthesis */ if (downSampledSBR) { @@ -483,7 +559,7 @@ uint8_t sbrDecodeSingleFrame(sbr_info *sbr, real_t *channel, sbr->just_seeked = 0; } - sbr_process_channel(sbr, channel, X, 0, dont_process, downSampledSBR); + sbr->ret += sbr_process_channel(sbr, channel, X, 0, dont_process, downSampledSBR); /* subband synthesis */ if (downSampledSBR) { @@ -526,8 +602,8 @@ uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *righ uint8_t l, k; uint8_t dont_process = 0; uint8_t ret = 0; - ALIGN qmf_t X_left[38][64] = {{{0}}}; - ALIGN qmf_t X_right[38][64] = {{{0}}}; /* must set this to 0 */ + ALIGN qmf_t X_left[38][64] = {{0}}; + ALIGN qmf_t X_right[38][64] = {{0}}; /* must set this to 0 */ if (sbr == NULL) return 20; @@ -558,7 +634,7 @@ uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *righ sbr->qmfs[1] = qmfs_init((downSampledSBR)?32:64); } - sbr_process_channel(sbr, left_channel, X_left, 0, dont_process, downSampledSBR); + sbr->ret += sbr_process_channel(sbr, left_channel, X_left, 0, dont_process, downSampledSBR); /* copy some extra data for PS */ for (l = 32; l < 38; l++) @@ -574,7 +650,7 @@ uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *righ #ifdef DRM_PS if (sbr->Is_DRM_SBR) { - drm_ps_decode(sbr->drm_ps, (sbr->ret > 0), sbr->sample_rate, X_left, X_right); + drm_ps_decode(sbr->drm_ps, (sbr->ret > 0), X_left, X_right); } else { #endif #ifdef PS_DEC diff --git a/src/libfaad/sbr_dec.h b/src/libfaad/sbr_dec.h index 5efd5c5e0..40c1d5388 100644 --- a/src/libfaad/sbr_dec.h +++ b/src/libfaad/sbr_dec.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dec.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_dec.h,v 1.39 2007/11/01 12:33:34 menno Exp $ **/ #ifndef __SBR_DEC_H__ @@ -183,6 +186,7 @@ typedef struct #endif #if (defined(PS_DEC) || defined(DRM_PS)) uint8_t ps_used; + uint8_t psResetFlag; #endif /* to get it compiling */ @@ -231,6 +235,7 @@ sbr_info *sbrDecodeInit(uint16_t framelength, uint8_t id_aac, #endif ); void sbrDecodeEnd(sbr_info *sbr); +void sbrReset(sbr_info *sbr); uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, const uint8_t just_seeked, const uint8_t downSampledSBR); diff --git a/src/libfaad/sbr_e_nf.c b/src/libfaad/sbr_e_nf.c index 2d2bf4f85..14ba1e4a5 100644 --- a/src/libfaad/sbr_e_nf.c +++ b/src/libfaad/sbr_e_nf.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_e_nf.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_e_nf.c,v 1.21 2007/11/01 12:33:35 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/sbr_e_nf.h b/src/libfaad/sbr_e_nf.h index 48874c125..59017a906 100644 --- a/src/libfaad/sbr_e_nf.h +++ b/src/libfaad/sbr_e_nf.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_e_nf.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_e_nf.h,v 1.18 2007/11/01 12:33:35 menno Exp $ **/ #ifndef __SBR_E_NF_H__ diff --git a/src/libfaad/sbr_fbt.c b/src/libfaad/sbr_fbt.c index 511235863..5919c7b56 100644 --- a/src/libfaad/sbr_fbt.c +++ b/src/libfaad/sbr_fbt.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_fbt.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_fbt.c,v 1.21 2007/11/01 12:33:35 menno Exp $ **/ /* Calculate frequency band tables */ diff --git a/src/libfaad/sbr_fbt.h b/src/libfaad/sbr_fbt.h index 26c580efe..d24a25e27 100644 --- a/src/libfaad/sbr_fbt.h +++ b/src/libfaad/sbr_fbt.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_fbt.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_fbt.h,v 1.18 2007/11/01 12:33:35 menno Exp $ **/ #ifndef __SBR_FBT_H__ diff --git a/src/libfaad/sbr_hfadj.c b/src/libfaad/sbr_hfadj.c index 081f731e9..efac06502 100644 --- a/src/libfaad/sbr_hfadj.c +++ b/src/libfaad/sbr_hfadj.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfadj.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_hfadj.c,v 1.22 2007/11/01 12:33:35 menno Exp $ **/ /* High Frequency adjustment */ @@ -39,8 +42,8 @@ /* static function declarations */ -static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, - qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch); +static uint8_t estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, + qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch); static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch); #ifdef SBR_LOW_POWER static void calc_gain_groups(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, uint8_t ch); @@ -49,13 +52,14 @@ static void aliasing_reduction(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, static void hf_assembly(sbr_info *sbr, sbr_hfadj_info *adj, qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch); -void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] +uint8_t hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] #ifdef SBR_LOW_POWER - ,real_t *deg /* aliasing degree */ + ,real_t *deg /* aliasing degree */ #endif - ,uint8_t ch) + ,uint8_t ch) { ALIGN sbr_hfadj_info adj = {{{0}}}; + uint8_t ret = 0; if (sbr->bs_frame_class[ch] == FIXFIX) { @@ -72,7 +76,9 @@ void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] sbr->l_A[ch] = sbr->L_E[ch] + 1 - sbr->bs_pointer[ch]; } - estimate_current_envelope(sbr, &adj, Xsbr, ch); + ret = estimate_current_envelope(sbr, &adj, Xsbr, ch); + if (ret > 0) + return 1; calculate_gain(sbr, &adj, ch); @@ -82,6 +88,8 @@ void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] #endif hf_assembly(sbr, &adj, Xsbr, ch); + + return 0; } static uint8_t get_S_mapped(sbr_info *sbr, uint8_t ch, uint8_t l, uint8_t current_band) @@ -125,8 +133,8 @@ static uint8_t get_S_mapped(sbr_info *sbr, uint8_t ch, uint8_t l, uint8_t curren return 0; } -static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, - qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch) +static uint8_t estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, + qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch) { uint8_t m, l, j, k, k_l, k_h, p; real_t nrg, div; @@ -142,6 +150,9 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, div = (real_t)(u_i - l_i); + if (div == 0) + div = 1; + for (m = 0; m < sbr->M; m++) { nrg = 0; @@ -192,6 +203,9 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, div = (real_t)((u_i - l_i)*(k_h - k_l)); + if (div == 0) + div = 1; + for (i = l_i + sbr->tHFAdj; i < u_i + sbr->tHFAdj; i++) { for (j = k_l; j < k_h; j++) @@ -225,6 +239,8 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, } } } + + return 0; } #ifdef FIXED_POINT @@ -1342,15 +1358,27 @@ static void calc_gain_groups(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, ui { uint8_t l, k, i; uint8_t grouping; + uint8_t S_mapped; for (l = 0; l < sbr->L_E[ch]; l++) { + uint8_t current_res_band = 0; i = 0; grouping = 0; + S_mapped = get_S_mapped(sbr, ch, l, current_res_band); + for (k = sbr->kx; k < sbr->kx + sbr->M - 1; k++) { - if (deg[k + 1] && adj->S_mapped[l][k-sbr->kx] == 0) + if (k == sbr->f_table_res[sbr->f[ch][l]][current_res_band+1]) + { + /* step to next resolution band */ + current_res_band++; + + S_mapped = get_S_mapped(sbr, ch, l, current_res_band); + } + + if (deg[k + 1] && S_mapped == 0) { if (grouping == 0) { @@ -1361,7 +1389,7 @@ static void calc_gain_groups(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, ui } else { if (grouping) { - if (adj->S_mapped[l][k-sbr->kx]) + if (S_mapped) { sbr->f_group[l][i] = k; } else { diff --git a/src/libfaad/sbr_hfadj.h b/src/libfaad/sbr_hfadj.h index aeaba32e8..03ef71a0c 100644 --- a/src/libfaad/sbr_hfadj.h +++ b/src/libfaad/sbr_hfadj.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfadj.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_hfadj.h,v 1.19 2007/11/01 12:33:35 menno Exp $ **/ #ifndef __SBR_HFADJ_H__ @@ -40,11 +43,11 @@ typedef struct } sbr_hfadj_info; -void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] +uint8_t hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] #ifdef SBR_LOW_POWER - ,real_t *deg + ,real_t *deg #endif - ,uint8_t ch); + ,uint8_t ch); #ifdef __cplusplus diff --git a/src/libfaad/sbr_hfgen.c b/src/libfaad/sbr_hfgen.c index 688b9a0ea..b0f3219c3 100644 --- a/src/libfaad/sbr_hfgen.c +++ b/src/libfaad/sbr_hfgen.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfgen.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_hfgen.c,v 1.26 2007/11/01 12:33:35 menno Exp $ **/ /* High Frequency generation */ @@ -36,7 +39,6 @@ #include "sbr_hfgen.h" #include "sbr_fbt.h" - /* static function declarations */ #ifdef SBR_LOW_POWER static void calc_prediction_coef_lp(sbr_info *sbr, qmf_t Xlow[MAX_NTSRHFG][64], diff --git a/src/libfaad/sbr_hfgen.h b/src/libfaad/sbr_hfgen.h index 27a58be61..a7c842494 100644 --- a/src/libfaad/sbr_hfgen.h +++ b/src/libfaad/sbr_hfgen.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfgen.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_hfgen.h,v 1.20 2007/11/01 12:33:35 menno Exp $ **/ #ifndef __SBR_HFGEN_H__ diff --git a/src/libfaad/sbr_huff.c b/src/libfaad/sbr_huff.c index 39ae32b9b..6ba878640 100644 --- a/src/libfaad/sbr_huff.c +++ b/src/libfaad/sbr_huff.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_huff.c,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_huff.c,v 1.21 2007/11/01 12:33:35 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/sbr_huff.h b/src/libfaad/sbr_huff.h index 631a43a8d..f749f2e08 100644 --- a/src/libfaad/sbr_huff.h +++ b/src/libfaad/sbr_huff.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_huff.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_huff.h,v 1.21 2007/11/01 12:33:35 menno Exp $ **/ #ifndef __SBR_HUFF_H__ diff --git a/src/libfaad/sbr_noise.h b/src/libfaad/sbr_noise.h index a25fbf3cd..1cf7190de 100644 --- a/src/libfaad/sbr_noise.h +++ b/src/libfaad/sbr_noise.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_noise.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_noise.h,v 1.17 2007/11/01 12:33:35 menno Exp $ **/ #ifndef __SBR_NOISE_H__ diff --git a/src/libfaad/sbr_qmf.c b/src/libfaad/sbr_qmf.c index d534a0442..68f408916 100644 --- a/src/libfaad/sbr_qmf.c +++ b/src/libfaad/sbr_qmf.c @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_qmf.c,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_qmf.c,v 1.32 2007/11/01 12:33:36 menno Exp $ **/ #include "common.h" @@ -72,7 +75,7 @@ void sbr_qmf_analysis_32(sbr_info *sbr, qmfa_info *qmfa, const real_t *input, #else ALIGN real_t y[32]; #endif - uint16_t in = 0; + uint32_t in = 0; uint8_t l; /* qmf subsample l */ @@ -251,7 +254,7 @@ void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 { ALIGN real_t x[16]; ALIGN real_t y[16]; - int16_t n, k, out = 0; + int32_t n, k, out = 0; uint8_t l; /* qmf subsample l */ @@ -320,7 +323,7 @@ void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 { ALIGN real_t x[64]; ALIGN real_t y[64]; - int16_t n, k, out = 0; + int32_t n, k, out = 0; uint8_t l; @@ -392,7 +395,7 @@ void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 #ifndef FIXED_POINT real_t scale = 1.f/64.f; #endif - int16_t n, k, out = 0; + int32_t n, k, out = 0; uint8_t l; @@ -475,7 +478,7 @@ void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 #ifndef FIXED_POINT real_t scale = 1.f/64.f; #endif - int16_t n, k, out = 0; + int32_t n, k, out = 0; uint8_t l; diff --git a/src/libfaad/sbr_qmf.h b/src/libfaad/sbr_qmf.h index b1d673d9c..efb167be9 100644 --- a/src/libfaad/sbr_qmf.h +++ b/src/libfaad/sbr_qmf.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_qmf.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_qmf.h,v 1.25 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SBR_QMF_H__ diff --git a/src/libfaad/sbr_qmf_c.h b/src/libfaad/sbr_qmf_c.h index d9c079520..c2fcd2739 100644 --- a/src/libfaad/sbr_qmf_c.h +++ b/src/libfaad/sbr_qmf_c.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_qmf_c.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_qmf_c.h,v 1.17 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SBR_QMF_C_H__ diff --git a/src/libfaad/sbr_syntax.c b/src/libfaad/sbr_syntax.c index 19cb1b5c2..216c2e9e1 100644 --- a/src/libfaad/sbr_syntax.c +++ b/src/libfaad/sbr_syntax.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_syntax.c,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_syntax.c,v 1.38 2007/11/01 12:33:36 menno Exp $ **/ #include "common.h" @@ -46,6 +49,7 @@ #include "analysis.h" /* static function declarations */ +/* static function declarations */ static void sbr_header(bitfile *ld, sbr_info *sbr); static uint8_t calc_sbr_tables(sbr_info *sbr, uint8_t start_freq, uint8_t stop_freq, uint8_t samplerate_mode, uint8_t freq_scale, @@ -131,16 +135,23 @@ static uint8_t calc_sbr_tables(sbr_info *sbr, uint8_t start_freq, uint8_t stop_f } /* table 2 */ -uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt) +uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt, + uint8_t psResetFlag) { uint8_t result = 0; uint16_t num_align_bits = 0; - uint16_t num_sbr_bits = (uint16_t)faad_get_processed_bits(ld); + uint16_t num_sbr_bits1 = (uint16_t)faad_get_processed_bits(ld); + uint16_t num_sbr_bits2; uint8_t saved_start_freq, saved_samplerate_mode; uint8_t saved_stop_freq, saved_freq_scale; uint8_t saved_alter_scale, saved_xover_band; +#if (defined(PS_DEC) || defined(DRM_PS)) + if (psResetFlag) + sbr->psResetFlag = psResetFlag; +#endif + #ifdef DRM if (!sbr->Is_DRM_SBR) #endif @@ -206,28 +217,40 @@ uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt) { calc_sbr_tables(sbr, saved_start_freq, saved_stop_freq, saved_samplerate_mode, saved_freq_scale, - saved_alter_scale, saved_xover_band); + saved_alter_scale, saved_xover_band); } - /* we should be able to safely set result to 0 now */ - result = 0; + /* we should be able to safely set result to 0 now, */ + /* but practise indicates this doesn't work well */ } } else { result = 1; } -#ifdef DRM - if (!sbr->Is_DRM_SBR) -#endif + num_sbr_bits2 = (uint16_t)faad_get_processed_bits(ld) - num_sbr_bits1; + + /* check if we read more bits then were available for sbr */ + if (8*cnt < num_sbr_bits2) { - num_sbr_bits = (uint16_t)faad_get_processed_bits(ld) - num_sbr_bits; + faad_resetbits(ld, num_sbr_bits1 + 8*cnt); + num_sbr_bits2 = 8*cnt; - /* check if we read more bits then were available for sbr */ - if (8*cnt < num_sbr_bits) - return 1; +#ifdef PS_DEC + /* turn off PS for the unfortunate case that we randomly read some + * PS data that looks correct */ + sbr->ps_used = 0; +#endif + + /* Make sure it doesn't decode SBR in this frame, or we'll get glitches */ + return 1; + } +#ifdef DRM + if (!sbr->Is_DRM_SBR) +#endif + { /* -4 does not apply, bs_extension_type is re-read in this function */ - num_align_bits = 8*cnt /*- 4*/ - num_sbr_bits; + num_align_bits = 8*cnt /*- 4*/ - num_sbr_bits2; while (num_align_bits > 7) { @@ -364,11 +387,14 @@ static uint8_t sbr_single_channel_element(bitfile *ld, sbr_info *sbr) #ifdef DRM /* bs_coupling, from sbr_channel_pair_base_element(bs_amp_res) */ if (sbr->Is_DRM_SBR) + { faad_get1bit(ld); + } #endif if ((result = sbr_grid(ld, sbr, 0)) > 0) return result; + sbr_dtdf(ld, sbr, 0); invf_mode(ld, sbr, 0); sbr_envelope(ld, sbr, 0); @@ -431,7 +457,11 @@ static uint8_t sbr_single_channel_element(bitfile *ld, sbr_info *sbr) } else { /* to be safe make it 3, will switch to "default" * in sbr_extension() */ +#ifdef DRM + return 1; +#else sbr->bs_extension_id = 3; +#endif } } #endif @@ -829,6 +859,10 @@ static uint16_t sbr_extension(bitfile *ld, sbr_info *sbr, { sbr->ps = ps_init(get_sr_index(sbr->sample_rate)); } + if (sbr->psResetFlag) + { + sbr->ps->header_read = 0; + } ret = ps_data(sbr->ps, ld, &header); /* enable PS if and only if: a header has been decoded */ @@ -837,6 +871,11 @@ static uint16_t sbr_extension(bitfile *ld, sbr_info *sbr, sbr->ps_used = 1; } + if (header == 1) + { + sbr->psResetFlag = 0; + } + return ret; #endif #ifdef DRM_PS diff --git a/src/libfaad/sbr_syntax.h b/src/libfaad/sbr_syntax.h index 1baa5fec3..a13b2708f 100644 --- a/src/libfaad/sbr_syntax.h +++ b/src/libfaad/sbr_syntax.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_syntax.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_syntax.h,v 1.23 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SBR_SYNTAX_H__ @@ -55,7 +58,8 @@ extern "C" { #define NOISE_FLOOR_OFFSET 6 -uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt); +uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt, + uint8_t resetFlag); #ifdef __cplusplus } diff --git a/src/libfaad/sbr_tf_grid.c b/src/libfaad/sbr_tf_grid.c index ae741c256..b3b24fd16 100644 --- a/src/libfaad/sbr_tf_grid.c +++ b/src/libfaad/sbr_tf_grid.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_tf_grid.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_tf_grid.c,v 1.19 2007/11/01 12:33:36 menno Exp $ **/ /* Time/Frequency grid */ diff --git a/src/libfaad/sbr_tf_grid.h b/src/libfaad/sbr_tf_grid.h index 8772a384a..27a8f908e 100644 --- a/src/libfaad/sbr_tf_grid.h +++ b/src/libfaad/sbr_tf_grid.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_tf_grid.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sbr_tf_grid.h,v 1.17 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SBR_TF_GRID_H__ diff --git a/src/libfaad/sine_win.h b/src/libfaad/sine_win.h index c7e6ecd6e..e4198da3a 100644 --- a/src/libfaad/sine_win.h +++ b/src/libfaad/sine_win.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: sine_win.h,v 1.6 2005/10/29 23:57:07 tmmm Exp $ +** $Id: sine_win.h,v 1.19 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SINE_WIN_H__ diff --git a/src/libfaad/specrec.c b/src/libfaad/specrec.c index fd4b0653c..ea6ca94b9 100644 --- a/src/libfaad/specrec.c +++ b/src/libfaad/specrec.c @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: specrec.c,v 1.10 2006/06/17 20:43:57 dgp85 Exp $ +** $Id: specrec.c,v 1.60 2007/11/01 12:33:36 menno Exp $ **/ /* @@ -327,6 +330,11 @@ uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics) } #endif + if (ics->max_sfb > ics->num_swb) + { + return 32; + } + /* preparation of sect_sfb_offset for long blocks */ /* also copy the last value! */ #ifdef LD_DEC @@ -348,6 +356,7 @@ uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics) } ics->sect_sfb_offset[0][ics->num_swb] = hDecoder->frameLength; ics->swb_offset[ics->num_swb] = hDecoder->frameLength; + ics->swb_offset_max = hDecoder->frameLength; } else { #endif for (i = 0; i < ics->num_swb; i++) @@ -357,6 +366,7 @@ uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics) } ics->sect_sfb_offset[0][ics->num_swb] = hDecoder->frameLength; ics->swb_offset[ics->num_swb] = hDecoder->frameLength; + ics->swb_offset_max = hDecoder->frameLength; #ifdef LD_DEC } #endif @@ -367,9 +377,15 @@ uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics) ics->window_group_length[ics->num_window_groups-1] = 1; ics->num_swb = num_swb_128_window[sf_index]; + if (ics->max_sfb > ics->num_swb) + { + return 32; + } + for (i = 0; i < ics->num_swb; i++) ics->swb_offset[i] = swb_offset_128_window[sf_index][i]; ics->swb_offset[ics->num_swb] = hDecoder->frameLength/8; + ics->swb_offset_max = hDecoder->frameLength/8; for (i = 0; i < ics->num_windows-1; i++) { if (bit_set(ics->scale_factor_grouping, 6-i) == 0) @@ -405,7 +421,7 @@ uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics) } return 0; default: - return 1; + return 32; } } @@ -667,25 +683,46 @@ static uint8_t quant_to_spec(NeAACDecHandle hDecoder, static uint8_t allocate_single_channel(NeAACDecHandle hDecoder, uint8_t channel, uint8_t output_channels) { - uint8_t mul = 1; + int mul = 1; #ifdef MAIN_DEC /* MAIN object type prediction */ if (hDecoder->object_type == MAIN) { - hDecoder->pred_stat[channel] = (pred_state*)realloc(hDecoder->pred_stat[channel], hDecoder->frameLength * sizeof(pred_state)); - reset_all_predictors(hDecoder->pred_stat[channel], hDecoder->frameLength); + /* allocate the state only when needed */ + if (hDecoder->pred_stat[channel] != NULL) + { + faad_free(hDecoder->pred_stat[channel]); + hDecoder->pred_stat[channel] = NULL; + } + + hDecoder->pred_stat[channel] = (pred_state*)faad_malloc(hDecoder->frameLength * sizeof(pred_state)); + reset_all_predictors(hDecoder->pred_stat[channel], hDecoder->frameLength); } #endif #ifdef LTP_DEC if (is_ltp_ot(hDecoder->object_type)) { - hDecoder->lt_pred_stat[channel] = (int16_t*)realloc(hDecoder->lt_pred_stat[channel], hDecoder->frameLength*4 * sizeof(int16_t)); - memset(hDecoder->lt_pred_stat[channel], 0, hDecoder->frameLength*4 * sizeof(int16_t)); + /* allocate the state only when needed */ + if (hDecoder->lt_pred_stat[channel] != NULL) + { + faad_free(hDecoder->lt_pred_stat[channel]); + hDecoder->lt_pred_stat[channel] = NULL; + } + + hDecoder->lt_pred_stat[channel] = (int16_t*)faad_malloc(hDecoder->frameLength*4 * sizeof(int16_t)); + memset(hDecoder->lt_pred_stat[channel], 0, hDecoder->frameLength*4 * sizeof(int16_t)); } #endif + if (hDecoder->time_out[channel] != NULL) + { + faad_free(hDecoder->time_out[channel]); + hDecoder->time_out[channel] = NULL; + } + + { mul = 1; #ifdef SBR_DEC hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 0; @@ -696,28 +733,48 @@ static uint8_t allocate_single_channel(NeAACDecHandle hDecoder, uint8_t channel, hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 1; } #endif - hDecoder->time_out[channel] = (real_t*)realloc(hDecoder->time_out[channel], mul*hDecoder->frameLength*sizeof(real_t)); + hDecoder->time_out[channel] = (real_t*)faad_malloc(mul*hDecoder->frameLength*sizeof(real_t)); memset(hDecoder->time_out[channel], 0, mul*hDecoder->frameLength*sizeof(real_t)); + } + #if (defined(PS_DEC) || defined(DRM_PS)) if (output_channels == 2) { - hDecoder->time_out[channel+1] = (real_t*)realloc(hDecoder->time_out[channel+1], mul*hDecoder->frameLength*sizeof(real_t)); - memset(hDecoder->time_out[channel+1], 0, mul*hDecoder->frameLength*sizeof(real_t)); + if (hDecoder->time_out[channel+1] != NULL) + { + faad_free(hDecoder->time_out[channel+1]); + hDecoder->time_out[channel+1] = NULL; + } + + hDecoder->time_out[channel+1] = (real_t*)faad_malloc(mul*hDecoder->frameLength*sizeof(real_t)); + memset(hDecoder->time_out[channel+1], 0, mul*hDecoder->frameLength*sizeof(real_t)); } #endif - hDecoder->fb_intermed[channel] = (real_t*)realloc(hDecoder->fb_intermed[channel], hDecoder->frameLength*sizeof(real_t)); - memset(hDecoder->fb_intermed[channel], 0, hDecoder->frameLength*sizeof(real_t)); + if (hDecoder->fb_intermed[channel] != NULL) + { + faad_free(hDecoder->fb_intermed[channel]); + hDecoder->fb_intermed[channel] = NULL; + } + + hDecoder->fb_intermed[channel] = (real_t*)faad_malloc(hDecoder->frameLength*sizeof(real_t)); + memset(hDecoder->fb_intermed[channel], 0, hDecoder->frameLength*sizeof(real_t)); #ifdef SSR_DEC if (hDecoder->object_type == SSR) { - uint16_t k; - hDecoder->ssr_overlap[channel] = (real_t*)realloc(hDecoder->ssr_overlap[channel], 2*hDecoder->frameLength*sizeof(real_t)); + if (hDecoder->ssr_overlap[channel] == NULL) + { + hDecoder->ssr_overlap[channel] = (real_t*)faad_malloc(2*hDecoder->frameLength*sizeof(real_t)); memset(hDecoder->ssr_overlap[channel], 0, 2*hDecoder->frameLength*sizeof(real_t)); - hDecoder->prev_fmd[channel] = (real_t*)realloc(hDecoder->prev_fmd[channel], 2*hDecoder->frameLength*sizeof(real_t)); + } + if (hDecoder->prev_fmd[channel] == NULL) + { + uint16_t k; + hDecoder->prev_fmd[channel] = (real_t*)faad_malloc(2*hDecoder->frameLength*sizeof(real_t)); for (k = 0; k < 2*hDecoder->frameLength; k++) hDecoder->prev_fmd[channel][k] = REAL_CONST(-1); + } } #endif @@ -727,7 +784,7 @@ static uint8_t allocate_single_channel(NeAACDecHandle hDecoder, uint8_t channel, static uint8_t allocate_channel_pair(NeAACDecHandle hDecoder, uint8_t channel, uint8_t paired_channel) { - uint8_t mul = 1; + int mul = 1; #ifdef MAIN_DEC /* MAIN object type prediction */ @@ -832,7 +889,8 @@ static uint8_t allocate_channel_pair(NeAACDecHandle hDecoder, uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, element *sce, int16_t *spec_data) { - uint8_t retval, output_channels; + uint8_t retval; + int output_channels; ALIGN real_t spec_coef[1024]; #ifdef PROFILE @@ -841,15 +899,38 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, /* always allocate 2 channels, PS can always "suddenly" turn up */ -#if (defined(PS_DEC) || defined(DRM_PS)) - output_channels = hDecoder->ps_used[hDecoder->fr_ch_ele] ? 2 : 1; +#if ( (defined(DRM) && defined(DRM_PS)) ) + output_channels = 2; +#elif defined(PS_DEC) + if (hDecoder->ps_used[hDecoder->fr_ch_ele]) + output_channels = 2; + else + output_channels = 1; #else output_channels = 1; #endif - if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) + if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0) { + /* element_output_channels not set yet */ hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels; + } else if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] != output_channels) { + /* element inconsistency */ + + /* this only happens if PS is actually found but not in the first frame + * this means that there is only 1 bitstream element! + */ + + /* reset the allocation */ + hDecoder->element_alloced[hDecoder->fr_ch_ele] = 0; + + hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels; + + //return 21; + } + + if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0) + { retval = allocate_single_channel(hDecoder, sce->channel, output_channels); if (retval > 0) return retval; @@ -870,7 +951,8 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, /* pns decoding */ - pns_decode(ics, NULL, spec_coef, NULL, hDecoder->frameLength, 0, hDecoder->object_type); + pns_decode(ics, NULL, spec_coef, NULL, hDecoder->frameLength, 0, hDecoder->object_type, + &(hDecoder->__r1), &(hDecoder->__r2)); #ifdef MAIN_DEC /* MAIN object type prediction */ @@ -954,8 +1036,8 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, if (((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) && hDecoder->sbr_alloced[hDecoder->fr_ch_ele]) { - uint8_t ele = hDecoder->fr_ch_ele; - uint8_t ch = sce->channel; + int ele = hDecoder->fr_ch_ele; + int ch = sce->channel; /* following case can happen when forceUpSampling == 1 */ if (hDecoder->sbr[ele] == NULL) @@ -970,9 +1052,9 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, } if (sce->ics1.window_sequence == EIGHT_SHORT_SEQUENCE) - hDecoder->sbr[ele]->maxAACLine = 8*sce->ics1.swb_offset[max(sce->ics1.max_sfb-1, 0)]; + hDecoder->sbr[ele]->maxAACLine = 8*min(sce->ics1.swb_offset[max(sce->ics1.max_sfb-1, 0)], sce->ics1.swb_offset_max); else - hDecoder->sbr[ele]->maxAACLine = sce->ics1.swb_offset[max(sce->ics1.max_sfb-1, 0)]; + hDecoder->sbr[ele]->maxAACLine = min(sce->ics1.swb_offset[max(sce->ics1.max_sfb-1, 0)], sce->ics1.swb_offset_max); /* check if any of the PS tools is used */ #if (defined(PS_DEC) || defined(DRM_PS)) @@ -995,20 +1077,21 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, { return 23; } +#endif /* copy L to R when no PS is used */ #if (defined(PS_DEC) || defined(DRM_PS)) - if ((hDecoder->ps_used[hDecoder->fr_ch_ele] == 0) && (output_channels == 2)) + if ((hDecoder->ps_used[hDecoder->fr_ch_ele] == 0) && + (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 2)) { - uint8_t ele = hDecoder->fr_ch_ele; - uint8_t ch = sce->channel; - uint16_t frame_size = (hDecoder->sbr_alloced[ele]) ? 2 : 1; + int ele = hDecoder->fr_ch_ele; + int ch = sce->channel; + int frame_size = (hDecoder->sbr_alloced[ele]) ? 2 : 1; frame_size *= hDecoder->frameLength*sizeof(real_t); memcpy(hDecoder->time_out[ch+1], hDecoder->time_out[ch], frame_size); } #endif -#endif return 0; } @@ -1049,10 +1132,13 @@ uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_st /* pns decoding */ if (ics1->ms_mask_present) { - pns_decode(ics1, ics2, spec_coef1, spec_coef2, hDecoder->frameLength, 1, hDecoder->object_type); + pns_decode(ics1, ics2, spec_coef1, spec_coef2, hDecoder->frameLength, 1, hDecoder->object_type, + &(hDecoder->__r1), &(hDecoder->__r2)); } else { - pns_decode(ics1, NULL, spec_coef1, NULL, hDecoder->frameLength, 0, hDecoder->object_type); - pns_decode(ics2, NULL, spec_coef2, NULL, hDecoder->frameLength, 0, hDecoder->object_type); + pns_decode(ics1, NULL, spec_coef1, NULL, hDecoder->frameLength, 0, hDecoder->object_type, + &(hDecoder->__r1), &(hDecoder->__r2)); + pns_decode(ics2, NULL, spec_coef2, NULL, hDecoder->frameLength, 0, hDecoder->object_type, + &(hDecoder->__r1), &(hDecoder->__r2)); } /* mid/side decoding */ @@ -1204,9 +1290,9 @@ uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_st if (((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) && hDecoder->sbr_alloced[hDecoder->fr_ch_ele]) { - uint8_t ele = hDecoder->fr_ch_ele; - uint8_t ch0 = cpe->channel; - uint8_t ch1 = cpe->paired_channel; + int ele = hDecoder->fr_ch_ele; + int ch0 = cpe->channel; + int ch1 = cpe->paired_channel; /* following case can happen when forceUpSampling == 1 */ if (hDecoder->sbr[ele] == NULL) @@ -1221,9 +1307,9 @@ uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_st } if (cpe->ics1.window_sequence == EIGHT_SHORT_SEQUENCE) - hDecoder->sbr[ele]->maxAACLine = 8*cpe->ics1.swb_offset[max(cpe->ics1.max_sfb-1, 0)]; + hDecoder->sbr[ele]->maxAACLine = 8*min(cpe->ics1.swb_offset[max(cpe->ics1.max_sfb-1, 0)], cpe->ics1.swb_offset_max); else - hDecoder->sbr[ele]->maxAACLine = cpe->ics1.swb_offset[max(cpe->ics1.max_sfb-1, 0)]; + hDecoder->sbr[ele]->maxAACLine = min(cpe->ics1.swb_offset[max(cpe->ics1.max_sfb-1, 0)], cpe->ics1.swb_offset_max); retval = sbrDecodeCoupleFrame(hDecoder->sbr[ele], hDecoder->time_out[ch0], hDecoder->time_out[ch1], diff --git a/src/libfaad/specrec.h b/src/libfaad/specrec.h index da174abe8..f58094cf4 100644 --- a/src/libfaad/specrec.h +++ b/src/libfaad/specrec.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: specrec.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: specrec.h,v 1.32 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SPECREC_H__ diff --git a/src/libfaad/ssr.c b/src/libfaad/ssr.c index 46517d0c8..368112407 100644 --- a/src/libfaad/ssr.c +++ b/src/libfaad/ssr.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ssr.c,v 1.6 2005/10/29 23:57:07 tmmm Exp $ +** $Id: ssr.c,v 1.19 2007/11/01 12:33:36 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/ssr.h b/src/libfaad/ssr.h index d1defdc45..7adcf2a11 100644 --- a/src/libfaad/ssr.h +++ b/src/libfaad/ssr.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ssr.h,v 1.6 2005/10/29 23:57:07 tmmm Exp $ +** $Id: ssr.h,v 1.19 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SSR_H__ diff --git a/src/libfaad/ssr_fb.c b/src/libfaad/ssr_fb.c index fb62c90c6..a977c9411 100644 --- a/src/libfaad/ssr_fb.c +++ b/src/libfaad/ssr_fb.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ssr_fb.c,v 1.6 2005/10/29 23:57:07 tmmm Exp $ +** $Id: ssr_fb.c,v 1.17 2007/11/01 12:33:36 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/ssr_fb.h b/src/libfaad/ssr_fb.h index 739a4dfbb..3ae4eb04b 100644 --- a/src/libfaad/ssr_fb.h +++ b/src/libfaad/ssr_fb.h @@ -1,6 +1,6 @@ /* -** FAAD - Freeware Advanced Audio Decoder -** Copyright (C) 2002 M. Bakker +** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding +** Copyright (C) 2003-2005 M. Bakker, Ahead Software 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 @@ -16,7 +16,16 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** -** $Id: ssr_fb.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** Any non-GPL usage of this software or parts of this software is strictly +** forbidden. +** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** +** Commercial non-GPL licensing of this software is possible. +** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** +** $Id: ssr_fb.h,v 1.16 2007/11/01 12:33:36 menno Exp $ **/ #ifndef __SSR_FB_H__ diff --git a/src/libfaad/ssr_ipqf.c b/src/libfaad/ssr_ipqf.c index 3064285de..6963427c9 100644 --- a/src/libfaad/ssr_ipqf.c +++ b/src/libfaad/ssr_ipqf.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: ssr_ipqf.c,v 1.6 2005/10/29 23:57:07 tmmm Exp $ +** $Id: ssr_ipqf.c,v 1.18 2007/11/01 12:33:39 menno Exp $ **/ #include "common.h" diff --git a/src/libfaad/ssr_ipqf.h b/src/libfaad/ssr_ipqf.h index 360db978b..47299219c 100644 --- a/src/libfaad/ssr_ipqf.h +++ b/src/libfaad/ssr_ipqf.h @@ -1,6 +1,6 @@ /* -** FAAD - Freeware Advanced Audio Decoder -** Copyright (C) 2002 M. Bakker +** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding +** Copyright (C) 2003-2005 M. Bakker, Ahead Software 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 @@ -16,7 +16,16 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** -** $Id: ssr_ipqf.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** Any non-GPL usage of this software or parts of this software is strictly +** forbidden. +** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** +** Commercial non-GPL licensing of this software is possible. +** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** +** $Id: ssr_ipqf.h,v 1.17 2007/11/01 12:33:39 menno Exp $ **/ #ifndef __SSR_IPQF_H__ diff --git a/src/libfaad/ssr_win.h b/src/libfaad/ssr_win.h index ddbb3086e..64b0f98bf 100644 --- a/src/libfaad/ssr_win.h +++ b/src/libfaad/ssr_win.h @@ -1,6 +1,6 @@ /* -** FAAD - Freeware Advanced Audio Decoder -** Copyright (C) 2002 M. Bakker +** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding +** Copyright (C) 2003-2005 M. Bakker, Ahead Software 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 @@ -16,7 +16,16 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** -** $Id: ssr_win.h,v 1.5 2005/10/29 23:57:07 tmmm Exp $ +** Any non-GPL usage of this software or parts of this software is strictly +** forbidden. +** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** +** Commercial non-GPL licensing of this software is possible. +** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** +** $Id: ssr_win.h,v 1.16 2007/11/01 12:33:39 menno Exp $ **/ #ifndef __SSR_WIN_H__ diff --git a/src/libfaad/structs.h b/src/libfaad/structs.h index db6361a5c..5d957c59e 100644 --- a/src/libfaad/structs.h +++ b/src/libfaad/structs.h @@ -1,28 +1,31 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** +** 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 ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: structs.h,v 1.7 2005/10/29 23:57:07 tmmm Exp $ +** $Id: structs.h,v 1.46 2007/11/01 12:33:40 menno Exp $ **/ #ifndef __STRUCTS_H__ @@ -247,6 +250,7 @@ typedef struct uint8_t scale_factor_grouping; uint16_t sect_sfb_offset[8][15*8]; uint16_t swb_offset[52]; + uint16_t swb_offset_max; uint8_t sect_cb[8][15*8]; uint16_t sect_start[8][15*8]; @@ -261,6 +265,7 @@ typedef struct uint8_t ms_used[MAX_WINDOW_GROUPS][MAX_SFB]; uint8_t noise_used; + uint8_t is_used; uint8_t pulse_data_present; uint8_t tns_data_present; @@ -447,6 +452,14 @@ typedef struct int16_t *lt_pred_stat[MAX_CHANNELS]; #endif +#ifdef DRM + uint8_t error_state; +#endif + + /* RNG states */ + uint32_t __r1; + uint32_t __r2; + /* Program Config Element */ uint8_t pce_set; program_config pce; @@ -463,6 +476,7 @@ typedef struct int64_t scalefac_cycles; int64_t requant_cycles; #endif + const unsigned char *cmes; } NeAACDecStruct, *NeAACDecHandle; diff --git a/src/libfaad/syntax.c b/src/libfaad/syntax.c index 6dc9fc57d..373582b7f 100644 --- a/src/libfaad/syntax.c +++ b/src/libfaad/syntax.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: syntax.c,v 1.10 2006/09/26 17:48:24 dgp85 Exp $ +** $Id: syntax.c,v 1.89 2007/11/01 12:33:40 menno Exp $ **/ /* @@ -93,9 +96,11 @@ static void adts_variable_header(adts_header *adts, bitfile *ld); static void adts_error_check(adts_header *adts, bitfile *ld); static uint8_t dynamic_range_info(bitfile *ld, drc_info *drc); static uint8_t excluded_channels(bitfile *ld, drc_info *drc); -#ifdef SCALABLE_DEC -static int8_t aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, - bitfile *ld, uint8_t this_layer_stereo); +static uint8_t side_info(NeAACDecHandle hDecoder, element *ele, + bitfile *ld, ic_stream *ics, uint8_t scal_flag); +#ifdef DRM +static int8_t DRM_aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, + bitfile *ld, uint8_t this_layer_stereo); #endif @@ -323,7 +328,7 @@ static void decode_sce_lfe(NeAACDecHandle hDecoder, uint8_t channels = hDecoder->fr_channels; uint8_t tag = 0; - if (channels+1 >= MAX_CHANNELS) + if (channels+1 > MAX_CHANNELS) { hInfo->error = 12; return; @@ -413,6 +418,7 @@ void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, bitfile *ld, program_config *pce, drc_info *drc) { uint8_t id_syn_ele; + uint8_t ele_this_frame = 0; hDecoder->fr_channels = 0; hDecoder->fr_ch_ele = 0; @@ -429,36 +435,55 @@ void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, { switch (id_syn_ele) { case ID_SCE: + ele_this_frame++; if (hDecoder->first_syn_ele == 25) hDecoder->first_syn_ele = id_syn_ele; decode_sce_lfe(hDecoder, hInfo, ld, id_syn_ele); if (hInfo->error > 0) return; break; case ID_CPE: + ele_this_frame++; if (hDecoder->first_syn_ele == 25) hDecoder->first_syn_ele = id_syn_ele; decode_cpe(hDecoder, hInfo, ld, id_syn_ele); if (hInfo->error > 0) return; break; case ID_LFE: +#ifdef DRM + hInfo->error = 32; +#else + ele_this_frame++; hDecoder->has_lfe++; decode_sce_lfe(hDecoder, hInfo, ld, id_syn_ele); +#endif if (hInfo->error > 0) return; break; case ID_CCE: /* not implemented yet, but skip the bits */ +#ifdef DRM + hInfo->error = 32; +#else + ele_this_frame++; #ifdef COUPLING_DEC hInfo->error = coupling_channel_element(hDecoder, ld); #else hInfo->error = 6; #endif +#endif if (hInfo->error > 0) return; break; case ID_DSE: + ele_this_frame++; data_stream_element(hDecoder, ld); break; case ID_PCE: + if (ele_this_frame != 0) + { + hInfo->error = 31; + return; + } + ele_this_frame++; /* 14496-4: 5.6.4.1.2.1.3: */ /* program_configuration_element()'s in access units shall be ignored */ program_config_element(pce, ld); @@ -467,6 +492,7 @@ void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, //hDecoder->pce_set = 1; break; case ID_FIL: + ele_this_frame++; /* one sbr_info describes a channel_element not a channel! */ /* if we encounter SBR data here: error */ /* SBR data will be read directly in the SCE/LFE/CPE element */ @@ -577,6 +603,10 @@ static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld, if (retval > 0) return retval; + /* IS not allowed in single channel */ + if (ics->is_used) + return 32; + #ifdef SBR_DEC /* check if next bitstream element is a fill element */ /* if so, read it now so SBR decoding can be done in case of a file with SBR */ @@ -627,6 +657,11 @@ static uint8_t channel_pair_element(NeAACDecHandle hDecoder, bitfile *ld, ics1->ms_mask_present = (uint8_t)faad_getbits(ld, 2 DEBUGVAR(1,41,"channel_pair_element(): ms_mask_present")); + if (ics1->ms_mask_present == 3) + { + /* bitstream error */ + return 32; + } if (ics1->ms_mask_present == 1) { uint8_t g, sfb; @@ -730,14 +765,23 @@ static uint8_t ics_info(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, uint8_t common_window) { uint8_t retval = 0; + uint8_t ics_reserved_bit; - /* ics->ics_reserved_bit = */ faad_get1bit(ld + ics_reserved_bit = faad_get1bit(ld DEBUGVAR(1,43,"ics_info(): ics_reserved_bit")); + if (ics_reserved_bit != 0) + return 32; ics->window_sequence = (uint8_t)faad_getbits(ld, 2 DEBUGVAR(1,44,"ics_info(): window_sequence")); ics->window_shape = faad_get1bit(ld DEBUGVAR(1,45,"ics_info(): window_shape")); +#ifdef LD_DEC + /* No block switching in LD */ + if ((hDecoder->object_type == LD) && (ics->window_sequence != ONLY_LONG_SEQUENCE)) + return 32; +#endif + if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) { ics->max_sfb = (uint8_t)faad_getbits(ld, 4 @@ -753,6 +797,7 @@ static uint8_t ics_info(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, if ((retval = window_grouping_info(hDecoder, ics)) > 0) return retval; + /* should be an error */ /* check the range of max_sfb */ if (ics->max_sfb > ics->num_swb) @@ -922,6 +967,10 @@ static uint8_t coupling_channel_element(NeAACDecHandle hDecoder, bitfile *ld) return result; } + /* IS not allowed in single channel */ + if (ics->is_used) + return 32; + for (c = 1; c < num_gain_element_lists; c++) { uint8_t cge; @@ -1029,7 +1078,8 @@ static uint8_t fill_element(NeAACDecHandle hDecoder, bitfile *ld, drc_info *drc hDecoder->sbr_present_flag = 1; /* parse the SBR data */ - hDecoder->sbr[sbr_ele]->ret = sbr_extension_data(ld, hDecoder->sbr[sbr_ele], count); + hDecoder->sbr[sbr_ele]->ret = sbr_extension_data(ld, hDecoder->sbr[sbr_ele], count, + hDecoder->postSeekResetFlag); #if 0 if (hDecoder->sbr[sbr_ele]->ret > 0) @@ -1049,10 +1099,14 @@ static uint8_t fill_element(NeAACDecHandle hDecoder, bitfile *ld, drc_info *drc #endif } else { #endif +#ifndef DRM while (count > 0) { count -= extension_payload(ld, drc, count); } +#else + return 30; +#endif #ifdef SBR_DEC } #endif @@ -1157,10 +1211,10 @@ static void gain_control_data(bitfile *ld, ic_stream *ics) } #endif -#ifdef SCALABLE_DEC +#ifdef DRM /* Table 4.4.13 ASME */ -void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, - bitfile *ld, program_config *pce, drc_info *drc) +void DRM_aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, + bitfile *ld, program_config *pce, drc_info *drc) { uint8_t retval = 0; uint8_t channels = hDecoder->fr_channels = 0; @@ -1175,7 +1229,7 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo hDecoder->fr_ch_ele = 0; - hInfo->error = aac_scalable_main_header(hDecoder, ics1, ics2, ld, this_layer_stereo); + hInfo->error = DRM_aac_scalable_main_header(hDecoder, ics1, ics2, ld, this_layer_stereo); if (hInfo->error > 0) return; @@ -1189,22 +1243,77 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo hDecoder->element_id[0] = ID_SCE; } - for (ch = 0; ch < (this_layer_stereo ? 2 : 1); ch++) + if (this_layer_stereo) { - ic_stream *ics; - if (ch == 0) - { - ics = ics1; - spec_data = spec_data1; - } else { - ics = ics2; - spec_data = spec_data2; - } + cpe.channel = 0; + cpe.paired_channel = 1; + } + + + /* Stereo2 / Mono1 */ + ics1->tns_data_present = faad_get1bit(ld); - hInfo->error = individual_channel_stream(hDecoder, &cpe, ld, ics, 1, spec_data); +#if defined(LTP_DEC) + ics1->ltp.data_present = faad_get1bit(ld); +#elif defined (DRM) + if(faad_get1bit(ld)) { + hInfo->error = 26; + return; + } +#else + faad_get1bit(ld); +#endif + + hInfo->error = side_info(hDecoder, &cpe, ld, ics1, 1); + if (hInfo->error > 0) + return; + if (this_layer_stereo) + { + /* Stereo3 */ + ics2->tns_data_present = faad_get1bit(ld); +#ifdef LTP_DEC + ics1->ltp.data_present = +#endif + faad_get1bit(ld); + hInfo->error = side_info(hDecoder, &cpe, ld, ics2, 1); if (hInfo->error > 0) return; } + /* Stereo4 / Mono2 */ + if (ics1->tns_data_present) + tns_data(ics1, &(ics1->tns), ld); + if (this_layer_stereo) + { + /* Stereo5 */ + if (ics2->tns_data_present) + tns_data(ics2, &(ics2->tns), ld); + } + +#ifdef DRM + /* CRC check */ + if (hDecoder->object_type == DRM_ER_LC) + { + if ((hInfo->error = (uint8_t)faad_check_CRC(ld, (uint16_t)faad_get_processed_bits(ld) - 8)) > 0) + return; + } +#endif + + /* Stereo6 / Mono3 */ + /* error resilient spectral data decoding */ + if ((hInfo->error = reordered_spectral_data(hDecoder, ics1, ld, spec_data1)) > 0) + { + return; + } + if (this_layer_stereo) + { + /* Stereo7 */ + /* error resilient spectral data decoding */ + if ((hInfo->error = reordered_spectral_data(hDecoder, ics2, ld, spec_data2)) > 0) + { + return; + } + } + #ifdef DRM #ifdef SBR_DEC @@ -1244,6 +1353,7 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo /* Set SBR data */ /* consider 8 bits from AAC-CRC */ + /* SBR buffer size is original buffer size minus AAC buffer size */ count = (uint16_t)bit2byte(buffer_size*8 - bitsconsumed); faad_initbits(&ld_sbr, revbuffer, count); @@ -1252,7 +1362,7 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo faad_getbits(&ld_sbr, 8); /* Skip 8-bit CRC */ - hDecoder->sbr[0]->ret = sbr_extension_data(&ld_sbr, hDecoder->sbr[0], count); + hDecoder->sbr[0]->ret = sbr_extension_data(&ld_sbr, hDecoder->sbr[0], count, hDecoder->postSeekResetFlag); #if (defined(PS_DEC) || defined(DRM_PS)) if (hDecoder->sbr[0]->ps_used) { @@ -1261,6 +1371,11 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo } #endif + if (ld_sbr.error) + { + hDecoder->sbr[0]->ret = 1; + } + /* check CRC */ /* no need to check it if there was already an error */ if (hDecoder->sbr[0]->ret == 0) @@ -1269,7 +1384,7 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo /* SBR data was corrupted, disable it until the next header */ if (hDecoder->sbr[0]->ret != 0) { - hDecoder->sbr[0]->header_count = 0; + hDecoder->sbr[0]->header_count = 0; } faad_endbits(&ld_sbr); @@ -1308,15 +1423,18 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo } /* Table 4.4.15 */ -static int8_t aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, - bitfile *ld, uint8_t this_layer_stereo) +static int8_t DRM_aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, + bitfile *ld, uint8_t this_layer_stereo) { uint8_t retval = 0; uint8_t ch; ic_stream *ics; + uint8_t ics_reserved_bit; - /* ics1->ics_reserved_bit = */ faad_get1bit(ld + ics_reserved_bit = faad_get1bit(ld DEBUGVAR(1,300,"aac_scalable_main_header(): ics_reserved_bits")); + if (ics_reserved_bit != 0) + return 32; ics1->window_sequence = (uint8_t)faad_getbits(ld, 2 DEBUGVAR(1,301,"aac_scalable_main_header(): window_sequence")); ics1->window_shape = faad_get1bit(ld @@ -1346,6 +1464,11 @@ static int8_t aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, { ics1->ms_mask_present = (uint8_t)faad_getbits(ld, 2 DEBUGVAR(1,306,"aac_scalable_main_header(): ms_mask_present")); + if (ics1->ms_mask_present == 3) + { + /* bitstream error */ + return 32; + } if (ics1->ms_mask_present == 1) { uint8_t g, sfb; @@ -1364,70 +1487,12 @@ static int8_t aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ics1->ms_mask_present = 0; } - if (0) - { - faad_get1bit(ld - DEBUGVAR(1,308,"aac_scalable_main_header(): tns_channel_mono_layer")); - } - - for (ch = 0; ch < (this_layer_stereo ? 2 : 1); ch++) - { - if (ch == 0) - ics = ics1; - else - ics = ics2; - - if ( 1 /*!tvq_layer_pesent || (tns_aac_tvq_en[ch] == 1)*/) - { - if ((ics->tns_data_present = faad_get1bit(ld - DEBUGVAR(1,309,"aac_scalable_main_header(): tns_data_present"))) & 1) - { -#ifdef DRM - /* different order of data units in DRM */ - if (hDecoder->object_type != DRM_ER_LC) -#endif - { - tns_data(ics, &(ics->tns), ld); - } - } - } -#if 0 - if (0 /*core_flag || tvq_layer_pesent*/) - { - if ((ch==0) || ((ch==1) && (core_stereo || tvq_stereo)) - diff_control_data(); - if (mono_stereo_flag) - diff_control_data_lr(); - } else { -#endif - if (( -#ifdef LTP_DEC - ics->ltp.data_present = -#endif - faad_get1bit(ld DEBUGVAR(1,310,"aac_scalable_main_header(): ltp.data_present"))) & 1) - { -#ifdef LTP_DEC - if ((retval = ltp_data(hDecoder, ics, &(ics->ltp), ld)) > 0) - { - return retval; - } -#else - return 26; -#endif - } -#if 0 - } -#endif - } - return 0; } #endif -/* Table 4.4.24 */ -static uint8_t individual_channel_stream(NeAACDecHandle hDecoder, element *ele, - bitfile *ld, ic_stream *ics, uint8_t scal_flag, - int16_t *spec_data) +static uint8_t side_info(NeAACDecHandle hDecoder, element *ele, + bitfile *ld, ic_stream *ics, uint8_t scal_flag) { uint8_t result; @@ -1513,6 +1578,21 @@ static uint8_t individual_channel_stream(NeAACDecHandle hDecoder, element *ele, if ((result = rvlc_decode_scale_factors(ics, ld)) > 0) return result; } +#endif + + return 0; +} + +/* Table 4.4.24 */ +static uint8_t individual_channel_stream(NeAACDecHandle hDecoder, element *ele, + bitfile *ld, ic_stream *ics, uint8_t scal_flag, + int16_t *spec_data) +{ + uint8_t result; + + result = side_info(hDecoder, ele, ld, ics, scal_flag); + if (result > 0) + return result; if (hDecoder->object_type >= ER_OBJECT_START) { @@ -1523,10 +1603,13 @@ static uint8_t individual_channel_stream(NeAACDecHandle hDecoder, element *ele, #ifdef DRM /* CRC check */ if (hDecoder->object_type == DRM_ER_LC) + { if ((result = (uint8_t)faad_check_CRC(ld, (uint16_t)faad_get_processed_bits(ld) - 8)) > 0) return result; + } #endif +#ifdef ERROR_RESILIENCE if (hDecoder->aacSpectralDataResilienceFlag) { /* error resilient spectral data decoding */ @@ -1594,7 +1677,7 @@ static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld /* if "faad_getbits" detects error and returns "0", "k" is never incremented and we cannot leave the while loop */ - if ((ld->error != 0) || (ld->no_more_reading)) + if (ld->error != 0) return 14; #ifdef ERROR_RESILIENCE @@ -1605,12 +1688,23 @@ static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld ics->sect_cb[g][i] = (uint8_t)faad_getbits(ld, sect_cb_bits DEBUGVAR(1,71,"section_data(): sect_cb")); + if (ics->sect_cb[g][i] == 12) + return 32; + #if 0 printf("%d\n", ics->sect_cb[g][i]); #endif +#ifndef DRM if (ics->sect_cb[g][i] == NOISE_HCB) ics->noise_used = 1; +#else + /* PNS not allowed in DRM */ + if (ics->sect_cb[g][i] == NOISE_HCB) + return 29; +#endif + if (ics->sect_cb[g][i] == INTENSITY_HCB2 || ics->sect_cb[g][i] == INTENSITY_HCB) + ics->is_used = 1; #ifdef ERROR_RESILIENCE if (hDecoder->aacSectionDataResilienceFlag) @@ -1651,10 +1745,18 @@ static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld printf("%d\n", ics->sect_end[g][i]); #endif - if (k + sect_len >= 8*15) - return 15; - if (i >= 8*15) - return 15; + if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) + { + if (k + sect_len > 8*15) + return 15; + if (i >= 8*15) + return 15; + } else { + if (k + sect_len > MAX_SFB) + return 15; + if (i >= MAX_SFB) + return 15; + } for (sfb = k; sfb < k + sect_len; sfb++) { @@ -1675,6 +1777,13 @@ static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld i++; } ics->num_sec[g] = i; + + /* the sum of all sect_len_incr elements for a given window + * group shall equal max_sfb */ + if (k != ics->max_sfb) + { + return 32; + } #if 0 printf("%d\n", ics->num_sec[g]); #endif @@ -1735,6 +1844,7 @@ static uint8_t decode_scale_factors(ic_stream *ics, bitfile *ld) break; case NOISE_HCB: /* noise books */ +#ifndef DRM /* decode noise energy */ if (noise_pcm_flag) { @@ -1750,6 +1860,10 @@ static uint8_t decode_scale_factors(ic_stream *ics, bitfile *ld) #ifdef SF_PRINT printf("%d\n", ics->scale_factors[g][sfb]); #endif +#else + /* PNS not allowed in DRM */ + return 29; +#endif break; default: /* spectral books */ @@ -2048,11 +2162,11 @@ static uint16_t extension_payload(bitfile *ld, drc_info *drc, uint16_t count) return n; case EXT_FILL_DATA: /* fill_nibble = */ faad_getbits(ld, 4 - DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be '0000' */ + DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be ‘0000’ */ for (i = 0; i < count-1; i++) { /* fill_byte[i] = */ faad_getbits(ld, 8 - DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be '10100101' */ + DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be ‘10100101’ */ } return count; case EXT_DATA_ELEMENT: @@ -2127,7 +2241,7 @@ static uint8_t dynamic_range_info(bitfile *ld, drc_info *drc) n++; drc->num_bands += band_incr; - for (i = 0; i < drc->num_bands; i++); + for (i = 0; i < drc->num_bands; i++) { drc->band_top[i] = (uint8_t)faad_getbits(ld, 8 DEBUGVAR(1,97,"dynamic_range_info(): band_top")); diff --git a/src/libfaad/syntax.h b/src/libfaad/syntax.h index a047dd644..123c4573f 100644 --- a/src/libfaad/syntax.h +++ b/src/libfaad/syntax.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: syntax.h,v 1.10 2005/10/29 23:57:07 tmmm Exp $ +** $Id: syntax.h,v 1.58 2007/11/01 12:33:40 menno Exp $ **/ #ifndef __SYNTAX_H__ @@ -114,9 +117,10 @@ void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, bitfile *ld, program_config *pce, drc_info *drc); uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, int16_t *spectral_data); -void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, - bitfile *ld, program_config *pce, drc_info *drc); - +#ifdef DRM +void DRM_aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, + bitfile *ld, program_config *pce, drc_info *drc); +#endif #ifdef __cplusplus } diff --git a/src/libfaad/tns.c b/src/libfaad/tns.c index bb4db731a..611865204 100644 --- a/src/libfaad/tns.c +++ b/src/libfaad/tns.c @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: tns.c,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: tns.c,v 1.40 2007/11/01 12:33:40 menno Exp $ **/ #include "common.h" @@ -106,11 +109,11 @@ void tns_decode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index, start = min(bottom, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); start = min(start, ics->max_sfb); - start = ics->swb_offset[start]; + start = min(ics->swb_offset[start], ics->swb_offset_max); end = min(top, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); end = min(end, ics->max_sfb); - end = ics->swb_offset[end]; + end = min(ics->swb_offset[end], ics->swb_offset_max); size = end - start; if (size <= 0) @@ -160,11 +163,11 @@ void tns_encode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index, start = min(bottom, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); start = min(start, ics->max_sfb); - start = ics->swb_offset[start]; + start = min(ics->swb_offset[start], ics->swb_offset_max); end = min(top, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); end = min(end, ics->max_sfb); - end = ics->swb_offset[end]; + end = min(ics->swb_offset[end], ics->swb_offset_max); size = end - start; if (size <= 0) @@ -292,7 +295,7 @@ static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *l y = *spectrum; for (j = 0; j < order; j++) - y += MUL_C(state[j], lpc[j+1]); + y += MUL_C(state[state_index+j], lpc[j+1]); /* double ringbuffer state */ state_index--; diff --git a/src/libfaad/tns.h b/src/libfaad/tns.h index fc77894d8..8848c3f2d 100644 --- a/src/libfaad/tns.h +++ b/src/libfaad/tns.h @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com +** 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 @@ -19,10 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** +** The "appropriate copyright message" mentioned in section 2c of the GPLv2 +** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +** ** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. +** For more info contact Nero AG through Mpeg4AAClicense@nero.com. ** -** $Id: tns.h,v 1.8 2005/10/29 23:57:07 tmmm Exp $ +** $Id: tns.h,v 1.23 2007/11/01 12:33:41 menno Exp $ **/ #ifndef __TNS_H__ diff --git a/src/libfaad/xine_faad_decoder.c b/src/libfaad/xine_faad_decoder.c index 934140a32..b90bc701f 100644 --- a/src/libfaad/xine_faad_decoder.c +++ b/src/libfaad/xine_faad_decoder.c @@ -18,6 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <unistd.h> #include <string.h> @@ -35,10 +39,14 @@ #include "audio_out.h" #include "buffer.h" #include "xineutils.h" +#ifdef HAVE_FAAD_H +#include <faad.h> +#else #include "common.h" #include "structs.h" #include "decoder.h" #include "syntax.h" +#endif #define FAAD_MIN_STREAMSIZE 768 /* 6144 bits/channel */ @@ -271,7 +279,32 @@ static void faad_decode_audio ( faad_decoder_t *this, int end_frame ) { lprintf("decoded %d/%d output %ld\n", used, this->size, this->faac_finfo.samples ); - + + /* Performing necessary channel reordering because aac uses a different + * layout than alsa: + * + * aac 5.1 channel layout: c l r ls rs lfe + * alsa 5.1 channel layout: l r ls rs c lfe + * + * Reordering is only necessary for 5.0 and above. Currently only 5.0 + * and 5.1 is being taken care of, the rest will stay in the wrong order + * for now. + * + * WARNING: the following needs a output format of 16 bits per sample. + * TODO: - reorder while copying (in the while() loop) and optimizing + */ + if(this->num_channels == 5 || this->num_channels == 6) + { + int i = 0; + uint16_t* buf = (uint16_t*)(sample_buffer); + + for(; i < this->faac_finfo.samples; i += this->num_channels) { + uint16_t center = buf[i]; + *((uint64_t*)(buf + i)) = *((uint64_t*)(buf + i + 1)); + buf[i + 4] = center; + } + } + while( decoded ) { audio_buffer = this->stream->audio_out->get_buffer (this->stream->audio_out); @@ -320,7 +353,7 @@ static void faad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { if( !this->faac_dec && (buf->decoder_flags & BUF_FLAG_SPECIAL) && buf->decoder_info[1] == BUF_SPECIAL_DECODER_CONFIG ) { - this->dec_config = xine_xmalloc(buf->decoder_info[2]); + this->dec_config = malloc(buf->decoder_info[2]); this->dec_config_size = buf->decoder_info[2]; memcpy(this->dec_config, buf->decoder_info_ptr[2], buf->decoder_info[2]); @@ -341,7 +374,7 @@ static void faad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { xine_waveformatex *wavex = (xine_waveformatex *) buf->content; if( wavex->cbSize > 0 ) { - this->dec_config = xine_xmalloc(wavex->cbSize); + this->dec_config = malloc(wavex->cbSize); this->dec_config_size = wavex->cbSize; memcpy(this->dec_config, buf->content + sizeof(xine_waveformatex), wavex->cbSize); @@ -417,7 +450,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre faad_decoder_t *this ; - this = (faad_decoder_t *) xine_xmalloc (sizeof (faad_decoder_t)); + this = calloc(1, sizeof (faad_decoder_t)); this->audio_decoder.decode_data = faad_decode_data; this->audio_decoder.reset = faad_reset; @@ -458,7 +491,7 @@ static void *init_plugin (xine_t *xine, void *data) { faad_class_t *this ; - this = (faad_class_t *) xine_xmalloc (sizeof (faad_class_t)); + this = calloc(1, sizeof (faad_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libffmpeg/Makefile.am b/src/libffmpeg/Makefile.am index 61acdd0d1..9af34df26 100644 --- a/src/libffmpeg/Makefile.am +++ b/src/libffmpeg/Makefile.am @@ -1,45 +1,12 @@ include $(top_srcdir)/misc/Makefile.common +DEFAULT_INCLUDES = -I. + if HAVE_FFMPEG -AM_CFLAGS = $(FFMPEG_CFLAGS) $(FFMPEG_POSTPROC_CFLAGS) -link_ffmpeg = $(FFMPEG_LIBS) $(FFMPEG_POSTPROC_LIBS) else -ff_cppflags = -I$(top_srcdir)/src/libffmpeg/libavutil -link_ffmpeg = \ - $(top_builddir)/src/libffmpeg/libavcodec/libavcodec.la \ - $(top_builddir)/src/libffmpeg/libavutil/libavutil.la \ - $(top_builddir)/src/libffmpeg/libavcodec/libpostproc/libpostprocess.la SUBDIRS = libavcodec libavutil endif -# ffmpeg_config.h is generated by configure -DISTCLEANFILES = ffmpeg_config.h - -# this must always be included, even if the current machine has no DXR3... -EXTRA_DIST = ffmpeg_encoder.c diff_to_ffmpeg_cvs.txt +EXTRA_DIST = diff_to_ffmpeg_cvs.txt INTERNAL_DOCS = diff_to_ffmpeg_cvs.txt - -xineplug_LTLIBRARIES = xineplug_decode_ff.la xineplug_decode_dvaudio.la - -if HAVE_DXR3 -AM_CPPFLAGS = -I$(top_srcdir)/src/dxr3 $(X_CFLAGS) $(ff_cppflags) \ - $(ZLIB_CPPFLAGS) -xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \ - ffmpeg_encoder.c ff_mpeg_parser.c ffmpeg_decoder.h \ - ff_mpeg_parser.h -else -AM_CPPFLAGS = $(ff_cppflags) $(ZLIB_CPPFLAGS) -xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \ - ff_mpeg_parser.c ffmpeg_decoder.h ff_mpeg_parser.h -endif - -xineplug_decode_ff_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) -xineplug_decode_ff_la_LDFLAGS = $(xineplug_ldflags) $(IMPURE_TEXT_LDFLAGS) -xineplug_decode_ff_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) -lm $(ZLIB_LIBS) \ - $(link_ffmpeg) $(PTHREAD_LIBS) $(LTLIBINTL) - -xineplug_decode_dvaudio_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) -xineplug_decode_dvaudio_la_LDFLAGS = $(xineplug_ldflags) -xineplug_decode_dvaudio_la_SOURCES = ff_dvaudio_decoder.c -xineplug_decode_dvaudio_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) diff --git a/src/libffmpeg/libavcodec/i386/Makefile.am b/src/libffmpeg/libavcodec/i386/Makefile.am index b9d33c3a7..039c50d61 100644 --- a/src/libffmpeg/libavcodec/i386/Makefile.am +++ b/src/libffmpeg/libavcodec/i386/Makefile.am @@ -10,6 +10,9 @@ AM_CPPFLAGS = $(LIBFFMPEG_CPPFLAGS) -I$(top_srcdir)/src/libffmpeg/libavutil -I$( # Avoid "can't find register" failures with -O1 and higher dsputil_mmx.o dsputil_mmx.lo: CFLAGS=$(shell echo @CFLAGS@ | sed -e 's/-funroll-loops//g; s/$$/ -Os/') +if ARCH_X86_32 +dsputil_mmx.o dsputil_mmx.lo: CFLAGS+=-prefer-non-pic +endif # Avoid errors on (at least) amd64 with -O0 fdct_mmx.o fdct_mmx.lo: CFLAGS=`echo @CFLAGS@ | sed -e 's/^/-Os /; s/-O0\?\s/-Os /g'` diff --git a/src/libmad/Makefile.am b/src/libmad/Makefile.am index c879645c5..56339cc72 100644 --- a/src/libmad/Makefile.am +++ b/src/libmad/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CFLAGS = -DOPT_SPEED diff --git a/src/libmad/bit.c b/src/libmad/bit.c index 8d9571e8f..cd0fe4904 100644 --- a/src/libmad/bit.c +++ b/src/libmad/bit.c @@ -27,7 +27,8 @@ # ifdef HAVE_LIMITS_H # include <limits.h> -# else +# endif +# ifndef CHAR_BIT # define CHAR_BIT 8 # endif diff --git a/src/libmad/layer12.c b/src/libmad/layer12.c index 25fd04d70..76def1189 100644 --- a/src/libmad/layer12.c +++ b/src/libmad/layer12.c @@ -27,7 +27,8 @@ # ifdef HAVE_LIMITS_H # include <limits.h> -# else +# endif +#ifndef CHAR_BIT # define CHAR_BIT 8 # endif diff --git a/src/libmad/layer3.c b/src/libmad/layer3.c index c5d46e8d1..899102e0d 100644 --- a/src/libmad/layer3.c +++ b/src/libmad/layer3.c @@ -34,7 +34,8 @@ # ifdef HAVE_LIMITS_H # include <limits.h> -# else +#endif +# ifndef CHAR_BIT # define CHAR_BIT 8 # endif diff --git a/src/libmad/xine_mad_decoder.c b/src/libmad/xine_mad_decoder.c index bb4ba1f7a..cb8c52831 100644 --- a/src/libmad/xine_mad_decoder.c +++ b/src/libmad/xine_mad_decoder.c @@ -22,7 +22,7 @@ #include <stdlib.h> #include <string.h> -#include <config.h> +#include "config.h" #ifdef HAVE_MAD_H #include <mad.h> @@ -48,6 +48,20 @@ #define INPUT_BUF_SIZE 16384 +/* According to Rob Leslie (libmad author) : + * The absolute theoretical maximum frame size is 2881 bytes: MPEG 2.5 Layer II, + * 8000 Hz @ 160 kbps, with a padding slot. (Such a frame is unlikely, but it was + * a useful exercise to compute all possible frame sizes.) Add to this an 8 byte + * MAD_BUFFER_GUARD, and the minimum buffer size you should be streaming to + * libmad in the general case is 2889 bytes. + + * Theoretical frame sizes for Layer III range from 24 to 1441 bytes, but there + * is a "soft" limit imposed by the standard of 960 bytes. Nonetheless MAD can + * decode frames of any size as long as they fit entirely in the buffer you pass, + * not including the MAD_BUFFER_GUARD bytes. + */ +#define MAD_MIN_SIZE 2889 + typedef struct { audio_decoder_class_t decoder_class; } mad_class_t; @@ -101,7 +115,7 @@ static void mad_reset (audio_decoder_t *this_gen) { static void mad_discontinuity (audio_decoder_t *this_gen) { mad_decoder_t *this = (mad_decoder_t *) this_gen; - + this->pts = 0; } @@ -141,16 +155,17 @@ static int head_check(mad_decoder_t *this) { static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { mad_decoder_t *this = (mad_decoder_t *) this_gen; + int bytes_in_buffer_at_pts; + + lprintf ("decode data, size: %d, decoder_flags: %d\n", buf->size, buf->decoder_flags); - lprintf ("decode data, decoder_flags: 0x%08X\n", buf->decoder_flags); - if (buf->size>(INPUT_BUF_SIZE-this->bytes_in_buffer)) { xprintf (this->xstream->xine, XINE_VERBOSITY_DEBUG, "libmad: ALERT input buffer too small (%d bytes, %d avail)!\n", buf->size, INPUT_BUF_SIZE-this->bytes_in_buffer); buf->size = INPUT_BUF_SIZE-this->bytes_in_buffer; } - + if ((buf->decoder_flags & BUF_FLAG_HEADER) == 0) { /* reset decoder on leaving preview mode */ @@ -162,6 +177,8 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { this->preview_mode = 1; } + bytes_in_buffer_at_pts = this->bytes_in_buffer; + xine_fast_memcpy (&this->buffer[this->bytes_in_buffer], buf->content, buf->size); this->bytes_in_buffer += buf->size; @@ -173,6 +190,9 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { mad_stream_buffer (&this->stream, this->buffer, this->bytes_in_buffer); + if (this->bytes_in_buffer < MAD_MIN_SIZE) + return; + if (!this->needs_more_data) { this->pts = buf->pts; if (buf->decoder_flags & BUF_FLAG_AUDIO_PADDING) { @@ -206,6 +226,7 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { return; default: + lprintf ("error 0x%04X, mad_stream_buffer %d bytes\n", this->stream.error, this->bytes_in_buffer); mad_stream_buffer (&this->stream, this->buffer, this->bytes_in_buffer); } @@ -266,13 +287,14 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { mad_synth_frame (&this->synth, &this->frame); if ( (buf->decoder_flags & BUF_FLAG_PREVIEW) == 0 ) { - + unsigned int nchannels, nsamples; mad_fixed_t const *left_ch, *right_ch; struct mad_pcm *pcm = &this->synth.pcm; audio_buffer_t *audio_buffer; uint16_t *output; - + int bitrate; + int pts_offset; audio_buffer = this->xstream->audio_out->get_buffer (this->xstream->audio_out); output = audio_buffer->mem; @@ -281,7 +303,7 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { nsamples = pcm->length; left_ch = pcm->samples[0]; right_ch = pcm->samples[1]; - + /* padding */ if (this->start_padding || this->end_padding) { /* check padding validity */ @@ -298,7 +320,7 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { } audio_buffer->num_frames = nsamples; audio_buffer->vpts = this->pts; - + while (nsamples--) { /* output sample(s) in 16-bit signed little-endian PCM */ @@ -309,8 +331,24 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { } + audio_buffer->num_frames = pcm->length; + + /* pts computing */ + if (this->frame.header.bitrate > 0) { + bitrate = this->frame.header.bitrate; + } else { + bitrate = _x_stream_info_get(this->xstream, XINE_STREAM_INFO_AUDIO_BITRATE); + lprintf("offset %d bps\n", bitrate); + } + audio_buffer->vpts = buf->pts; + if (audio_buffer->vpts && (bitrate > 0)) { + pts_offset = (bytes_in_buffer_at_pts * 8 * 90) / (bitrate / 1000); + lprintf("pts: %"PRId64", offset: %d pts, %d bytes\n", buf->pts, pts_offset, bytes_in_buffer_at_pts); + if (audio_buffer->vpts < pts_offset) + pts_offset = audio_buffer->vpts; + audio_buffer->vpts -= pts_offset; + } - lprintf ("audio_out->put_buffer, samples=%d, pts=%"PRId64"\n", audio_buffer->num_frames, audio_buffer->vpts); this->xstream->audio_out->put_buffer (this->xstream->audio_out, audio_buffer, this->xstream); this->pts = buf->pts; @@ -351,7 +389,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre mad_decoder_t *this ; - this = (mad_decoder_t *) xine_xmalloc (sizeof (mad_decoder_t)); + this = (mad_decoder_t *) calloc(1, sizeof(mad_decoder_t)); this->audio_decoder.decode_data = mad_decode_data; this->audio_decoder.reset = mad_reset; @@ -395,7 +433,7 @@ static void *init_plugin (xine_t *xine, void *data) { mad_class_t *this; - this = (mad_class_t *) xine_xmalloc (sizeof (mad_class_t)); + this = (mad_class_t *) calloc(1, sizeof(mad_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; @@ -411,7 +449,7 @@ static uint32_t audio_types[] = { static const decoder_info_t dec_info_audio = { audio_types, /* supported types */ - 7 /* priority */ + 8 /* priority */ }; const plugin_info_t xine_plugin_info[] EXPORTED = { diff --git a/src/libmpeg2/Makefile.am b/src/libmpeg2/Makefile.am index 9895aa5d7..849e56363 100644 --- a/src/libmpeg2/Makefile.am +++ b/src/libmpeg2/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common xineplug_LTLIBRARIES = xineplug_decode_mpeg2.la @@ -22,7 +23,7 @@ xineplug_decode_mpeg2_la_SOURCES = \ xine_mpeg2_decoder.c \ libmpeg2_accel.c -xineplug_decode_mpeg2_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) -lm +xineplug_decode_mpeg2_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(LTLIBINTL) -lm xineplug_decode_mpeg2_la_CFLAGS = $(VISIBILITY_FLAG) $(LIBMPEG2_CFLAGS) xineplug_decode_mpeg2_la_LDFLAGS = $(xineplug_ldflags) diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c index 58f34ccbc..c66b18691 100644 --- a/src/libmpeg2/decode.c +++ b/src/libmpeg2/decode.c @@ -461,9 +461,10 @@ static inline int parse_chunk (mpeg2dec_t * mpeg2dec, int code, break; case 0xb7: /* sequence end code */ -#ifdef LOG_PAN_SCAN - printf ("libmpeg2: sequence end code not handled\n"); -#endif + mpeg2_flush(mpeg2dec); + mpeg2dec->is_sequence_needed = 1; + break; + case 0xb8: /* group of pictures start code */ if (mpeg2_header_group_of_pictures (picture, buffer)) { printf ("libmpeg2: bad group of pictures\n"); diff --git a/src/libmpeg2/motion_comp.c b/src/libmpeg2/motion_comp.c index 8779c1296..f8faa3ee5 100644 --- a/src/libmpeg2/motion_comp.c +++ b/src/libmpeg2/motion_comp.c @@ -68,7 +68,7 @@ void mpeg2_mc_init (uint32_t mm_accel) mpeg2_mc = mpeg2_mc_altivec; } else #endif -#ifdef ARCH_SPARC +#if defined(ARCH_SPARC) && defined(ENABLE_VIS) if (mm_accel & MM_ACCEL_SPARC_VIS) { #ifdef LOG fprintf (stderr, "Using VIS for motion compensation\n"); diff --git a/src/libmpeg2/mpeg2.h b/src/libmpeg2/mpeg2.h index 253f300a2..ae69688f5 100644 --- a/src/libmpeg2/mpeg2.h +++ b/src/libmpeg2/mpeg2.h @@ -31,7 +31,8 @@ typedef struct mpeg2dec_s { uint32_t frame_format; /* this is where we keep the state of the decoder */ - struct picture_s * picture, *picture_base; + struct picture_s * picture; + void *picture_base; uint32_t shift; int new_sequence; @@ -45,7 +46,8 @@ typedef struct mpeg2dec_s { /* which is 224K for MP@ML streams. */ /* (we make no pretenses of decoding anything more than that) */ /* allocated in init - gcc has problems allocating such big structures */ - uint8_t * chunk_buffer, *chunk_base; + uint8_t * chunk_buffer; + void *chunk_base; /* pointer to current position in chunk_buffer */ uint8_t * chunk_ptr; /* last start code ? */ diff --git a/src/libmpeg2/slice_xvmc_vld.c b/src/libmpeg2/slice_xvmc_vld.c index 7e370a519..cd4eca0a2 100644 --- a/src/libmpeg2/slice_xvmc_vld.c +++ b/src/libmpeg2/slice_xvmc_vld.c @@ -17,6 +17,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "video_out.h" #include "mpeg2.h" diff --git a/src/libmpeg2/xine_mpeg2_decoder.c b/src/libmpeg2/xine_mpeg2_decoder.c index 4c4cc8654..b136ee861 100644 --- a/src/libmpeg2/xine_mpeg2_decoder.c +++ b/src/libmpeg2/xine_mpeg2_decoder.c @@ -20,6 +20,10 @@ * stuff needed to turn libmpeg2 into a xine decoder plugin */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <string.h> @@ -117,7 +121,7 @@ static void mpeg2dec_dispose (video_decoder_t *this_gen) { static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, xine_stream_t *stream) { mpeg2dec_decoder_t *this ; - this = (mpeg2dec_decoder_t *) xine_xmalloc (sizeof (mpeg2dec_decoder_t)); + this = (mpeg2dec_decoder_t *) calloc(1, sizeof(mpeg2dec_decoder_t)); this->video_decoder.decode_data = mpeg2dec_decode_data; this->video_decoder.flush = mpeg2dec_flush; @@ -155,7 +159,7 @@ static void *init_plugin (xine_t *xine, void *data) { mpeg2_class_t *this; - this = (mpeg2_class_t *) xine_xmalloc (sizeof (mpeg2_class_t)); + this = (mpeg2_class_t *) calloc(1, sizeof(mpeg2_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libmpeg2new/Makefile.am b/src/libmpeg2new/Makefile.am index 49959da86..8b05a5444 100644 --- a/src/libmpeg2new/Makefile.am +++ b/src/libmpeg2new/Makefile.am @@ -1,13 +1,18 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common -SUBDIRS = libmpeg2 +SUBDIRS = include libmpeg2 -xineplug_LTLIBRARIES = xineplug_decode_mpeg2.la +if ENABLE_MPEG2NEW +mpeg2new_module = xineplug_decode_mpeg2new.la +endif -xineplug_decode_mpeg2_la_SOURCES = \ - xine_mpeg2_decoder.c +xineplug_LTLIBRARIES = $(mpeg2new_module) -xineplug_decode_mpeg2_la_CFLAGS = $(VISIBILITY_FLAG) $(LIBMPEG2_CFLAGS) -xineplug_decode_mpeg2_la_LIBADD = $(XINE_LIB) ./libmpeg2/libmpeg2.la -xineplug_decode_mpeg2_la_LDFLAGS = $(xineplug_ldflags) +xineplug_decode_mpeg2new_la_SOURCES = \ + xine_mpeg2new_decoder.c + +xineplug_decode_mpeg2new_la_CFLAGS = $(VISIBILITY_FLAG) $(LIBMPEG2_CFLAGS) +xineplug_decode_mpeg2new_la_LIBADD = $(XINE_LIB) libmpeg2/libmpeg2.la +xineplug_decode_mpeg2new_la_LDFLAGS = $(xineplug_ldflags) diff --git a/src/libmpeg2new/include/Makefile.am b/src/libmpeg2new/include/Makefile.am index 302d01cb1..91d5575ee 100644 --- a/src/libmpeg2new/include/Makefile.am +++ b/src/libmpeg2new/include/Makefile.am @@ -1,3 +1,4 @@ -pkginclude_HEADERS = mpeg2.h mpeg2convert.h +include $(top_builddir)/misc/Makefile.plugins +include $(top_srcdir)/misc/Makefile.common -EXTRA_DIST = video_out.h mmx.h alpha_asm.h vis.h attributes.h tendra.h +EXTRA_DIST = video_out.h mmx.h alpha_asm.h vis.h attributes.h tendra.h mpeg2.h mpeg2convert.h diff --git a/src/libmpeg2new/include/attributes.h b/src/libmpeg2new/include/attributes.h index eefbc0dd1..92db86e7e 100644 --- a/src/libmpeg2new/include/attributes.h +++ b/src/libmpeg2new/include/attributes.h @@ -22,11 +22,7 @@ */ /* use gcc attribs to align critical data structures */ -#ifdef ATTRIBUTE_ALIGNED_MAX -#define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align))) -#else -#define ATTR_ALIGN(align) -#endif +#include "../../xine-utils/attributes.h" #ifdef HAVE_BUILTIN_EXPECT #define likely(x) __builtin_expect ((x) != 0, 1) diff --git a/src/libmpeg2new/libmpeg2/Makefile.am b/src/libmpeg2new/libmpeg2/Makefile.am index f99894f12..0bfeda1ce 100644 --- a/src/libmpeg2new/libmpeg2/Makefile.am +++ b/src/libmpeg2new/libmpeg2/Makefile.am @@ -1,13 +1,20 @@ include $(top_srcdir)/misc/Makefile.common -noinst_LTLIBRARIES = libmpeg2.la libmpeg2arch.la +if ENABLE_MPEG2NEW +mpeg2new_libs = libmpeg2.la libmpeg2arch.la +endif + +noinst_LTLIBRARIES = $(mpeg2new_libs) libmpeg2_la_SOURCES = alloc.c header.c decode.c slice.c motion_comp.c idct.c libmpeg2_la_LIBADD = libmpeg2arch.la +AM_CPPFLAGS = -I$(srcdir)/../include + libmpeg2arch_la_SOURCES = motion_comp_mmx.c idct_mmx.c \ motion_comp_altivec.c idct_altivec.c \ motion_comp_alpha.c idct_alpha.c \ motion_comp_vis.c \ cpu_accel.c cpu_state.c +EXTRA_DIST = mpeg2_internal.h vlc.h diff --git a/src/libmpeg2new/libmpeg2/motion_comp_alpha.c b/src/libmpeg2new/libmpeg2/motion_comp_alpha.c index 05cd55084..73f6625d2 100644 --- a/src/libmpeg2new/libmpeg2/motion_comp_alpha.c +++ b/src/libmpeg2new/libmpeg2/motion_comp_alpha.c @@ -26,10 +26,10 @@ #include <inttypes.h> -#include "mpeg2.h" -#include "attributes.h" +#include "../include/mpeg2.h" +#include "../include/attributes.h" #include "mpeg2_internal.h" -#include "alpha_asm.h" +#include "../include/alpha_asm.h" static inline uint64_t avg2 (uint64_t a, uint64_t b) { diff --git a/src/libmpeg2new/libmpeg2/motion_comp_altivec.c b/src/libmpeg2new/libmpeg2/motion_comp_altivec.c index 4356aa6e7..cc1b72f56 100644 --- a/src/libmpeg2new/libmpeg2/motion_comp_altivec.c +++ b/src/libmpeg2new/libmpeg2/motion_comp_altivec.c @@ -30,8 +30,8 @@ #endif #include <inttypes.h> -#include "mpeg2.h" -#include "attributes.h" +#include "../include/mpeg2.h" +#include "../include/attributes.h" #include "mpeg2_internal.h" typedef vector signed char vector_s8_t; diff --git a/src/libmpeg2new/libmpeg2/motion_comp_vis.c b/src/libmpeg2new/libmpeg2/motion_comp_vis.c index 54c0f7e75..e4b61aaa7 100644 --- a/src/libmpeg2new/libmpeg2/motion_comp_vis.c +++ b/src/libmpeg2new/libmpeg2/motion_comp_vis.c @@ -22,14 +22,14 @@ #include "config.h" -#ifdef ARCH_SPARC +#if defined(ARCH_SPARC) && defined(ENABLE_VIS) #include <inttypes.h> -#include "mpeg2.h" -#include "attributes.h" +#include "../include/mpeg2.h" +#include "../include/attributes.h" #include "mpeg2_internal.h" -#include "vis.h" +#include "../include/vis.h" /* The trick used in some of this file is the formula from the MMX * motion comp code, which is: @@ -2058,4 +2058,4 @@ static void MC_avg_xy_8_vis (uint8_t * dest, const uint8_t * _ref, MPEG2_MC_EXTERN(vis); -#endif /* !(ARCH_SPARC) */ +#endif /* defined(ARCH_SPARC) && defined(ENABLE_VIS) */ diff --git a/src/libmpeg2new/xine_mpeg2new_decoder.c b/src/libmpeg2new/xine_mpeg2new_decoder.c index 7ceac9178..8c16c441b 100644 --- a/src/libmpeg2new/xine_mpeg2new_decoder.c +++ b/src/libmpeg2new/xine_mpeg2new_decoder.c @@ -20,6 +20,10 @@ * stuff needed to turn libmpeg2 into a xine decoder plugin */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <string.h> @@ -35,13 +39,14 @@ #include "video_out.h" #include "buffer.h" - - +/* #define LOG #define LOG_FRAME_ALLOC_FREE #define LOG_ENTRY #define LOG_FRAME_COUNTER +*/ +#define _x_abort() do {} while (0) typedef struct { video_decoder_class_t decoder_class; @@ -66,7 +71,9 @@ typedef struct mpeg2_video_decoder_s { } mpeg2_video_decoder_t; - +#ifndef LOG_FRAME_ALLOC_FREE +inline static void mpeg2_video_print_bad_state(img_state_t * img_state) {} +#else static void mpeg2_video_print_bad_state(img_state_t * img_state) { int32_t n,m; m=0; @@ -79,6 +86,7 @@ static void mpeg2_video_print_bad_state(img_state_t * img_state) { if (m > 3) _x_abort(); if (m == 0) printf("NO FRAMES\n"); } +#endif static void mpeg2_video_free_all(img_state_t * img_state) { int32_t n,m; @@ -153,7 +161,7 @@ static void mpeg2_video_decode_data (video_decoder_t *this_gen, buf_element_t *b _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_WIDTH, info->sequence->picture_width); _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HEIGHT, info->sequence->picture_height); _x_stream_info_set(this->stream, XINE_STREAM_INFO_FRAME_DURATION, info->sequence->frame_period / 300); - if (this->force_aspect) info->sequence->pixel_width = this->force_aspect; + if (this->force_aspect) ((mpeg2_sequence_t *)info->sequence)->pixel_width = this->force_aspect; /* ugly... */ switch (info->sequence->pixel_width) { case 3: this->ratio = 16.0 / 9.0; @@ -449,7 +457,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, xine_stre mpeg2_video_decoder_t *this ; int32_t n; - this = (mpeg2_video_decoder_t *) xine_xmalloc (sizeof (mpeg2_video_decoder_t)); + this = (mpeg2_video_decoder_t *) calloc(1, sizeof(mpeg2_video_decoder_t)); this->video_decoder.decode_data = mpeg2_video_decode_data; this->video_decoder.flush = mpeg2_video_flush; @@ -490,7 +498,7 @@ static void *init_plugin (xine_t *xine, void *data) { mpeg2_class_t *this; - this = (mpeg2_class_t *) xine_xmalloc (sizeof (mpeg2_class_t)); + this = (mpeg2_class_t *) calloc(1, sizeof(mpeg2_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; @@ -503,14 +511,14 @@ static void *init_plugin (xine_t *xine, void *data) { * exported plugin catalog entry */ -static uint32_t supported_types[] = { BUF_VIDEO_MPEG, 0 }; +static const uint32_t supported_types[] = { BUF_VIDEO_MPEG, 0 }; -static decoder_info_t dec_info_mpeg2 = { +static const decoder_info_t dec_info_mpeg2 = { supported_types, /* supported types */ 6 /* priority */ }; -plugin_info_t xine_plugin_info[] = { +const plugin_info_t xine_plugin_info[] EXPORTED = { /* type, API, "name", version, special_info, init_function */ { PLUGIN_VIDEO_DECODER, 18, "mpeg2new", XINE_VERSION_CODE, &dec_info_mpeg2, init_plugin }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } diff --git a/src/libmusepack/Makefile.am b/src/libmusepack/Makefile.am index 01875bdad..11344c3c2 100644 --- a/src/libmusepack/Makefile.am +++ b/src/libmusepack/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common SUBDIRS = musepack diff --git a/src/libmusepack/xine_musepack_decoder.c b/src/libmusepack/xine_musepack_decoder.c index 7a2d30a06..1454b32f9 100644 --- a/src/libmusepack/xine_musepack_decoder.c +++ b/src/libmusepack/xine_musepack_decoder.c @@ -24,6 +24,10 @@ * Seeking?? */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -214,7 +218,7 @@ static void mpc_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { this->file_size = buf->decoder_info[0]; /* Initialise the data accumulation buffer */ - this->buf = xine_xmalloc(INIT_BUFSIZE); + this->buf = calloc(1, INIT_BUFSIZE); this->buf_max = INIT_BUFSIZE; this->read = 0; this->size = 0; @@ -396,7 +400,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre mpc_decoder_t *this ; - this = (mpc_decoder_t *) xine_xmalloc (sizeof (mpc_decoder_t)); + this = (mpc_decoder_t *) calloc(1, sizeof(mpc_decoder_t)); /* connect the member functions */ this->audio_decoder.decode_data = mpc_decode_data; @@ -441,7 +445,7 @@ static void *init_plugin (xine_t *xine, void *data) { mpc_class_t *this ; - this = (mpc_class_t *) xine_xmalloc (sizeof (mpc_class_t)); + this = (mpc_class_t *) calloc(1, sizeof(mpc_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libreal/Makefile.am b/src/libreal/Makefile.am index 6e76d6279..90e47a63c 100644 --- a/src/libreal/Makefile.am +++ b/src/libreal/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common if ENABLE_REAL diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index fcd0fac8f..6fda4ddbe 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -77,8 +77,8 @@ void _x_real_codecs_init(xine_t *const xine) { default_real_codecs_path[0] = 0; -#define UL64 0x05 /* /usr/{,local/}lib64 */ -#define UL 0x0A /* /usr/{,local/}lib */ +#define UL64 0x03 /* /usr/{,local/}lib64 */ +#define UL 0x0C /* /usr/{,local/}lib */ #define O 0x10 /* /opt */ #define OL64 0x20 /* /opt/lib64 */ #define OL 0x40 /* /opt/lib */ diff --git a/src/libreal/xine_real_audio_decoder.c b/src/libreal/xine_real_audio_decoder.c index 1b21de2d0..4187477e1 100644 --- a/src/libreal/xine_real_audio_decoder.c +++ b/src/libreal/xine_real_audio_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -22,6 +22,10 @@ * code inspired by work from Florian Schneider for the MPlayer Project */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <string.h> @@ -51,6 +55,8 @@ typedef struct { /* empty so far */ } real_class_t; +typedef void * ra_codec_t; + typedef struct realdec_decoder_s { audio_decoder_t audio_decoder; @@ -60,18 +66,18 @@ typedef struct realdec_decoder_s { void *ra_handle; - unsigned long (*raCloseCodec)(void*); - unsigned long (*raDecode)(void*, char*,unsigned long,char*,unsigned int*,long); - unsigned long (*raFlush)(unsigned long,unsigned long,unsigned long); - unsigned long (*raFreeDecoder)(void*); - void* (*raGetFlavorProperty)(void*,unsigned long,unsigned long,int*); - unsigned long (*raInitDecoder)(void*, void*); - unsigned long (*raOpenCodec2)(void*); - unsigned long (*raSetFlavor)(void*,unsigned long); - void (*raSetDLLAccessPath)(char*); - void (*raSetPwd)(char*,char*); + uint32_t (*raCloseCodec)(ra_codec_t); + uint32_t (*raDecode)(ra_codec_t, char *, uint32_t, char *, uint32_t *, uint32_t); + uint32_t (*raFlush)(ra_codec_t, char *, uint32_t *); + uint32_t (*raFreeDecoder)(ra_codec_t); + void * (*raGetFlavorProperty)(ra_codec_t, uint16_t, uint16_t, uint16_t *); + uint32_t (*raInitDecoder)(ra_codec_t, void *); + uint32_t (*raOpenCodec2)(ra_codec_t *, const char *); + uint32_t (*raSetFlavor)(ra_codec_t, uint16_t); + void (*raSetDLLAccessPath)(char *); + void (*raSetPwd)(ra_codec_t, char *); - void *context; + ra_codec_t context; int sps, w, h; int block_align; @@ -92,14 +98,14 @@ typedef struct realdec_decoder_s { } realdec_decoder_t; typedef struct { - int samplerate; - short bits; - short channels; - int unk1; - int subpacket_size; - int coded_frame_size; - int codec_data_length; - void *extras; + uint32_t samplerate; + uint16_t bits; + uint16_t channels; + uint16_t quality; + uint32_t subpacket_size; + uint32_t coded_frame_size; + uint32_t codec_data_length; + void *extras; } ra_init_t; static int load_syms_linux (realdec_decoder_t *this, const char *const codec_name, const char *const codec_alternate) { @@ -216,13 +222,14 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Cook"); if (!load_syms_linux (this, "cook.so", "cook.so.6.0")) return 0; + this->block_align = subpacket_size; break; case BUF_AUDIO_ATRK: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Atrac"); if (!load_syms_linux (this, "atrc.so", "atrc.so.6.0")) return 0; - this->block_align = 384; + this->block_align = subpacket_size; break; case BUF_AUDIO_14_4: @@ -254,7 +261,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { * init codec */ - result = this->raOpenCodec2 (&this->context); + result = this->raOpenCodec2 (&this->context, NULL); if (result) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "libareal: error in raOpenCodec2: %d\n", result); return 0; @@ -266,7 +273,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { init_data.samplerate = samples_per_sec; init_data.bits = bits_per_sample; init_data.channels = num_channels; - init_data.unk1 = 100; /* ??? */ + init_data.quality = 100; /* ??? */ init_data.subpacket_size = subpacket_size; /* subpacket size */ init_data.coded_frame_size = coded_frame_size; /* coded frame size */ init_data.codec_data_length = data_len; /* codec data length */ @@ -307,14 +314,14 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { if (this->sps) { this->frame_size = this->w/this->sps*this->h*this->sps; - this->frame_buffer = xine_xmalloc (this->frame_size); - this->frame_reordered = xine_xmalloc (this->frame_size); + this->frame_buffer = calloc (1, this->frame_size); + this->frame_reordered = calloc (1, this->frame_size); this->frame_num_bytes = 0; } else { this->frame_size = this->w*this->h; - this->frame_buffer = xine_xmalloc (this->frame_size); + this->frame_buffer = calloc (this->w, this->h); this->frame_reordered = this->frame_buffer; this->frame_num_bytes = 0; @@ -350,13 +357,6 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { return 1; } -static unsigned char sipr_swaps[38][2]={ - {0,63},{1,22},{2,44},{3,90},{5,81},{7,31},{8,86},{9,58},{10,36},{12,68}, - {13,39},{14,73},{15,53},{16,69},{17,57},{19,88},{20,34},{21,71},{24,46}, - {25,94},{26,54},{28,75},{29,50},{32,70},{33,92},{35,74},{38,85},{40,56}, - {42,87},{43,65},{45,59},{48,79},{49,93},{51,89},{55,95},{61,76},{67,83}, - {77,80} }; - static void realdec_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { realdec_decoder_t *this = (realdec_decoder_t *) this_gen; @@ -383,116 +383,32 @@ static void realdec_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->pts = buf->pts; size = buf->size; - while (size) { + int need; - int needed; - - needed = this->frame_size - this->frame_num_bytes; - - if (needed>size) { - - memcpy (this->frame_buffer+this->frame_num_bytes, buf->content, size); + need = this->frame_size - this->frame_num_bytes; + if (size < need) { + memcpy (this->frame_buffer + this->frame_num_bytes, + buf->content + buf->size - size, size); this->frame_num_bytes += size; - - lprintf ("buffering %d/%d bytes\n", this->frame_num_bytes, this->frame_size); - size = 0; - } else { - - int result; - int len =-1; - int n; - int sps = this->sps; - int w = this->w; - int h = this->h; audio_buffer_t *audio_buffer; + int n, len; + int result; - lprintf ("buffering %d bytes\n", needed); - - memcpy (this->frame_buffer+this->frame_num_bytes, buf->content, needed); - - size -= needed; + memcpy (this->frame_buffer + this->frame_num_bytes, + buf->content + buf->size - size, need); + size -= need; this->frame_num_bytes = 0; - lprintf ("frame completed. reordering...\n"); - lprintf ("bs=%d sps=%d w=%d h=%d \n",/*sh->wf->nBlockAlign*/-1,sps,w,h); - - if (!sps) { - - int j,n; - int bs=h*w*2/96; /* nibbles per subpacket */ - unsigned char *p=this->frame_buffer; - - /* 'sipr' way */ - /* demux_read_data(sh->ds, p, h*w); */ - for (n=0;n<38;n++){ - int i=bs*sipr_swaps[n][0]; - int o=bs*sipr_swaps[n][1]; - /* swap nibbles of block 'i' with 'o' TODO: optimize */ - for (j=0;j<bs;j++) { - int x=(i&1) ? (p[(i>>1)]>>4) : (p[(i>>1)]&15); - int y=(o&1) ? (p[(o>>1)]>>4) : (p[(o>>1)]&15); - if (o&1) - p[(o>>1)]=(p[(o>>1)]&0x0F)|(x<<4); - else - p[(o>>1)]=(p[(o>>1)]&0xF0)|x; - - if (i&1) - p[(i>>1)]=(p[(i>>1)]&0x0F)|(y<<4); - else - p[(i>>1)]=(p[(i>>1)]&0xF0)|y; - - ++i; - ++o; - } - } - /* - sh->a_in_buffer_size= - sh->a_in_buffer_len=w*h; - */ - - } else { - int x, y; - uint8_t *s; - - /* 'cook' way */ - - w /= sps; s = this->frame_buffer; - - for (y=0; y<h; y++) - - for (x=0; x<w; x++) { - - lprintf ("x=%d, y=%d, off %d\n", - x, y, sps*(h*x+((h+1)/2)*(y&1)+(y>>1))); - - memcpy (this->frame_reordered+sps*(h*x+((h+1)/2)*(y&1)+(y>>1)), - s, sps); - s+=sps; - - /* demux_read_data(sh->ds, sh->a_in_buffer+sps*(h*x+((h+1)/2)*(y&1)+(y>>1)), - sps); */ - - } - /* - sh->a_in_buffer_size= - sh->a_in_buffer_len=w*h*sps; - */ - } - -#ifdef LOG - xine_hexdump (this->frame_reordered, buf->size); -#endif - n = 0; - while (n<this->frame_size) { + while (n < this->frame_size) { audio_buffer = this->stream->audio_out->get_buffer (this->stream->audio_out); result = this->raDecode (this->context, - this->frame_reordered+n, + this->frame_buffer + n, this->block_align, (char *) audio_buffer->mem, &len, -1); @@ -506,7 +422,7 @@ static void realdec_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->stream->audio_out->put_buffer (this->stream->audio_out, audio_buffer, this->stream); - n+=this->block_align; + n += this->block_align; } } } @@ -565,7 +481,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, real_class_t *cls = (real_class_t *) class_gen; realdec_decoder_t *this ; - this = (realdec_decoder_t *) xine_xmalloc (sizeof (realdec_decoder_t)); + this = (realdec_decoder_t *) calloc(1, sizeof(realdec_decoder_t)); this->audio_decoder.decode_data = realdec_decode_data; this->audio_decoder.reset = realdec_reset; @@ -598,9 +514,8 @@ static void dispose_class (audio_decoder_class_t *this) { void *init_realadec (xine_t *xine, void *data) { real_class_t *this; - config_values_t *config = xine->config; - this = (real_class_t *) xine_xmalloc (sizeof (real_class_t)); + this = (real_class_t *) calloc(1, sizeof(real_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; @@ -622,5 +537,5 @@ static uint32_t audio_types[] = { const decoder_info_t dec_info_realaudio = { audio_types, /* supported types */ - 7 /* priority */ + 6 /* priority */ }; diff --git a/src/libreal/xine_real_video_decoder.c b/src/libreal/xine_real_video_decoder.c index d68c7390e..314edc489 100644 --- a/src/libreal/xine_real_video_decoder.c +++ b/src/libreal/xine_real_video_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -22,6 +22,10 @@ * code inspired by work from Florian Schneider for the MPlayer Project */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <string.h> @@ -63,9 +67,9 @@ typedef struct realdec_decoder_s { uint32_t (*rvyuv_custom_message)(void*, void*); uint32_t (*rvyuv_free)(void*); - uint32_t (*rvyuv_hive_message)(uint32_t, uint32_t); + uint32_t (*rvyuv_hive_message)(uint32_t, void*); uint32_t (*rvyuv_init)(void*, void*); /* initdata,context */ - uint32_t (*rvyuv_transform)(char*, char*, void*, uint32_t*,void*); + uint32_t (*rvyuv_transform)(char*, char*, void*, void*, void*); void *context; @@ -113,13 +117,21 @@ typedef struct cmsg_data_s { typedef struct transform_in_s { uint32_t len; - uint32_t unknown1; - uint32_t chunks; - uint32_t* extra; - uint32_t unknown2; + uint32_t interpolate; + uint32_t nsegments; + void *segments; + uint32_t flags; uint32_t timestamp; } transform_in_t; +typedef struct { + uint32_t frames; + uint32_t notes; + uint32_t timestamp; + uint32_t width; + uint32_t height; +} transform_out_t; + /* * real codec loader */ @@ -169,7 +181,6 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { int result; rv_init_t init_data = {11, 0, 0, 0, 0, 0, 1, 0}; /* rv30 */ - switch (buf->type) { case BUF_VIDEO_RV20: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 2.0"); @@ -258,7 +269,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { #ifdef LOG printf ("libreal: CustomMessage cmsg_data:\n"); - xine_hexdump ((uint8_t *) cmsg_data, sizeof (cmsg_data)); + xine_hexdump ((uint8_t *) &cmsg_data, sizeof (cmsg_data)); printf ("libreal: cmsg24:\n"); xine_hexdump ((uint8_t *) cmsg24, (buf->size - 34 + 2) * sizeof(uint32_t)); #endif @@ -271,7 +282,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { this->frame_size = this->width * this->height; this->frame_buffer = xine_xmalloc (this->width * this->height * 3 / 2); - this->chunk_buffer = xine_xmalloc (BUF_SIZE); + this->chunk_buffer = calloc(1, BUF_SIZE); this->chunk_buffer_max = BUF_SIZE; return 1; @@ -342,7 +353,7 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) int result; vo_frame_t *img; - uint32_t transform_out[5]; + transform_out_t transform_out; transform_in_t transform_in = { this->chunk_buffer_size, /* length of the packet (sub-packets appended) */ @@ -369,7 +380,7 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) xine_hexdump (this->chunk_buffer, this->chunk_buffer_size); printf ("libreal: transform_in:\n"); - xine_hexdump ((uint8_t *) transform_in, 6 * 4); + xine_hexdump ((uint8_t *) &transform_in, sizeof(rv_xform_in_t)); printf ("libreal: chunk_table:\n"); xine_hexdump ((uint8_t *) buf->decoder_info_ptr[2], @@ -379,21 +390,21 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) result = this->rvyuv_transform (this->chunk_buffer, this->frame_buffer, &transform_in, - transform_out, + &transform_out, this->context); lprintf ("transform result: %08x\n", result); lprintf ("transform_out:\n"); - #ifdef LOG - xine_hexdump ((uint8_t *) transform_out, 5 * 4); - #endif +#ifdef LOG + xine_hexdump ((uint8_t *) &transform_out, 5 * 4); +#endif /* Sometimes the stream contains video of a different size * to that specified in the realmedia header */ - if(transform_out[0] && ((transform_out[3] != this->width) || - (transform_out[4] != this->height))) { - this->width = transform_out[3]; - this->height = transform_out[4]; + if(transform_out.frames && ((transform_out.width != this->width) || + (transform_out.height != this->height))) { + this->width = transform_out.width; + this->height = transform_out.height; this->frame_size = this->width * this->height; @@ -489,7 +500,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, real_class_t *cls = (real_class_t *) class_gen; realdec_decoder_t *this ; - this = (realdec_decoder_t *) xine_xmalloc (sizeof (realdec_decoder_t)); + this = (realdec_decoder_t *) calloc(1, sizeof(realdec_decoder_t)); this->video_decoder.decode_data = realdec_decode_data; this->video_decoder.flush = realdec_flush; @@ -526,9 +537,8 @@ static void dispose_class (video_decoder_class_t *this) { void *init_realvdec (xine_t *xine, void *data) { real_class_t *this; - config_values_t *config = xine->config; - this = (real_class_t *) xine_xmalloc (sizeof (real_class_t)); + this = (real_class_t *) calloc(1, sizeof(real_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; @@ -544,8 +554,7 @@ void *init_realvdec (xine_t *xine, void *data) { * exported plugin catalog entry */ -static uint32_t supported_types[] = { BUF_VIDEO_RV20, - BUF_VIDEO_RV30, +static uint32_t supported_types[] = { BUF_VIDEO_RV30, BUF_VIDEO_RV40, 0 }; diff --git a/src/libspucc/Makefile.am b/src/libspucc/Makefile.am index a8af8632e..1e170cdd5 100644 --- a/src/libspucc/Makefile.am +++ b/src/libspucc/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common xineplug_LTLIBRARIES = xineplug_decode_spucc.la diff --git a/src/libspucc/cc_decoder.c b/src/libspucc/cc_decoder.c index 8d666e847..98c7319b6 100644 --- a/src/libspucc/cc_decoder.c +++ b/src/libspucc/cc_decoder.c @@ -27,6 +27,10 @@ * available at http://sourceforge.net/projects/ccdecoder/. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -216,8 +220,6 @@ static const uint8_t *const cc_alpha_palettes[NUM_CC_PALETTES] = { #define TRANSP_SPACE 0x19 /* code for transparent space, essentially arbitrary */ -#define MAX(a, b) ((a) > (b)? (a) : (b)) - /* mapping from PAC row code to actual CC row */ static const int rowdata[] = {10, -1, 0, 1, 2, 3, 11, 12, 13, 14, 4, 5, 6, 7, 8, 9}; @@ -922,7 +924,7 @@ cc_renderer_t *cc_renderer_open(osd_renderer_t *osd_renderer, metronom_t *metronom, cc_state_t *cc_state, int video_width, int video_height) { - cc_renderer_t *this = (cc_renderer_t *) xine_xmalloc(sizeof (cc_renderer_t)); + cc_renderer_t *this = calloc(1, sizeof (cc_renderer_t)); this->osd_renderer = osd_renderer; this->metronom = metronom; @@ -1439,7 +1441,7 @@ void decode_cc(cc_decoder_t *this, uint8_t *buffer, uint32_t buf_len, cc_decoder_t *cc_decoder_open(cc_state_t *cc_state) { - cc_decoder_t *this = (cc_decoder_t *) xine_xmalloc(sizeof (cc_decoder_t)); + cc_decoder_t *this = calloc(1, sizeof (cc_decoder_t)); /* configfile stuff */ this->cc_state = cc_state; diff --git a/src/libspucc/cc_decoder.h b/src/libspucc/cc_decoder.h index 8698189a6..47703b6d1 100644 --- a/src/libspucc/cc_decoder.h +++ b/src/libspucc/cc_decoder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * Copyright (C) Christian Vogler * cvogler@gradient.cis.upenn.edu - December 2001 @@ -31,11 +31,7 @@ typedef struct cc_decoder_s cc_decoder_t; typedef struct cc_renderer_s cc_renderer_t; #define NUM_CC_PALETTES 2 -static const char *cc_schemes[NUM_CC_PALETTES + 1] = { - "White/Gray/Translucent", - "White/Black/Solid", - NULL -}; +extern const char *cc_schemes[]; #define CC_FONT_MAX 256 diff --git a/src/libspucc/xine_cc_decoder.c b/src/libspucc/xine_cc_decoder.c index 9cdb4c4ea..12a5e7132 100644 --- a/src/libspucc/xine_cc_decoder.c +++ b/src/libspucc/xine_cc_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -20,6 +20,10 @@ * closed caption spu decoder. receive data by events. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -33,6 +37,12 @@ #define LOG_DEBUG 1 */ +const char *cc_schemes[NUM_CC_PALETTES + 1] = { + "White/Gray/Translucent", + "White/Black/Solid", + NULL +}; + typedef struct spucc_decoder_s { spu_decoder_t spu_decoder; @@ -193,7 +203,7 @@ static void spucc_register_cfg_vars(spucc_class_t *this, cc_vars->cc_scheme = xine_cfg->register_enum(xine_cfg, "subtitles.closedcaption.scheme", 0, - cc_schemes, + (char **)cc_schemes, _("closed-captioning foreground/background scheme"), _("Choose your favourite rendering of the closed " "captions."), @@ -301,7 +311,7 @@ static spu_decoder_t *spudec_open_plugin (spu_decoder_class_t *class, xine_strea spucc_decoder_t *this ; - this = (spucc_decoder_t *) xine_xmalloc (sizeof (spucc_decoder_t)); + this = (spucc_decoder_t *) calloc(1, sizeof(spucc_decoder_t)); this->spu_decoder.decode_data = spudec_decode_data; this->spu_decoder.reset = spudec_reset; @@ -338,7 +348,7 @@ static void *init_spu_decoder_plugin (xine_t *xine, void *data) { spucc_class_t *this ; - this = (spucc_class_t *) xine_xmalloc (sizeof (spucc_class_t)); + this = (spucc_class_t *) calloc(1, sizeof(spucc_class_t)); this->spu_class.open_plugin = spudec_open_plugin; this->spu_class.get_identifier = spudec_get_identifier; diff --git a/src/libspucmml/Makefile.am b/src/libspucmml/Makefile.am index 81e8d3623..53a980b57 100644 --- a/src/libspucmml/Makefile.am +++ b/src/libspucmml/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common xineplug_LTLIBRARIES = xineplug_decode_spucmml.la diff --git a/src/libspucmml/xine_cmml_decoder.c b/src/libspucmml/xine_cmml_decoder.c index b684d21cb..c3da1b0fd 100644 --- a/src/libspucmml/xine_cmml_decoder.c +++ b/src/libspucmml/xine_cmml_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -88,14 +88,13 @@ static void video_frame_format_change_callback (void *user_data, const xine_even static void update_font_size (spucmml_decoder_t *this) { - static int sizes[SUBTITLE_SIZE_NUM][4] = { + static const int sizes[SUBTITLE_SIZE_NUM][4] = { { 16, 16, 16, 20 }, /* SUBTITLE_SIZE_SMALL */ { 16, 16, 20, 24 }, /* SUBTITLE_SIZE_NORMAL */ { 16, 20, 24, 32 }, /* SUBTITLE_SIZE_LARGE */ }; - int *vec = sizes[this->subtitle_size]; - int y; + const int *const vec = sizes[this->subtitle_size]; if( this->cached_width >= 512 ) this->font_size = vec[3]; @@ -108,7 +107,7 @@ static void update_font_size (spucmml_decoder_t *this) { this->line_height = this->font_size + 10; - y = this->cached_height - (SUB_MAX_TEXT * this->line_height) - 5; + int y = this->cached_height - (SUB_MAX_TEXT * this->line_height) - 5; if(((y - this->vertical_offset) >= 0) && ((y - this->vertical_offset) <= this->cached_height)) y -= this->vertical_offset; @@ -137,83 +136,80 @@ static void update_font_size (spucmml_decoder_t *this) { } static int get_width(spucmml_decoder_t *this, char* text) { - size_t i=0; - int width=0,w,dummy; - char letter[2]={0, 0}; + int width=0; + + while (1) + switch (*text) { + case '\0': + llprintf(LOG_WIDTH, "get_width returning width of %d\n", width); + return width; - while (i<=strlen(text)) { - switch (text[i]) { case '<': - if (!strncmp("<b>", text+i, 3)) { + if (!strncmp("<b>", text, 3)) { /*Do somethink to enable BOLD typeface*/ - i=i+3; + text += 3; break; - } else if (!strncmp("</b>", text+i, 3)) { + } else if (!strncmp("</b>", text, 3)) { /*Do somethink to disable BOLD typeface*/ - i=i+4; + text += 4; break; - } else if (!strncmp("<i>", text+i, 3)) { + } else if (!strncmp("<i>", text, 3)) { /*Do somethink to enable italics typeface*/ - i=i+3; + text += 3; break; - } else if (!strncmp("</i>", text+i, 3)) { + } else if (!strncmp("</i>", text, 3)) { /*Do somethink to disable italics typeface*/ - i=i+4; + text += 4; break; - } else if (!strncmp("<font>", text+i, 3)) { + } else if (!strncmp("<font>", text, 3)) { /*Do somethink to disable typing fixme - no teststreams*/ - i=i+6; + text += 6; break; - } else if (!strncmp("</font>", text+i, 3)) { + } else if (!strncmp("</font>", text, 3)) { /*Do somethink to enable typing fixme - no teststreams*/ - i=i+7; + text += 7; break; } default: - letter[0]=text[i]; - this->stream->osd_renderer->get_text_size(this->osd, letter, &w, &dummy); - width=width+w; - i++; + { + int w, dummy; + const char letter[2] = { *text, '\0' }; + this->stream->osd_renderer->get_text_size(this->osd, letter, &w, &dummy); + width += w; + text++; + } } - } - - llprintf(LOG_WIDTH, "get_width returning width of %d\n", width); - - return width; } static void render_line(spucmml_decoder_t *this, int x, int y, char* text) { - size_t i=0; - int w,dummy; - char letter[2]={0,0}; + while (*text != '\0') { + int w, dummy; + const char letter[2] = { *text, '\0' }; - while (i<=strlen(text)) { - letter[0]=text[i]; this->stream->osd_renderer->render_text(this->osd, x, y, letter, OSD_TEXT1); this->stream->osd_renderer->get_text_size(this->osd, letter, &w, &dummy); - x=x+w; - i++; + x += w; + text++; } } static void draw_subtitle(spucmml_decoder_t *this, int64_t sub_start) { - int line, y; - int font_size; - this->stream->osd_renderer->filled_rect (this->osd, 0, 0, this->cached_width-1, this->line_height * SUB_MAX_TEXT - 1, 0); - y = (SUB_MAX_TEXT - this->lines) * this->line_height; - font_size = this->font_size; + const int y = (SUB_MAX_TEXT - this->lines) * this->line_height; + int font_size = this->font_size; this->stream->osd_renderer->set_encoding(this->osd, this->class->src_encoding); + int line; + for (line=0; line<this->lines; line++) { - int w,x; + int x; while(1) { - w=get_width( this, this->text[line]); + const int w = get_width( this, this->text[line]); x = (this->cached_width - w) / 2; if( w > this->cached_width && font_size > 16 ) { @@ -242,14 +238,13 @@ static void draw_subtitle(spucmml_decoder_t *this, int64_t sub_start) { static void spudec_decode_data (spu_decoder_t *this_gen, buf_element_t *buf) { spucmml_decoder_t *this = (spucmml_decoder_t *) this_gen; - char *str; xml_node_t *packet_xml_root; char * anchor_text = NULL; lprintf("CMML packet seen\n"); - str = (char *) buf->content; + char *str = (char *) buf->content; /* parse the CMML */ @@ -268,36 +263,30 @@ static void spudec_decode_data (spu_decoder_t *this_gen, buf_element_t *buf) { for (title_node = packet_xml_root->child; title_node != NULL; title_node = title_node->next) { - if (strcasecmp (title_node->name, "title") == 0) { + if (title_node->data && + strcasecmp (title_node->name, "title") == 0) { /* found a title node */ - xine_event_t uevent; - char *title; - int title_len; - - title = title_node->data; - - if (title) - { - xine_ui_data_t data; - /* found a non-empty title */ - lprintf ("found title: \"%s\"\n", title); - - /* set xine meta-info */ - _x_meta_info_set(this->stream, XINE_META_INFO_TITLE, strdup(title)); - - /* and push out a new event signifying the title update on the event - * queue */ - title_len = strlen(title) + 1; - memcpy(data.str, title, title_len); - data.str_len = title_len; - - uevent.type = XINE_EVENT_UI_SET_TITLE; - uevent.stream = this->stream; - uevent.data = &data; - uevent.data_length = sizeof(data); - xine_event_send(this->stream, &uevent); - } + xine_ui_data_t data = { + .str_len = strlen(title_node->data) + 1 + }; + xine_event_t uevent = { + .type = XINE_EVENT_UI_SET_TITLE, + .stream = this->stream, + .data = &data, + .data_length = sizeof(data), + }; + strncpy(data.str, title_node->data, sizeof(data.str)-1); + + /* found a non-empty title */ + lprintf ("found title: \"%s\"\n", data.str); + + /* set xine meta-info */ + _x_meta_info_set(this->stream, XINE_META_INFO_TITLE, strdup(data.str)); + + /* and push out a new event signifying the title update on the event + * queue */ + xine_event_send(this->stream, &uevent); } } } else if (strcasecmp(packet_xml_root->name, "clip") == 0) { @@ -446,11 +435,8 @@ static void update_osd_font(void *this_gen, xine_cfg_entry_t *entry) } static spu_decoder_t *spucmml_class_open_plugin (spu_decoder_class_t *class_gen, xine_stream_t *stream) { - spucmml_class_t *class = (spucmml_class_t *)class_gen; - spucmml_decoder_t *this ; - - this = (spucmml_decoder_t *) xine_xmalloc (sizeof (spucmml_decoder_t)); + spucmml_decoder_t *this = (spucmml_decoder_t *) calloc(1, sizeof(spucmml_decoder_t)); this->spu_decoder.decode_data = spudec_decode_data; this->spu_decoder.reset = spudec_reset; @@ -511,10 +497,7 @@ static void update_src_encoding(void *this_gen, xine_cfg_entry_t *entry) } static void *init_spu_decoder_plugin (xine_t *xine, void *data) { - - spucmml_class_t *this ; - - this = (spucmml_class_t *) xine_xmalloc (sizeof (spucmml_class_t)); + spucmml_class_t *this = (spucmml_class_t *) calloc(1, sizeof(spucmml_class_t)); this->class.open_plugin = spucmml_class_open_plugin; this->class.get_identifier = spucmml_class_get_identifier; diff --git a/src/libspudec/Makefile.am b/src/libspudec/Makefile.am index 208d994f5..061bd7731 100644 --- a/src/libspudec/Makefile.am +++ b/src/libspudec/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common xineplug_LTLIBRARIES = xineplug_decode_spu.la @@ -7,7 +8,7 @@ if HAVE_DVDNAV xineplug_decode_spu_la_SOURCES = \ spu.c \ xine_spu_decoder.c -xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(DVDNAV_LIBS) $(PTHREAD_LIBS) +xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(DVDNAV_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL) else @@ -16,7 +17,7 @@ xineplug_decode_spu_la_SOURCES = \ spu.c \ xine_spu_decoder.c AM_CPPFLAGS = -I$(top_srcdir)/src/input/libdvdnav -xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) +xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL) endif diff --git a/src/libspudec/spu.c b/src/libspudec/spu.c index ce3497ef0..e91cafbc1 100644 --- a/src/libspudec/spu.c +++ b/src/libspudec/spu.c @@ -37,6 +37,10 @@ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <errno.h> @@ -209,7 +213,7 @@ void spudec_decode_nav(spudec_decoder_t *this, buf_element_t *buf) { #endif /* append PCI at the end of the list */ while (node->next) node = node->next; - node->next = (pci_node_t *)xine_xmalloc(sizeof(pci_node_t)); + node->next = malloc(sizeof(pci_node_t)); node->next->vpts = this->stream->metronom->got_spu_packet(this->stream->metronom, pci.hli.hl_gi.hli_s_ptm); node->next->next = NULL; xine_fast_memcpy(&node->next->pci, &pci, sizeof(pci_t)); diff --git a/src/libspudec/spu.h b/src/libspudec/spu.h index 8d92146f0..464f77438 100644 --- a/src/libspudec/spu.h +++ b/src/libspudec/spu.h @@ -26,7 +26,7 @@ #define __SPU_H__ #ifdef HAVE_CONFIG_H -#include <config.h> +#include "config.h" #endif #include <inttypes.h> diff --git a/src/libspudec/xine_spu_decoder.c b/src/libspudec/xine_spu_decoder.c index 0ab91d906..b6c06ca05 100644 --- a/src/libspudec/xine_spu_decoder.c +++ b/src/libspudec/xine_spu_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2008 the xine project * * Copyright (C) James Courtier-Dutton James@superbug.demon.co.uk - July 2001 * @@ -22,6 +22,10 @@ * stuff needed to turn libspu into a xine decoder plugin */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <unistd.h> #include <string.h> @@ -68,11 +72,8 @@ static const clut_t default_clut[] = { }; static void spudec_decode_data (spu_decoder_t *this_gen, buf_element_t *buf) { - uint32_t stream_id; - spudec_seq_t *cur_seq; spudec_decoder_t *this = (spudec_decoder_t *) this_gen; - stream_id = buf->type & 0x1f ; - cur_seq = &this->spudec_stream_state[stream_id].ra_seq; + const uint8_t stream_id = buf->type & 0x1f ; #ifdef LOG_DEBUG printf("libspudec:got buffer type = %x\n", buf->type); @@ -177,7 +178,6 @@ static void spudec_discontinuity (spu_decoder_t *this_gen) { static void spudec_dispose (spu_decoder_t *this_gen) { spudec_decoder_t *this = (spudec_decoder_t *) this_gen; - int i; video_overlay_manager_t *ovl_manager = this->stream->video_out->get_overlay_manager (this->stream->video_out); if( this->menu_handle >= 0 ) @@ -185,6 +185,7 @@ static void spudec_dispose (spu_decoder_t *this_gen) { this->menu_handle); this->menu_handle = -1; + int i; for (i=0; i < MAX_STREAMS; i++) { if( this->spudec_stream_state[i].overlay_handle >= 0 ) ovl_manager->free_handle(ovl_manager, @@ -225,11 +226,9 @@ static void spudec_set_button (spu_decoder_t *this_gen, int32_t button, int32_t * when video_overlay does menus */ video_overlay_manager_t *ovl_manager; - video_overlay_event_t *overlay_event = NULL; - vo_overlay_t *overlay = NULL; - overlay_event = xine_xmalloc (sizeof(video_overlay_event_t)); + video_overlay_event_t *overlay_event = calloc(1, sizeof(video_overlay_event_t)); + vo_overlay_t *overlay = calloc(1, sizeof(vo_overlay_t)); - overlay = xine_xmalloc (sizeof(vo_overlay_t)); /* FIXME: Watch out for threads. We should really put a lock on this * because events is a different thread than decode_data */ @@ -313,9 +312,8 @@ static void spudec_set_button (spu_decoder_t *this_gen, int32_t button, int32_t static spu_decoder_t *open_plugin (spu_decoder_class_t *class_gen, xine_stream_t *stream) { spudec_decoder_t *this ; - int i; - this = (spudec_decoder_t *) xine_xmalloc (sizeof (spudec_decoder_t)); + this = (spudec_decoder_t *) calloc(1, sizeof (spudec_decoder_t)); this->spu_decoder.decode_data = spudec_decode_data; this->spu_decoder.reset = spudec_reset; @@ -328,7 +326,7 @@ static spu_decoder_t *open_plugin (spu_decoder_class_t *class_gen, xine_stream_t this->menu_handle = -1; this->buttonN = 1; - this->event.object.overlay = xine_xmalloc(sizeof(vo_overlay_t)); + this->event.object.overlay = calloc(1, sizeof(vo_overlay_t)); pthread_mutex_init(&this->nav_pci_lock, NULL); this->pci_cur.pci.hli.hl_gi.hli_ss = 0; @@ -337,6 +335,8 @@ static spu_decoder_t *open_plugin (spu_decoder_class_t *class_gen, xine_stream_t this->ovl_caps = stream->video_out->get_capabilities(stream->video_out); this->output_open = 0; this->last_event_vpts = 0; + + int i; for (i=0; i < MAX_STREAMS; i++) { this->spudec_stream_state[i].ra_seq.complete = 1; this->spudec_stream_state[i].overlay_handle = -1; @@ -376,7 +376,7 @@ static void *init_plugin (xine_t *xine, void *data) { spudec_class_t *this; - this = (spudec_class_t *) xine_xmalloc (sizeof (spudec_class_t)); + this = calloc(1, sizeof (spudec_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libspudvb/Makefile.am b/src/libspudvb/Makefile.am index 310c02f0b..8187346aa 100644 --- a/src/libspudvb/Makefile.am +++ b/src/libspudvb/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common xineplug_LTLIBRARIES = xineplug_decode_spudvb.la diff --git a/src/libspudvb/xine_spudvb_decoder.c b/src/libspudvb/xine_spudvb_decoder.c index 602723fcb..bcb0cbf96 100644 --- a/src/libspudvb/xine_spudvb_decoder.c +++ b/src/libspudvb/xine_spudvb_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 the xine project + * Copyright (C) 2008 the xine project * * This file is part of xine, a free video player. * @@ -28,6 +28,7 @@ #include "pthread.h" #include <errno.h> #include "xine_internal.h" +#include "bswap.h" #include "osd.h" #define MAX_REGIONS 7 @@ -47,6 +48,7 @@ typedef struct { } page_t; typedef struct { + int version_number; int width, height; int empty; int depth; @@ -140,58 +142,50 @@ static void update_region (dvb_spu_decoder_t * this, int region_id, int region_w dvbsub_func_t *dvbsub = this->dvbsub; region_t *reg = &dvbsub->regions[region_id]; - page_t *page = &dvbsub->page; /* reject invalid sizes and set some limits ! */ if ( region_width<=0 || region_height<=0 || region_width>720 || region_height>576 ) { - if ( reg->img ) { - free( reg->img ); - reg->img = NULL; - } + free( reg->img ); + reg->img = NULL; #ifdef LOG printf("SPUDVB: rejected region %d = %dx%d\n", region_id, region_width, region_height ); #endif return; } - if ( reg->width*reg->height<region_width*region_height ) { + if ( (reg->width*reg->height) < (region_width*region_height) ) { #ifdef LOG printf("SPUDVB: update size of region %d = %dx%d\n", region_id, region_width, region_height); #endif - if ( reg->img ) { - free( reg->img ); - reg->img = NULL; - } + free( reg->img ); + reg->img = NULL; } if ( !reg->img ) { - if ( !(reg->img=xine_xmalloc(region_width*region_height)) ) { + if ( !(reg->img=malloc(region_width*region_height)) ) { lprintf( "can't allocate mem for region %d\n", region_id ); return; } - fill_color = 15; fill = 1; } - + if ( fill ) { memset( reg->img, fill_color, region_width*region_height ); reg->empty = 1; #ifdef LOG - printf("SPUDVB : FILL REGION %d\n", region_id); + printf("SPUDVB : FILL REGION %d\n", region_id); #endif } reg->width = region_width; reg->height = region_height; - page->regions[region_id].is_visible = 1; } static void do_plot (dvb_spu_decoder_t * this, int r, int x, int y, unsigned char pixel) { - int i; - dvbsub_func_t *dvbsub = this->dvbsub; + dvbsub_func_t *const dvbsub = this->dvbsub; - i = (y * dvbsub->regions[r].width) + x; + const int i = (y * dvbsub->regions[r].width) + x; /* do some clipping */ if ( i<(dvbsub->regions[r].width*dvbsub->regions[r].height) ) { dvbsub->regions[r].img[i] = pixel; @@ -204,7 +198,7 @@ static void plot (dvb_spu_decoder_t * this, int r, int run_length, unsigned char dvbsub_func_t *dvbsub = this->dvbsub; - int x2 = dvbsub->x + run_length; + const int x2 = dvbsub->x + run_length; while (dvbsub->x < x2) { do_plot (this, r, dvbsub->x, dvbsub->y, pixel); @@ -212,97 +206,90 @@ static void plot (dvb_spu_decoder_t * this, int r, int run_length, unsigned char } } -static unsigned char next_nibble (dvb_spu_decoder_t * this) +static uint8_t next_nibble (dvb_spu_decoder_t * this) { - unsigned char x; dvbsub_func_t *dvbsub = this->dvbsub; - if (dvbsub->nibble_flag == 0) { - x = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; - dvbsub->nibble_flag = 1; - } - else { - x = (dvbsub->buf[dvbsub->i++] & 0x0f); - dvbsub->nibble_flag = 0; - } - return (x); + dvbsub->nibble_flag = !dvbsub->nibble_flag; + + if (dvbsub->nibble_flag) /* Inverted! */ + return (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; + else + return (dvbsub->buf[dvbsub->i++] & 0x0f); } static void decode_4bit_pixel_code_string (dvb_spu_decoder_t * this, int r, int object_id, int ofs, int n) { - int next_bits, switch_1, switch_2, switch_3, run_length, pixel_code; - - dvbsub_func_t *dvbsub = this->dvbsub; - - int bits; - unsigned int data; - int j; + dvbsub_func_t *const dvbsub = this->dvbsub; if (dvbsub->in_scanline == 0) { dvbsub->in_scanline = 1; } dvbsub->nibble_flag = 0; - j = dvbsub->i + n; + const int j = dvbsub->i + n; while (dvbsub->i < j) { - bits = 0; - pixel_code = 0; - next_bits = next_nibble (this); + int bits = 0; + const uint8_t next_bits = next_nibble (this); if (next_bits != 0) { - pixel_code = next_bits; + const uint8_t pixel_code = next_bits; plot (this, r, 1, pixel_code); bits += 4; } else { bits += 4; - data = next_nibble (this); - switch_1 = (data & 0x08) >> 3; + const uint8_t data = next_nibble (this); + const uint8_t switch_1 = (data & 0x08) >> 3; bits++; if (switch_1 == 0) { - run_length = (data & 0x07); + const uint8_t run_length = (data & 0x07); bits += 3; if (run_length != 0) { - plot (this, r, run_length + 2, pixel_code); + plot (this, r, run_length + 2, 0); } else { break; } } else { - switch_2 = (data & 0x04) >> 2; + const uint8_t switch_2 = (data & 0x04) >> 2; bits++; if (switch_2 == 0) { - run_length = (data & 0x03); + const uint8_t run_length = (data & 0x03); bits += 2; - pixel_code = next_nibble (this); + const uint8_t pixel_code = next_nibble (this); bits += 4; plot (this, r, run_length + 4, pixel_code); } else { - switch_3 = (data & 0x03); + const uint8_t switch_3 = (data & 0x03); bits += 2; switch (switch_3) { case 0: - plot (this, r, 1, pixel_code); + plot (this, r, 1, 0); break; case 1: - plot (this, r, 2, pixel_code); + plot (this, r, 2, 0); break; case 2: - run_length = next_nibble (this); - bits += 4; - pixel_code = next_nibble (this); - bits += 4; - plot (this, r, run_length + 9, pixel_code); + { + const uint8_t run_length = next_nibble (this); + bits += 4; + const uint8_t pixel_code = next_nibble (this); + bits += 4; + plot (this, r, run_length + 9, pixel_code); + } break; case 3: - run_length = next_nibble (this); - run_length = (run_length << 4) | next_nibble (this); - bits += 8; - pixel_code = next_nibble (this); - bits += 4; - plot (this, r, run_length + 25, pixel_code); + { + uint8_t run_length = next_nibble (this); + run_length = (run_length << 4) | next_nibble (this); + bits += 8; + const uint8_t pixel_code = next_nibble (this); + bits += 4; + plot (this, r, run_length + 25, pixel_code); + } } } } @@ -337,41 +324,36 @@ static void set_clut(dvb_spu_decoder_t *this,int CLUT_id,int CLUT_entry_id,int Y } static void process_CLUT_definition_segment(dvb_spu_decoder_t *this) { - int page_id, - segment_length, - CLUT_id, - CLUT_version_number; - - int CLUT_entry_id, - CLUT_flag_8_bit, - CLUT_flag_4_bit, - CLUT_flag_2_bit, - full_range_flag, - Y_value, - Cr_value, - Cb_value, - T_value; dvbsub_func_t *dvbsub = this->dvbsub; - int j; - - page_id=(dvbsub->buf[dvbsub->i]<<8)|dvbsub->buf[dvbsub->i+1]; dvbsub->i+=2; - segment_length=(dvbsub->buf[dvbsub->i]<<8)|dvbsub->buf[dvbsub->i+1]; dvbsub->i+=2; - j=dvbsub->i+segment_length; - - CLUT_id=dvbsub->buf[dvbsub->i++]; - CLUT_version_number=(dvbsub->buf[dvbsub->i]&0xf0)>>4; + /* + const uint16_t page_id= _X_BE_16(&dvbsub->buf[dvbsub->i]); + */ + dvbsub->i+=2; + const uint16_t segment_length= _X_BE_16(&dvbsub->buf[dvbsub->i]); + dvbsub->i+=2; + const int j=dvbsub->i+segment_length; + + const uint8_t CLUT_id=dvbsub->buf[dvbsub->i++]; + /* + const uint8_t CLUT_version_number=(dvbsub->buf[dvbsub->i]&0xf0)>>4; + */ dvbsub->i++; while (dvbsub->i < j) { - CLUT_entry_id=dvbsub->buf[dvbsub->i++]; - - CLUT_flag_2_bit=(dvbsub->buf[dvbsub->i]&0x80)>>7; - CLUT_flag_4_bit=(dvbsub->buf[dvbsub->i]&0x40)>>6; - CLUT_flag_8_bit=(dvbsub->buf[dvbsub->i]&0x20)>>5; - full_range_flag=dvbsub->buf[dvbsub->i]&1; + const uint8_t CLUT_entry_id=dvbsub->buf[dvbsub->i++]; + /* + const uint8_t CLUT_flag_2_bit=(dvbsub->buf[dvbsub->i]&0x80)>>7; + const uint8_t CLUT_flag_4_bit=(dvbsub->buf[dvbsub->i]&0x40)>>6; + const uint8_t CLUT_flag_8_bit=(dvbsub->buf[dvbsub->i]&0x20)>>5; + */ + const uint8_t full_range_flag=dvbsub->buf[dvbsub->i]&1; dvbsub->i++; + int Y_value, + Cr_value, + Cb_value, + T_value; if (full_range_flag==1) { Y_value=dvbsub->buf[dvbsub->i++]; Cr_value=dvbsub->buf[dvbsub->i++]; @@ -390,17 +372,14 @@ static void process_CLUT_definition_segment(dvb_spu_decoder_t *this) { static void process_pixel_data_sub_block (dvb_spu_decoder_t * this, int r, int o, int ofs, int n) { - int data_type; - int j; - dvbsub_func_t *dvbsub = this->dvbsub; - j = dvbsub->i + n; + const int j = dvbsub->i + n; dvbsub->x = (dvbsub->regions[r].object_pos[o]) >> 16; dvbsub->y = ((dvbsub->regions[r].object_pos[o]) & 0xffff) + ofs; while (dvbsub->i < j) { - data_type = dvbsub->buf[dvbsub->i++]; + const uint8_t data_type = dvbsub->buf[dvbsub->i++]; switch (data_type) { case 0: @@ -423,82 +402,86 @@ static void process_pixel_data_sub_block (dvb_spu_decoder_t * this, int r, int o static void process_page_composition_segment (dvb_spu_decoder_t * this) { - int segment_length; - int region_id, region_x, region_y; - int j; - int r; dvbsub_func_t *dvbsub = this->dvbsub; - dvbsub->page.page_id = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + dvbsub->page.page_id = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - segment_length = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t segment_length = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - j = dvbsub->i + segment_length; + const int j = dvbsub->i + segment_length; dvbsub->page.page_time_out = dvbsub->buf[dvbsub->i++]; + if ( dvbsub->page.page_time_out>6 ) /* some timeout are insane, e.g. 65s ! */ + dvbsub->page.page_time_out = 6; - dvbsub->page.page_version_number = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; + int version = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; + if ( version == dvbsub->page.page_version_number ) + return; + dvbsub->page.page_version_number = version; dvbsub->page.page_state = (dvbsub->buf[dvbsub->i] & 0x0c) >> 2; dvbsub->i++; - if (dvbsub->page.page_state==2) { - for (r=0; r<MAX_REGIONS; r++) - dvbsub->page.regions[r].is_visible = 0; - } - else if ( dvbsub->page.page_state!=0 && dvbsub->page.page_state!=1 ) { - return; + int r; + for (r=0; r<MAX_REGIONS; r++) { /* reset */ + dvbsub->page.regions[r].is_visible = 0; } while (dvbsub->i < j) { - region_id = dvbsub->buf[dvbsub->i++]; + const uint8_t region_id = dvbsub->buf[dvbsub->i++]; dvbsub->i++; /* reserved */ - region_x = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t region_x = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - region_y = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t region_y = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; dvbsub->page.regions[region_id].x = region_x; dvbsub->page.regions[region_id].y = region_y; + dvbsub->page.regions[region_id].is_visible = 1; } } static void process_region_composition_segment (dvb_spu_decoder_t * this) { - int segment_length, - region_id, - region_version_number, - region_fill_flag, region_width, region_height, region_level_of_compatibility, region_depth, CLUT_id, region_8_bit_pixel_code, region_4_bit_pixel_code, region_2_bit_pixel_code; - int object_id, object_type, object_provider_flag, object_x, object_y, foreground_pixel_code, background_pixel_code; - int j; - int o; dvbsub_func_t *dvbsub = this->dvbsub; - dvbsub->page.page_id = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + dvbsub->page.page_id = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - segment_length = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t segment_length = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - j = dvbsub->i + segment_length; + const int j = dvbsub->i + segment_length; - region_id = dvbsub->buf[dvbsub->i++]; - region_version_number = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; - region_fill_flag = (dvbsub->buf[dvbsub->i] & 0x08) >> 3; + const uint8_t region_id = dvbsub->buf[dvbsub->i++]; + const uint8_t region_version_number = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; + const uint8_t region_fill_flag = (dvbsub->buf[dvbsub->i] & 0x08) >> 3; dvbsub->i++; - region_width = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t region_width = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - region_height = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t region_height = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - region_level_of_compatibility = (dvbsub->buf[dvbsub->i] & 0xe0) >> 5; - region_depth = (dvbsub->buf[dvbsub->i] & 0x1c) >> 2; + /* + const uint8_t region_level_of_compatibility = (dvbsub->buf[dvbsub->i] & 0xe0) >> 5; + const uint8_t region_depth = (dvbsub->buf[dvbsub->i] & 0x1c) >> 2; + */ + dvbsub->i++; + const uint8_t CLUT_id = dvbsub->buf[dvbsub->i++]; + /* + const uint8_t region_8_bit_pixel_code = dvbsub->buf[dvbsub->i]; + */ dvbsub->i++; - CLUT_id = dvbsub->buf[dvbsub->i++]; - region_8_bit_pixel_code = dvbsub->buf[dvbsub->i++]; - region_4_bit_pixel_code = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; - region_2_bit_pixel_code = (dvbsub->buf[dvbsub->i] & 0x0c) >> 2; + const uint8_t region_4_bit_pixel_code = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; + /* + const uint8_t region_2_bit_pixel_code = (dvbsub->buf[dvbsub->i] & 0x0c) >> 2; + */ dvbsub->i++; if(region_id>=MAX_REGIONS) return; + + if ( dvbsub->regions[region_id].version_number == region_version_number ) + return; + + dvbsub->regions[region_id].version_number = region_version_number; /* Check if region size has changed and fill background. */ update_region (this, region_id, region_width, region_height, region_fill_flag, region_4_bit_pixel_code); @@ -508,25 +491,33 @@ static void process_region_composition_segment (dvb_spu_decoder_t * this) dvbsub->regions[region_id].objects_start = dvbsub->i; dvbsub->regions[region_id].objects_end = j; - for (o = 0; o < 65536; o++) { - dvbsub->regions[region_id].object_pos[o] = 0xffffffff; + { + int o; + for (o = 0; o < 65536; o++) { + dvbsub->regions[region_id].object_pos[o] = 0xffffffff; + } } while (dvbsub->i < j) { - object_id = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t object_id = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; - object_type = (dvbsub->buf[dvbsub->i] & 0xc0) >> 6; - object_provider_flag = (dvbsub->buf[dvbsub->i] & 0x30) >> 4; - object_x = ((dvbsub->buf[dvbsub->i] & 0x0f) << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint8_t object_type = (dvbsub->buf[dvbsub->i] & 0xc0) >> 6; + /* + const uint8_t object_provider_flag = (dvbsub->buf[dvbsub->i] & 0x30) >> 4; + */ + const uint16_t object_x = ((dvbsub->buf[dvbsub->i] & 0x0f) << 8) | dvbsub->buf[dvbsub->i + 1]; dvbsub->i += 2; - object_y = ((dvbsub->buf[dvbsub->i] & 0x0f) << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t object_y = ((dvbsub->buf[dvbsub->i] & 0x0f) << 8) | dvbsub->buf[dvbsub->i + 1]; dvbsub->i += 2; dvbsub->regions[region_id].object_pos[object_id] = (object_x << 16) | object_y; if ((object_type == 0x01) || (object_type == 0x02)) { - foreground_pixel_code = dvbsub->buf[dvbsub->i++]; - background_pixel_code = dvbsub->buf[dvbsub->i++]; + /* + const uint8_t foreground_pixel_code = dvbsub->buf[dvbsub->i]; + const uint8_t background_pixel_code = dvbsub->buf[dvbsub->i+1]; + */ + dvbsub->i += 2; } } @@ -534,49 +525,48 @@ static void process_region_composition_segment (dvb_spu_decoder_t * this) static void process_object_data_segment (dvb_spu_decoder_t * this) { - int segment_length, object_id, object_version_number, object_coding_method, non_modifying_colour_flag; - - int top_field_data_block_length, bottom_field_data_block_length; - dvbsub_func_t *dvbsub = this->dvbsub; - int j; - int old_i; - int r; - dvbsub->page.page_id = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; dvbsub->i += 2; - segment_length = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + /* + const uint16_t segment_length = _X_BE_16(&dvbsub->buf[dvbsub->i]); + */ dvbsub->i += 2; - j = dvbsub->i + segment_length; - object_id = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; + const uint16_t object_id = _X_BE_16(&dvbsub->buf[dvbsub->i]); dvbsub->i += 2; dvbsub->curr_obj = object_id; - object_version_number = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; - object_coding_method = (dvbsub->buf[dvbsub->i] & 0x0c) >> 2; - non_modifying_colour_flag = (dvbsub->buf[dvbsub->i] & 0x02) >> 1; + const uint8_t object_coding_method = (dvbsub->buf[dvbsub->i] & 0x0c) >> 2; + /* + const uint8_t object_version_number = (dvbsub->buf[dvbsub->i] & 0xf0) >> 4; + const uint8_t non_modifying_colour_flag = (dvbsub->buf[dvbsub->i] & 0x02) >> 1; + */ dvbsub->i++; - old_i = dvbsub->i; + if ( object_coding_method != 0 ) + return; + + const int old_i = dvbsub->i; + int r; for (r = 0; r < MAX_REGIONS; r++) { /* If this object is in this region... */ - if (dvbsub->regions[r].img) { - if (dvbsub->regions[r].object_pos[object_id] != 0xffffffff) { - dvbsub->i = old_i; - if (object_coding_method == 0) { - top_field_data_block_length = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; - dvbsub->i += 2; - bottom_field_data_block_length = (dvbsub->buf[dvbsub->i] << 8) | dvbsub->buf[dvbsub->i + 1]; - dvbsub->i += 2; - - process_pixel_data_sub_block (this, r, object_id, 0, top_field_data_block_length); - - process_pixel_data_sub_block (this, r, object_id, 1, bottom_field_data_block_length); - } - } - } + if (!dvbsub->regions[r].img) + continue; + + if (dvbsub->regions[r].object_pos[object_id] == 0xffffffff) + continue; + + dvbsub->i = old_i; + + const uint16_t top_field_data_block_length = _X_BE_16(&dvbsub->buf[dvbsub->i]); + dvbsub->i += 2; + const uint16_t bottom_field_data_block_length = _X_BE_16(&dvbsub->buf[dvbsub->i]); + dvbsub->i += 2; + + process_pixel_data_sub_block (this, r, object_id, 0, top_field_data_block_length); + process_pixel_data_sub_block (this, r, object_id, 1, bottom_field_data_block_length); } } @@ -603,38 +593,37 @@ static void* dvbsub_timer_func(void *this_gen) { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; pthread_mutex_lock(&this->dvbsub_osd_mutex); - int i; /* If we're cancelled via pthread_cancel, unlock the mutex */ pthread_cleanup_push(unlock_mutex_cancellation_func, &this->dvbsub_osd_mutex); - while(1) - { + while(1) { /* Record the current timeout, and wait - note that pthread_cond_timedwait will unlock the mutex on entry, and lock it on exit */ struct timespec timeout = this->dvbsub_hide_timeout; - int result = pthread_cond_timedwait(&this->dvbsub_restart_timeout, - &this->dvbsub_osd_mutex, - &this->dvbsub_hide_timeout); - if(result == ETIMEDOUT && - timeout.tv_sec == this->dvbsub_hide_timeout.tv_sec && - timeout.tv_nsec == this->dvbsub_hide_timeout.tv_nsec) - { - /* We timed out, and no-one changed the timeout underneath us. - Hide the OSD, then wait until we're signalled. */ - if(this && this->stream && this->stream->osd_renderer) - { - for ( i=0; i<MAX_REGIONS; i++ ) { - if ( this->dvbsub->regions[i].osd ) { - this->stream->osd_renderer->hide( this->dvbsub->regions[i].osd, 0 ); + const int result = pthread_cond_timedwait(&this->dvbsub_restart_timeout, + &this->dvbsub_osd_mutex, + &this->dvbsub_hide_timeout); + if(result != ETIMEDOUT || + timeout.tv_sec != this->dvbsub_hide_timeout.tv_sec || + timeout.tv_nsec != this->dvbsub_hide_timeout.tv_nsec) + continue; + + /* We timed out, and no-one changed the timeout underneath us. + Hide the OSD, then wait until we're signalled. */ + if(this && this->stream && this->stream->osd_renderer) { + int i; + for ( i=0; i<MAX_REGIONS; i++ ) { + if ( !this->dvbsub->regions[i].osd ) + continue; + + this->stream->osd_renderer->hide( this->dvbsub->regions[i].osd, 0 ); #ifdef LOG - printf("SPUDVB: thread hiding = %d\n",i); + printf("SPUDVB: thread hiding = %d\n",i); #endif - } - } } - pthread_cond_wait(&this->dvbsub_restart_timeout, &this->dvbsub_osd_mutex); } + pthread_cond_wait(&this->dvbsub_restart_timeout, &this->dvbsub_osd_mutex); } pthread_cleanup_pop(1); @@ -654,26 +643,29 @@ static void downscale_region_image( region_t *reg, unsigned char *dest, int dest static void draw_subtitles (dvb_spu_decoder_t * this) { - int r; - int display=0; int64_t dum; - int dest_width=0, dest_height, reg_width; + int dest_width=0, dest_height; this->stream->video_out->status(this->stream->video_out, NULL, &dest_width, &dest_height, &dum); - unsigned char tmp[dest_width*576]; - unsigned char *reg; if ( !dest_width ) return; /* render all regions onto the page */ - for ( r=0; r<MAX_REGIONS; r++ ) { - if ( this->dvbsub->page.regions[r].is_visible ) - display++; + { + int r; + int display = 0; + for ( r=0; r<MAX_REGIONS; r++ ) { + if ( this->dvbsub->page.regions[r].is_visible ) { + display = 1; + break; + } + } + if ( !display ) + return; } - if ( !display ) - return; + int r; for (r = 0; r < MAX_REGIONS; r++) { if (this->dvbsub->regions[r].img) { if (this->dvbsub->page.regions[r].is_visible && !this->dvbsub->regions[r].empty) { @@ -682,6 +674,10 @@ static void draw_subtitles (dvb_spu_decoder_t * this) continue; /* clear osd */ this->stream->osd_renderer->clear( this->dvbsub->regions[r].osd ); + + uint8_t *reg; + int reg_width; + uint8_t tmp[dest_width*576]; if (this->dvbsub->regions[r].width>dest_width) { downscale_region_image(&this->dvbsub->regions[r], tmp, dest_width); reg = tmp; @@ -702,6 +698,9 @@ static void draw_subtitles (dvb_spu_decoder_t * this) printf("SPUDVB: this->vpts=%llu\n",this->vpts); #endif for ( r=0; r<MAX_REGIONS; r++ ) { +#ifdef LOG + printf("SPUDVB : region=%d, visible=%d, osd=%d, empty=%d\n", r, this->dvbsub->page.regions[r].is_visible, this->dvbsub->regions[r].osd?1:0, this->dvbsub->regions[r].empty ); +#endif if ( this->dvbsub->page.regions[r].is_visible && this->dvbsub->regions[r].osd && !this->dvbsub->regions[r].empty ) { this->stream->osd_renderer->set_position( this->dvbsub->regions[r].osd, this->dvbsub->page.regions[r].x, this->dvbsub->page.regions[r].y ); this->stream->osd_renderer->show( this->dvbsub->regions[r].osd, this->vpts ); @@ -731,12 +730,6 @@ static void draw_subtitles (dvb_spu_decoder_t * this) static void spudec_decode_data (spu_decoder_t * this_gen, buf_element_t * buf) { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; - int new_i; - int data_identifier, subtitle_stream_id; - int segment_length, segment_type; - int PES_header_data_length; - int PES_packet_length; - int i; if((buf->type & 0xffff0000)!=BUF_SPU_DVB) return; @@ -746,6 +739,7 @@ static void spudec_decode_data (spu_decoder_t * this_gen, buf_element_t * buf) if (buf->decoder_info[2] == 0) { /* Hide the osd - note that if the timeout thread times out, it'll rehide, which is harmless */ pthread_mutex_lock(&this->dvbsub_osd_mutex); + int i; for ( i=0; i<MAX_REGIONS; i++ ) { if ( this->dvbsub->regions[i].osd ) this->stream->osd_renderer->hide( this->dvbsub->regions[i].osd, 0 ); @@ -779,12 +773,12 @@ static void spudec_decode_data (spu_decoder_t * this_gen, buf_element_t * buf) * because buf->pts could be too far in future and metronom won't accept * further backwards pts (see metronom_got_spu_packet) */ if (buf->pts) { - metronom_t *metronom = this->stream->metronom; - int64_t vpts_offset = metronom->get_option( metronom, METRONOM_VPTS_OFFSET ); - int64_t spu_offset = metronom->get_option( metronom, METRONOM_SPU_OFFSET ); - int64_t vpts = (int64_t)(buf->pts)+vpts_offset+spu_offset; - metronom_clock_t *clock = this->stream->xine->clock; - int64_t curvpts = clock->get_current_time( clock ); + metronom_t *const metronom = this->stream->metronom; + const int64_t vpts_offset = metronom->get_option( metronom, METRONOM_VPTS_OFFSET ); + const int64_t spu_offset = metronom->get_option( metronom, METRONOM_SPU_OFFSET ); + const int64_t vpts = (int64_t)(buf->pts)+vpts_offset+spu_offset; + metronom_clock_t *const clock = this->stream->xine->clock; + const int64_t curvpts = clock->get_current_time( clock ); /* if buf->pts is unreliable, show page asap (better than nothing) */ #ifdef LOG printf("SPUDVB: spu_vpts=%lld - current_vpts=%lld\n", vpts, curvpts); @@ -795,58 +789,62 @@ static void spudec_decode_data (spu_decoder_t * this_gen, buf_element_t * buf) this->vpts = vpts; } + /* completely ignore pts since it makes a lot of problems with various providers */ + this->vpts = 0; + /* process the pes section */ - PES_packet_length = this->pes_pkt_size; + const int PES_packet_length = this->pes_pkt_size; - this->dvbsub->buf = this->pes_pkt; + this->dvbsub->buf = this->pes_pkt; - PES_header_data_length = 0; - this->dvbsub->i = 0; + this->dvbsub->i = 0; - data_identifier = this->dvbsub->buf[this->dvbsub->i++]; - subtitle_stream_id = this->dvbsub->buf[this->dvbsub->i++]; + /* + const uint8_t data_identifier = this->dvbsub->buf[this->dvbsub->i]; + const uint8_t subtitle_stream_id = this->dvbsub->buf[this->dvbsub->i+1]; + */ + this->dvbsub->i += 2; - while (this->dvbsub->i <= (PES_packet_length)) { - /* SUBTITLING SEGMENT */ - this->dvbsub->i++; - segment_type = this->dvbsub->buf[this->dvbsub->i++]; + while (this->dvbsub->i <= (PES_packet_length)) { + /* SUBTITLING SEGMENT */ + this->dvbsub->i++; + const uint8_t segment_type = this->dvbsub->buf[this->dvbsub->i++]; - this->dvbsub->page.page_id = (this->dvbsub->buf[this->dvbsub->i] << 8) | this->dvbsub->buf[this->dvbsub->i + 1]; - segment_length = (this->dvbsub->buf[this->dvbsub->i + 2] << 8) | this->dvbsub->buf[this->dvbsub->i + 3]; - new_i = this->dvbsub->i + segment_length + 4; + this->dvbsub->page.page_id = (this->dvbsub->buf[this->dvbsub->i] << 8) | this->dvbsub->buf[this->dvbsub->i + 1]; + const uint16_t segment_length = _X_BE_16(&this->dvbsub->buf[this->dvbsub->i + 2]); + const int new_i = this->dvbsub->i + segment_length + 4; - /* only process complete segments */ - if(new_i > (this->pes_pkt_wrptr - this->pes_pkt)) - break; - /* verify we've the right segment */ - if(this->dvbsub->page.page_id==this->spu_descriptor->comp_page_id){ - /* SEGMENT_DATA_FIELD */ - switch (segment_type & 0xff) { - case 0x10: - process_page_composition_segment (this); - break; - case 0x11: - process_region_composition_segment (this); - break; - case 0x12: - process_CLUT_definition_segment(this); - break; - case 0x13: - process_object_data_segment (this); - break; - case 0x80: /* Page is now completely rendered */ - draw_subtitles( this ); - break; - default: - return; - break; - } - } - this->dvbsub->i = new_i; - } + /* only process complete segments */ + if(new_i > (this->pes_pkt_wrptr - this->pes_pkt)) + break; - return; + /* verify we've the right segment */ + if(this->dvbsub->page.page_id==this->spu_descriptor->comp_page_id){ + /* SEGMENT_DATA_FIELD */ + switch (segment_type) { + case 0x10: + process_page_composition_segment(this); + break; + case 0x11: + process_region_composition_segment(this); + break; + case 0x12: + process_CLUT_definition_segment(this); + break; + case 0x13: + process_object_data_segment (this); + break; + case 0x80: + draw_subtitles( this ); /* Page is now completely rendered */ + break; + default: + return; + break; + } + } + this->dvbsub->i = new_i; + } } static void spudec_reset (spu_decoder_t * this_gen) @@ -859,7 +857,9 @@ static void spudec_reset (spu_decoder_t * this_gen) for ( i=0; i<MAX_REGIONS; i++ ) { if ( this->dvbsub->regions[i].osd ) this->stream->osd_renderer->hide(this->dvbsub->regions[i].osd, 0); + this->dvbsub->regions[i].version_number = -1; } + this->dvbsub->page.page_version_number = -1; pthread_mutex_unlock(&this->dvbsub_osd_mutex); } @@ -872,42 +872,31 @@ static void spudec_discontinuity (spu_decoder_t * this_gen) static void spudec_dispose (spu_decoder_t * this_gen) { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; - int i; pthread_cancel(this->dvbsub_timer_thread); pthread_join(this->dvbsub_timer_thread, NULL); pthread_mutex_destroy(&this->dvbsub_osd_mutex); pthread_cond_destroy(&this->dvbsub_restart_timeout); - if(this->spu_descriptor){ - free(this->spu_descriptor); - this->spu_descriptor=NULL; - } + free(this->spu_descriptor); + this->spu_descriptor=NULL; + int i; for ( i=0; i<MAX_REGIONS; i++ ) { - if ( this->dvbsub->regions[i].img ) - free( this->dvbsub->regions[i].img ); + free( this->dvbsub->regions[i].img ); if ( this->dvbsub->regions[i].osd ) this->stream->osd_renderer->free_object( this->dvbsub->regions[i].osd ); } - if (this->pes_pkt) - free (this->pes_pkt); - - if (this->dvbsub) - free (this->dvbsub); - + free (this->pes_pkt); + free (this->dvbsub); free (this); } static spu_decoder_t *dvb_spu_class_open_plugin (spu_decoder_class_t * class_gen, xine_stream_t * stream) { - - int i; - dvb_spu_decoder_t *this; - dvb_spu_class_t *class = (dvb_spu_class_t *) class_gen; - - this = (dvb_spu_decoder_t *) xine_xmalloc (sizeof (dvb_spu_decoder_t)); + dvb_spu_decoder_t *this = calloc(1, sizeof (dvb_spu_decoder_t)); + dvb_spu_class_t *class = (dvb_spu_class_t *)class_gen; this->spu_decoder.decode_data = spudec_decode_data; this->spu_decoder.reset = spudec_reset; @@ -919,17 +908,10 @@ static spu_decoder_t *dvb_spu_class_open_plugin (spu_decoder_class_t * class_gen this->class = class; this->stream = stream; - this->pes_pkt = xine_xmalloc (1024*65); - this->spu_descriptor = xine_xmalloc(sizeof(spu_dvb_descriptor_t)); + this->pes_pkt = calloc(65, 1024); + this->spu_descriptor = calloc(1, sizeof(spu_dvb_descriptor_t)); - this->dvbsub = xine_xmalloc (sizeof (dvbsub_func_t)); - - for (i = 0; i < MAX_REGIONS; i++) { - this->dvbsub->page.regions[i].is_visible = 0; - this->dvbsub->regions[i].img = NULL; - this->dvbsub->regions[i].osd = NULL; - this->dvbsub->regions[i].CLUT_id = 0; - } + this->dvbsub = calloc(1, sizeof (dvbsub_func_t)); pthread_mutex_init(&this->dvbsub_osd_mutex, NULL); pthread_cond_init(&this->dvbsub_restart_timeout, NULL); @@ -957,9 +939,7 @@ static char *dvb_spu_class_get_description (spu_decoder_class_t * this) static void *init_spu_decoder_plugin (xine_t * xine, void *data) { - - dvb_spu_class_t *this; - this = (dvb_spu_class_t *) xine_xmalloc (sizeof (dvb_spu_class_t)); + dvb_spu_class_t *this = calloc(1, sizeof (dvb_spu_class_t)); this->class.open_plugin = dvb_spu_class_open_plugin; this->class.get_identifier = dvb_spu_class_get_identifier; diff --git a/src/libsputext/Makefile.am b/src/libsputext/Makefile.am index 4f03d7fa9..62258933d 100644 --- a/src/libsputext/Makefile.am +++ b/src/libsputext/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_LDFLAGS = $(xineplug_ldflags) diff --git a/src/libsputext/demux_sputext.c b/src/libsputext/demux_sputext.c index acf8e10f6..198c30498 100644 --- a/src/libsputext/demux_sputext.c +++ b/src/libsputext/demux_sputext.c @@ -129,7 +129,6 @@ static int eol(char p) { } static inline void trail_space(char *s) { - int i; while (isspace(*s)) { char *copy = s; do { @@ -137,7 +136,7 @@ static inline void trail_space(char *s) { copy++; } while(*copy); } - i = strlen(s) - 1; + size_t i = strlen(s) - 1; while (i > 0 && isspace(s[i])) s[i--] = '\0'; } @@ -147,10 +146,8 @@ static inline void trail_space(char *s) { */ static char *read_line_from_input(demux_sputext_t *this, char *line, off_t len) { off_t nread = 0; - char *s; - int linelen; - if ((len - this->buflen) > 512) { + if ((len - this->buflen) > 512 && len < SUB_BUFSIZE) { if((nread = this->input->read(this->input, &this->buf[this->buflen], len - this->buflen)) < 0) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "read failed.\n"); @@ -161,11 +158,11 @@ static char *read_line_from_input(demux_sputext_t *this, char *line, off_t len) this->buflen += nread; this->buf[this->buflen] = '\0'; - s = strchr(this->buf, '\n'); + char *s = strchr(this->buf, '\n'); if (line && (s || this->buflen)) { - linelen = s ? (s - this->buf) + 1 : this->buflen; + size_t linelen = s ? (s - this->buf) + 1 : this->buflen; memcpy(line, this->buf, linelen); line[linelen] = '\0'; @@ -184,13 +181,12 @@ static subtitle_t *sub_read_line_sami(demux_sputext_t *this, subtitle_t *current static char line[LINE_LEN + 1]; static char *s = NULL; - char text[LINE_LEN + 1], *p, *q; - int state; + char text[LINE_LEN + 1]; - p = NULL; + char *p = NULL; current->lines = current->start = 0; current->end = -1; - state = 0; + int state = 0; /* read the first line */ if (!s) @@ -230,14 +226,16 @@ static subtitle_t *sub_read_line_sami(demux_sputext_t *this, subtitle_t *current continue; case 4: /* get current->end or skip <TAG> */ - q = strstr (s, "Start="); - if (q) { - current->end = strtol (q + 6, &q, 0) / 10 - 1; - *p = '\0'; trail_space (text); - if (text[0] != '\0') - current->text[current->lines++] = strdup (text); - if (current->lines > 0) { state = 99; break; } - state = 0; continue; + { + char *q = strstr (s, "Start="); + if (q) { + current->end = strtol (q + 6, &q, 0) / 10 - 1; + *p = '\0'; trail_space (text); + if (text[0] != '\0') + current->text[current->lines++] = strdup (text); + if (current->lines > 0) { state = 99; break; } + state = 0; continue; + } } s = strchr (s, '>'); if (s) { s++; state = 3; continue; } @@ -255,19 +253,14 @@ static subtitle_t *sub_read_line_sami(demux_sputext_t *this, subtitle_t *current static char *sub_readtext(char *source, char **dest) { - int len=0; + size_t len=0; char *p=source; while ( !eol(*p) && *p!= '|' ) { p++,len++; } - *dest= (char *)xine_xmalloc (len+1); - if (!dest) - return ERR; - - strncpy(*dest, source, len); - (*dest)[len]=0; + *dest = strndup(source, len); while (*p=='\r' || *p=='\n' || *p=='|') p++; @@ -280,8 +273,6 @@ static subtitle_t *sub_read_line_microdvd(demux_sputext_t *this, subtitle_t *cur char line[LINE_LEN + 1]; char line2[LINE_LEN + 1]; - char *p, *next; - int i; memset (current, 0, sizeof(subtitle_t)); @@ -292,9 +283,10 @@ static subtitle_t *sub_read_line_microdvd(demux_sputext_t *this, subtitle_t *cur (sscanf (line, "{%ld}{%ld}%" LINE_LEN_QUOT "[^\r\n]", &(current->start), &(current->end),line2) !=3) ); - p=line2; + char *p=line2; - next=p, i=0; + char *next=p; + size_t i=0; while ((next =sub_readtext (next, &(current->text[i])))) { if (current->text[i]==ERR) return ERR; i++; @@ -310,33 +302,33 @@ static subtitle_t *sub_read_line_microdvd(demux_sputext_t *this, subtitle_t *cur } static subtitle_t *sub_read_line_subviewer(demux_sputext_t *this, subtitle_t *current) { - char line[LINE_LEN + 1]; - int a1,a2,a3,a4,b1,b2,b3,b4; - char *p=NULL, *q=NULL; - int len; memset (current, 0, sizeof(subtitle_t)); while (1) { if (!read_line_from_input(this, line, LINE_LEN)) return NULL; - if (sscanf (line, "%d:%d:%d.%d,%d:%d:%d.%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4) < 8) { - if (sscanf (line, "%d:%d:%d,%d,%d:%d:%d,%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4) < 8) - continue; + + { + int a1,a2,a3,a4,b1,b2,b3,b4; + if (sscanf (line, "%d:%d:%d.%d,%d:%d:%d.%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4) < 8) { + if (sscanf (line, "%d:%d:%d,%d,%d:%d:%d,%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4) < 8) + continue; + } + + current->start = a1*360000+a2*6000+a3*100+a4; + current->end = b1*360000+b2*6000+b3*100+b4; } - current->start = a1*360000+a2*6000+a3*100+a4; - current->end = b1*360000+b2*6000+b3*100+b4; - + if (!read_line_from_input(this, line, LINE_LEN)) return NULL; - p=q=line; + char *p = line, *q = line; for (current->lines=1; current->lines <= SUB_MAX_TEXT; current->lines++) { + size_t len; for (q=p,len=0; *p && *p!='\r' && *p!='\n' && *p!='|' && strncasecmp(p,"[br]",4); p++,len++); - current->text[current->lines-1]=(char *)xine_xmalloc (len+1); + current->text[current->lines-1] = strndup(q, len); if (!current->text[current->lines-1]) return ERR; - strncpy (current->text[current->lines-1], q, len); - current->text[current->lines-1][len]='\0'; if (!*p || *p=='\r' || *p=='\n') break; if (*p=='[') while (*p++!=']'); if (*p=='|') p++; @@ -348,25 +340,27 @@ static subtitle_t *sub_read_line_subviewer(demux_sputext_t *this, subtitle_t *cu } static subtitle_t *sub_read_line_subrip(demux_sputext_t *this,subtitle_t *current) { - char line[LINE_LEN + 1]; - int a1,a2,a3,a4,b1,b2,b3,b4; - int i,end_sub; - memset(current,0,sizeof(subtitle_t)); - do { - if(!read_line_from_input(this,line,LINE_LEN)) - return NULL; - i = sscanf(line,"%d:%d:%d%*[,.]%d --> %d:%d:%d%*[,.]%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4); - } while(i < 8); - current->start = a1*360000+a2*6000+a3*100+a4/10; - current->end = b1*360000+b2*6000+b3*100+b4/10; - i=0; - end_sub=0; + + { + int a1,a2,a3,a4,b1,b2,b3,b4,i; + do { + char line[LINE_LEN + 1]; + if(!read_line_from_input(this,line,LINE_LEN)) + return NULL; + i = sscanf(line,"%d:%d:%d%*[,.]%d --> %d:%d:%d%*[,.]%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4); + } while(i < 8); + current->start = a1*360000+a2*6000+a3*100+a4/10; + current->end = b1*360000+b2*6000+b3*100+b4/10; + } + + int i=0; + int end_sub=0; do { char *p; /* pointer to the curently read char */ - char temp_line[SUB_BUFSIZE]; /* subtitle line that will be transfered to current->text[i] */ - int temp_index; /* ... and its index wich 'points' to the first EMPTY place -> last read char is at temp_index-1 if temp_index>0 */ - temp_line[SUB_BUFSIZE-1]='\0'; /* just in case... */ + char line[LINE_LEN + 1]; + char temp_line[SUB_BUFSIZE] = { 0, }; /* subtitle line that will be transfered to current->text[i] */ + size_t temp_index; /* ... and its index wich 'points' to the first EMPTY place -> last read char is at temp_index-1 if temp_index>0 */ if(!read_line_from_input(this,line,LINE_LEN)) { if(i) break; /* if something was read, transmit it */ @@ -396,10 +390,10 @@ static subtitle_t *sub_read_line_subrip(demux_sputext_t *this,subtitle_t *curren xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "Too many characters in a subtitle line\n"); if(temp_line[temp_index-1]=='\0' || temp_index==SUB_BUFSIZE) { if(temp_index>1) { /* more than 1 char (including '\0') -> that is a valid one */ - current->text[i]=(char *)xine_xmalloc(temp_index); + /* temp_index<=SUB_BUFSIZE is always true here */ + current->text[i] = strndup(temp_line, temp_index); if(!current->text[i]) return ERR; - strncpy(current->text[i],temp_line,temp_index); /* temp_index<=SUB_BUFSIZE is always true here */ i++; temp_index=0; } else @@ -416,9 +410,6 @@ static subtitle_t *sub_read_line_subrip(demux_sputext_t *this,subtitle_t *curren static subtitle_t *sub_read_line_vplayer(demux_sputext_t *this,subtitle_t *current) { char line[LINE_LEN + 1]; - int a1,a2,a3,b1,b2,b3; - char *p=NULL, *next, *p2; - int i; memset (current, 0, sizeof(subtitle_t)); @@ -436,24 +427,32 @@ static subtitle_t *sub_read_line_vplayer(demux_sputext_t *this,subtitle_t *curre this->next_line[0] = '\0'; return NULL; } - if( (sscanf( line, "%d:%d:%d:", &a1, &a2, &a3) < 3) || - (sscanf( this->next_line, "%d:%d:%d:", &b1, &b2, &b3) < 3) ) - continue; - current->start = a1*360000+a2*6000+a3*100; - current->end = b1*360000+b2*6000+b3*100; + + { + int a1,a2,a3,b1,b2,b3; + if( (sscanf( line, "%d:%d:%d:", &a1, &a2, &a3) < 3) || + (sscanf( this->next_line, "%d:%d:%d:", &b1, &b2, &b3) < 3) ) + continue; + current->start = a1*360000+a2*6000+a3*100; + current->end = b1*360000+b2*6000+b3*100; + } + if ((current->end - current->start) > LINE_LEN) current->end = current->start + LINE_LEN; /* not too long though. */ /* teraz czas na wkopiowanie stringu */ - p=line; + char *p=line; /* finds the body of the subtitle_t */ - for (i=0; i<3; i++){ - p2=strchr( p, ':'); - if( p2 == NULL ) break; - p=p2+1; - } + { + int i; + for (i=0; i<3; i++){ + char *p2=strchr( p, ':'); + if( p2 == NULL ) break; + p=p2+1; + } + } - next=p; - i=0; + char *next=p; + int i=0; while( (next = sub_readtext( next, &(current->text[i]))) ) { if (current->text[i]==ERR) return ERR; @@ -475,35 +474,40 @@ static subtitle_t *sub_read_line_rt(demux_sputext_t *this,subtitle_t *current) { * I couldn't check it since DTD is not included. * WARNING: full XML parses can be required for proper parsing */ - char line[LINE_LEN + 1]; - int a1,a2,a3,a4,b1,b2,b3,b4; - char *p=NULL,*next=NULL; - int i,len,plen; - memset (current, 0, sizeof(subtitle_t)); while (!current->text[0]) { + char line[LINE_LEN + 1]; if (!read_line_from_input(this, line, LINE_LEN)) return NULL; + + char *p = line; /* * TODO: it seems that format of time is not easily determined, it may be 1:12, 1:12.0 or 0:1:12.0 * to describe the same moment in time. Maybe there are even more formats in use. */ - if ((len=sscanf (line, "<Time Begin=\"%d:%d:%d.%d\" End=\"%d:%d:%d.%d\"",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4)) < 8) - - plen=a1=a2=a3=a4=b1=b2=b3=b4=0; - if ( - ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d\" %*[Ee]nd=\"%d:%d\"%*[^<]<clear/>%n",&a2,&a3,&b2,&b3,&plen)) < 4) && - ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d\" %*[Ee]nd=\"%d:%d.%d\"%*[^<]<clear/>%n",&a2,&a3,&b2,&b3,&b4,&plen)) < 5) && - /* ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d.%d\" %*[Ee]nd=\"%d:%d\"%*[^<]<clear/>%n",&a2,&a3,&a4,&b2,&b3,&plen)) < 5) && */ - ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d.%d\" %*[Ee]nd=\"%d:%d.%d\"%*[^<]<clear/>%n",&a2,&a3,&a4,&b2,&b3,&b4,&plen)) < 6) && - ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d:%d.%d\" %*[Ee]nd=\"%d:%d:%d.%d\"%*[^<]<clear/>%n",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4,&plen)) < 8) - ) - continue; - current->start = a1*360000+a2*6000+a3*100+a4/10; - current->end = b1*360000+b2*6000+b3*100+b4/10; - p=line; p+=plen;i=0; + { + int a1,a2,a3,a4,b1,b2,b3,b4,len,plen; + if ((len=sscanf (line, "<Time Begin=\"%d:%d:%d.%d\" End=\"%d:%d:%d.%d\"",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4)) < 8) + + a1=a2=a3=a4=b1=b2=b3=b4=0; + if ( + ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d\" %*[Ee]nd=\"%d:%d\"%*[^<]<clear/>%n",&a2,&a3,&b2,&b3,&plen)) < 4) && + ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d\" %*[Ee]nd=\"%d:%d.%d\"%*[^<]<clear/>%n",&a2,&a3,&b2,&b3,&b4,&plen)) < 5) && + /* ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d.%d\" %*[Ee]nd=\"%d:%d\"%*[^<]<clear/>%n",&a2,&a3,&a4,&b2,&b3,&plen)) < 5) && */ + ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d.%d\" %*[Ee]nd=\"%d:%d.%d\"%*[^<]<clear/>%n",&a2,&a3,&a4,&b2,&b3,&b4,&plen)) < 6) && + ((len=sscanf (line, "<%*[tT]ime %*[bB]egin=\"%d:%d:%d.%d\" %*[Ee]nd=\"%d:%d:%d.%d\"%*[^<]<clear/>%n",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4,&plen)) < 8) + ) + continue; + + current->start = a1*360000+a2*6000+a3*100+a4/10; + current->end = b1*360000+b2*6000+b3*100+b4/10; + + p += plen; + } + + int i=0; /* TODO: I don't know what kind of convention is here for marking multiline subs, maybe <br/> like in xml? */ - next = strstr(line,"<clear/>")+8;i=0; + char *next = strstr(line,"<clear/>")+8;i=0; while ((next =sub_readtext (next, &(current->text[i])))) { if (current->text[i]==ERR) return ERR; @@ -520,52 +524,54 @@ static subtitle_t *sub_read_line_rt(demux_sputext_t *this,subtitle_t *current) { } static subtitle_t *sub_read_line_ssa(demux_sputext_t *this,subtitle_t *current) { - int comma; static int max_comma = 32; /* let's use 32 for the case that the */ /* amount of commas increase with newer SSA versions */ int hour1, min1, sec1, hunsec1, hour2, min2, sec2, hunsec2, nothing; - int num; - char line[LINE_LEN + 1], line3[LINE_LEN + 1], *line2; - char *tmp; + char line3[LINE_LEN + 1]; - do { - if (!read_line_from_input(this, line, LINE_LEN)) return NULL; - } while (sscanf (line, "Dialogue: Marked=%d,%d:%d:%d.%d,%d:%d:%d.%d," - "%[^\n\r]", ¬hing, - &hour1, &min1, &sec1, &hunsec1, - &hour2, &min2, &sec2, &hunsec2, - line3) < 9 - && - sscanf (line, "Dialogue: %d,%d:%d:%d.%d,%d:%d:%d.%d," - "%[^\n\r]", ¬hing, - &hour1, &min1, &sec1, &hunsec1, - &hour2, &min2, &sec2, &hunsec2, - line3) < 9 ); + { + char line[LINE_LEN + 1]; + do { + if (!read_line_from_input(this, line, LINE_LEN)) return NULL; + } while (sscanf (line, "Dialogue: Marked=%d,%d:%d:%d.%d,%d:%d:%d.%d," + "%[^\n\r]", ¬hing, + &hour1, &min1, &sec1, &hunsec1, + &hour2, &min2, &sec2, &hunsec2, + line3) < 9 + && + sscanf (line, "Dialogue: %d,%d:%d:%d.%d,%d:%d:%d.%d," + "%[^\n\r]", ¬hing, + &hour1, &min1, &sec1, &hunsec1, + &hour2, &min2, &sec2, &hunsec2, + line3) < 9 ); + } - line2=strchr(line3, ','); + char *line2=strchr(line3, ','); + if (!line2) + return NULL; - for (comma = 4; comma < max_comma; comma ++) - { - tmp = line2; - if(!(tmp=strchr(++tmp, ','))) break; - if(*(++tmp) == ' ') break; - /* a space after a comma means we're already in a sentence */ - line2 = tmp; - } + int comma; + for (comma = 4; comma < max_comma; comma ++) { + char *tmp = line2; + if(!(tmp=strchr(++tmp, ','))) break; + if(*(++tmp) == ' ') break; + /* a space after a comma means we're already in a sentence */ + line2 = tmp; + } if(comma < max_comma)max_comma = comma; /* eliminate the trailing comma */ if(*line2 == ',') line2++; - current->lines=0;num=0; + current->lines=0; current->start = 360000*hour1 + 6000*min1 + 100*sec1 + hunsec1; current->end = 360000*hour2 + 6000*min2 + 100*sec2 + hunsec2; + int num=0; + char *tmp; while (((tmp=strstr(line2, "\\n")) != NULL) || ((tmp=strstr(line2, "\\N")) != NULL) ){ - current->text[num]=(char *)malloc(tmp-line2+1); - strncpy (current->text[num], line2, tmp-line2); - current->text[num][tmp-line2]='\0'; + current->text[num] = strndup(line2, tmp-line2); line2=tmp+2; num++; current->lines++; @@ -591,8 +597,7 @@ static subtitle_t *sub_read_line_ssa(demux_sputext_t *this,subtitle_t *current) static subtitle_t *sub_read_line_pjs (demux_sputext_t *this, subtitle_t *current) { char line[LINE_LEN + 1]; - char text[LINE_LEN + 1]; - char *s, *d; + char *s; memset (current, 0, sizeof(subtitle_t)); @@ -618,6 +623,8 @@ static subtitle_t *sub_read_line_pjs (demux_sputext_t *this, subtitle_t *current return ERR; } /* copy the string to the text buffer */ + char text[LINE_LEN + 1]; + char *d = NULL; for (s++, d=text; *s && *s!='"'; s++, d++) *d=*s; *d=0; @@ -629,25 +636,26 @@ static subtitle_t *sub_read_line_pjs (demux_sputext_t *this, subtitle_t *current static subtitle_t *sub_read_line_mpsub (demux_sputext_t *this, subtitle_t *current) { char line[LINE_LEN + 1]; - float a,b; - int num=0; - char *p, *q; - do { - if (!read_line_from_input(this, line, LINE_LEN)) - return NULL; - } while (sscanf (line, "%f %f", &a, &b) !=2); - - this->mpsub_position += (a*100.0); - current->start = (int) this->mpsub_position; - this->mpsub_position += (b*100.0); - current->end = (int) this->mpsub_position; + { + float a,b; + do { + if (!read_line_from_input(this, line, LINE_LEN)) + return NULL; + } while (sscanf (line, "%f %f", &a, &b) !=2); + + this->mpsub_position += (a*100.0); + current->start = (int) this->mpsub_position; + this->mpsub_position += (b*100.0); + current->end = (int) this->mpsub_position; + } + int num = 0; while (num < SUB_MAX_TEXT) { if (!read_line_from_input(this, line, LINE_LEN)) return NULL; - p=line; + char *p=line; while (isspace(*p)) p++; @@ -657,17 +665,15 @@ static subtitle_t *sub_read_line_mpsub (demux_sputext_t *this, subtitle_t *curre if (eol(*p)) return NULL; + char *q; for (q=p; !eol(*q); q++); *q='\0'; - if (strlen(p)) { + if (*p) { current->text[num]=strdup(p); xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, ">%s<\n",p); current->lines = ++num; } else { - if (num) - return current; - else - return NULL; + return num ? current : NULL; } } @@ -675,11 +681,10 @@ static subtitle_t *sub_read_line_mpsub (demux_sputext_t *this, subtitle_t *curre } static subtitle_t *sub_read_line_aqt (demux_sputext_t *this, subtitle_t *current) { - char line[LINE_LEN + 1]; - memset (current, 0, sizeof(subtitle_t)); while (1) { + char line[LINE_LEN + 1]; /* try to locate next subtitle_t */ if (!read_line_from_input(this, line, LINE_LEN)) return NULL; @@ -687,6 +692,7 @@ static subtitle_t *sub_read_line_aqt (demux_sputext_t *this, subtitle_t *current break; } + char line[LINE_LEN + 1]; if (!read_line_from_input(this, line, LINE_LEN)) return NULL; @@ -708,255 +714,252 @@ static subtitle_t *sub_read_line_aqt (demux_sputext_t *this, subtitle_t *current } static subtitle_t *sub_read_line_jacobsub(demux_sputext_t *this, subtitle_t *current) { - char line1[LINE_LEN], line2[LINE_LEN], directive[LINE_LEN], *p, *q; - unsigned a1, a2, a3, a4, b1, b2, b3, b4, comment = 0; - static unsigned jacoTimeres = 30; - static int jacoShift = 0; - - memset(current, 0, sizeof(subtitle_t)); - memset(line1, 0, LINE_LEN); - memset(line2, 0, LINE_LEN); - memset(directive, 0, LINE_LEN); - while (!current->text[0]) { - if (!read_line_from_input(this, line1, LINE_LEN)) { - return NULL; - } - if (sscanf - (line1, "%u:%u:%u.%u %u:%u:%u.%u %" LINE_LEN_QUOT "[^\n\r]", &a1, &a2, &a3, &a4, - &b1, &b2, &b3, &b4, line2) < 9) { - if (sscanf(line1, "@%u @%u %" LINE_LEN_QUOT "[^\n\r]", &a4, &b4, line2) < 3) { - if (line1[0] == '#') { - int hours = 0, minutes = 0, seconds, delta, inverter = - 1; - unsigned units = jacoShift; - switch (toupper(line1[1])) { - case 'S': - if (isalpha(line1[2])) { - delta = 6; - } else { - delta = 2; - } - if (sscanf(&line1[delta], "%d", &hours)) { - if (hours < 0) { - hours *= -1; - inverter = -1; - } - if (sscanf(&line1[delta], "%*d:%d", &minutes)) { - if (sscanf - (&line1[delta], "%*d:%*d:%d", - &seconds)) { - sscanf(&line1[delta], "%*d:%*d:%*d.%d", - &units); - } else { - hours = 0; - sscanf(&line1[delta], "%d:%d.%d", - &minutes, &seconds, &units); - minutes *= inverter; - } - } else { - hours = minutes = 0; - sscanf(&line1[delta], "%d.%d", &seconds, - &units); - seconds *= inverter; - } - jacoShift = - ((hours * 3600 + minutes * 60 + - seconds) * jacoTimeres + - units) * inverter; - } - break; - case 'T': - if (isalpha(line1[2])) { - delta = 8; - } else { - delta = 2; - } - sscanf(&line1[delta], "%u", &jacoTimeres); - break; - } - } - continue; + char line1[LINE_LEN] = { 0, }, line2[LINE_LEN] = { 0, }, directive[LINE_LEN] = { 0, }, *p, *q; + unsigned a1, a2, a3, a4, b1, b2, b3, b4, comment = 0; + static unsigned jacoTimeres = 30; + static int jacoShift = 0; + + memset(current, 0, sizeof(subtitle_t)); + while (!current->text[0]) { + if (!read_line_from_input(this, line1, LINE_LEN)) { + return NULL; + } + if (sscanf + (line1, "%u:%u:%u.%u %u:%u:%u.%u %" LINE_LEN_QUOT "[^\n\r]", &a1, &a2, &a3, &a4, + &b1, &b2, &b3, &b4, line2) < 9) { + if (sscanf(line1, "@%u @%u %" LINE_LEN_QUOT "[^\n\r]", &a4, &b4, line2) < 3) { + if (line1[0] == '#') { + int hours = 0, minutes = 0, seconds, delta, inverter = + 1; + unsigned units = jacoShift; + switch (toupper(line1[1])) { + case 'S': + if (isalpha(line1[2])) { + delta = 6; } else { - current->start = - (unsigned long) ((a4 + jacoShift) * 100.0 / - jacoTimeres); - current->end = - (unsigned long) ((b4 + jacoShift) * 100.0 / - jacoTimeres); + delta = 2; } - } else { - current->start = - (unsigned - long) (((a1 * 3600 + a2 * 60 + a3) * jacoTimeres + a4 + - jacoShift) * 100.0 / jacoTimeres); - current->end = - (unsigned - long) (((b1 * 3600 + b2 * 60 + b3) * jacoTimeres + b4 + - jacoShift) * 100.0 / jacoTimeres); - } - current->lines = 0; - p = line2; - while ((*p == ' ') || (*p == '\t')) { - ++p; - } - if (isalpha(*p)||*p == '[') { - int cont, jLength; - - if (sscanf(p, "%s %" LINE_LEN_QUOT "[^\n\r]", directive, line1) < 2) - return ERR; - jLength = strlen(directive); - for (cont = 0; cont < jLength; ++cont) { - if (isalpha(*(directive + cont))) - *(directive + cont) = toupper(*(directive + cont)); - } - if ((strstr(directive, "RDB") != NULL) - || (strstr(directive, "RDC") != NULL) - || (strstr(directive, "RLB") != NULL) - || (strstr(directive, "RLG") != NULL)) { - continue; + if (sscanf(&line1[delta], "%d", &hours)) { + if (hours < 0) { + hours *= -1; + inverter = -1; + } + if (sscanf(&line1[delta], "%*d:%d", &minutes)) { + if (sscanf + (&line1[delta], "%*d:%*d:%d", + &seconds)) { + sscanf(&line1[delta], "%*d:%*d:%*d.%d", + &units); + } else { + hours = 0; + sscanf(&line1[delta], "%d:%d.%d", + &minutes, &seconds, &units); + minutes *= inverter; + } + } else { + hours = minutes = 0; + sscanf(&line1[delta], "%d.%d", &seconds, + &units); + seconds *= inverter; + } + jacoShift = + ((hours * 3600 + minutes * 60 + + seconds) * jacoTimeres + + units) * inverter; } - /* no alignment */ -#if 0 - if (strstr(directive, "JL") != NULL) { - current->alignment = SUB_ALIGNMENT_HLEFT; - } else if (strstr(directive, "JR") != NULL) { - current->alignment = SUB_ALIGNMENT_HRIGHT; + break; + case 'T': + if (isalpha(line1[2])) { + delta = 8; } else { - current->alignment = SUB_ALIGNMENT_HCENTER; + delta = 2; } + sscanf(&line1[delta], "%u", &jacoTimeres); + break; + } + } + continue; + } else { + current->start = + (unsigned long) ((a4 + jacoShift) * 100.0 / + jacoTimeres); + current->end = + (unsigned long) ((b4 + jacoShift) * 100.0 / + jacoTimeres); + } + } else { + current->start = + (unsigned + long) (((a1 * 3600 + a2 * 60 + a3) * jacoTimeres + a4 + + jacoShift) * 100.0 / jacoTimeres); + current->end = + (unsigned + long) (((b1 * 3600 + b2 * 60 + b3) * jacoTimeres + b4 + + jacoShift) * 100.0 / jacoTimeres); + } + current->lines = 0; + p = line2; + while ((*p == ' ') || (*p == '\t')) { + ++p; + } + if (isalpha(*p)||*p == '[') { + if (sscanf(p, "%s %" LINE_LEN_QUOT "[^\n\r]", directive, line1) < 2) + return ERR; + if ((strcasestr(directive, "RDB") != NULL) + || (strcasestr(directive, "RDC") != NULL) + || (strcasestr(directive, "RLB") != NULL) + || (strcasestr(directive, "RLG") != NULL)) { + continue; + } + /* no alignment */ +#if 0 + if (strcasestr(directive, "JL") != NULL) { + current->alignment = SUB_ALIGNMENT_HLEFT; + } else if (strcasestr(directive, "JR") != NULL) { + current->alignment = SUB_ALIGNMENT_HRIGHT; + } else { + current->alignment = SUB_ALIGNMENT_HCENTER; + } #endif - strcpy(line2, line1); - p = line2; + strcpy(line2, line1); + p = line2; + } + for (q = line1; (!eol(*p)) && (current->lines < SUB_MAX_TEXT); ++p) { + switch (*p) { + case '{': + comment++; + break; + case '}': + if (comment) { + --comment; + /* the next line to get rid of a blank after the comment */ + if ((*(p + 1)) == ' ') + p++; } - for (q = line1; (!eol(*p)) && (current->lines < SUB_MAX_TEXT); ++p) { - switch (*p) { - case '{': - comment++; - break; - case '}': - if (comment) { - --comment; - /* the next line to get rid of a blank after the comment */ - if ((*(p + 1)) == ' ') - p++; - } - break; - case '~': - if (!comment) { - *q = ' '; - ++q; - } - break; - case ' ': - case '\t': - if ((*(p + 1) == ' ') || (*(p + 1) == '\t')) - break; - if (!comment) { - *q = ' '; - ++q; - } - break; - case '\\': - if (*(p + 1) == 'n') { - *q = '\0'; - q = line1; - current->text[current->lines++] = strdup(line1); - ++p; - break; - } - if ((toupper(*(p + 1)) == 'C') - || (toupper(*(p + 1)) == 'F')) { - ++p,++p; - break; - } - if ((*(p + 1) == 'B') || (*(p + 1) == 'b') || - /* actually this means "insert current date here" */ - (*(p + 1) == 'D') || - (*(p + 1) == 'I') || (*(p + 1) == 'i') || - (*(p + 1) == 'N') || - /* actually this means "insert current time here" */ - (*(p + 1) == 'T') || - (*(p + 1) == 'U') || (*(p + 1) == 'u')) { - ++p; - break; - } - if ((*(p + 1) == '\\') || - (*(p + 1) == '~') || (*(p + 1) == '{')) { - ++p; - } else if (eol(*(p + 1))) { - if (!read_line_from_input(this, directive, LINE_LEN)) - return NULL; - trail_space(directive); - strncat(line2, directive, - ((LINE_LEN > 511) ? LINE_LEN-1 : 511) - - strlen(line2)); - break; - } - default: - if (!comment) { - *q = *p; - ++q; - } - } + break; + case '~': + if (!comment) { + *q = ' '; + ++q; + } + break; + case ' ': + case '\t': + if ((*(p + 1) == ' ') || (*(p + 1) == '\t')) + break; + if (!comment) { + *q = ' '; + ++q; } - *q = '\0'; - current->text[current->lines] = strdup(line1); + break; + case '\\': + if (*(p + 1) == 'n') { + *q = '\0'; + q = line1; + current->text[current->lines++] = strdup(line1); + ++p; + break; + } + if ((toupper(*(p + 1)) == 'C') + || (toupper(*(p + 1)) == 'F')) { + ++p,++p; + break; + } + if ((*(p + 1) == 'B') || (*(p + 1) == 'b') || + /* actually this means "insert current date here" */ + (*(p + 1) == 'D') || + (*(p + 1) == 'I') || (*(p + 1) == 'i') || + (*(p + 1) == 'N') || + /* actually this means "insert current time here" */ + (*(p + 1) == 'T') || + (*(p + 1) == 'U') || (*(p + 1) == 'u')) { + ++p; + break; + } + if ((*(p + 1) == '\\') || + (*(p + 1) == '~') || (*(p + 1) == '{')) { + ++p; + } else if (eol(*(p + 1))) { + if (!read_line_from_input(this, directive, LINE_LEN)) + return NULL; + trail_space(directive); + strncat(line2, directive, + ((LINE_LEN > 511) ? LINE_LEN-1 : 511) + - strlen(line2)); + break; + } + default: + if (!comment) { + *q = *p; + ++q; + } + } } - current->lines++; - return current; + *q = '\0'; + if (current->lines < SUB_MAX_TEXT) + current->text[current->lines] = strdup(line1); + else + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "Too many lines in a subtitle\n"); + } + current->lines++; + return current; } static subtitle_t *sub_read_line_subviewer2(demux_sputext_t *this, subtitle_t *current) { + char *p=NULL; + + while (!current->text[0]) { char line[LINE_LEN+1]; - int a1,a2,a3,a4; - char *p=NULL; - int i,len; - - while (!current->text[0]) { - if (!read_line_from_input(this, line, LINE_LEN)) return NULL; - if (line[0]!='{') - continue; - if ((len=sscanf (line, "{T %d:%d:%d:%d",&a1,&a2,&a3,&a4)) < 4) - continue; - current->start = a1*360000+a2*6000+a3*100+a4/10; - for (i=0; i<SUB_MAX_TEXT;) { - if (!read_line_from_input(this, line, LINE_LEN)) break; - if (line[0]=='}') break; - len=0; - for (p=line; *p!='\n' && *p!='\r' && *p; ++p,++len); - if (len) { - current->text[i]=(char *)malloc (len+1); - if (!current->text[i]) return ERR; - strncpy (current->text[i], line, len); current->text[i][len]='\0'; - ++i; - } else { - break; - } - } - current->lines=i; + if (!read_line_from_input(this, line, LINE_LEN)) return NULL; + if (line[0]!='{') + continue; + + { + int a1,a2,a3,a4; + const int len = sscanf (line, "{T %d:%d:%d:%d",&a1,&a2,&a3,&a4); + if (len < 4) + continue; + current->start = a1*360000+a2*6000+a3*100+a4/10; } - return current; + + int i; + for (i=0; i<SUB_MAX_TEXT;) { + if (!read_line_from_input(this, line, LINE_LEN)) break; + if (line[0]=='}') break; + size_t len=0; + for (p=line; *p!='\n' && *p!='\r' && *p; ++p,++len); + if (len) { + current->text[i] = strndup(line, len); + if (!current->text[i]) return ERR; + ++i; + } else { + break; + } + } + current->lines=i; + } + return current; } static subtitle_t *sub_read_line_subrip09 (demux_sputext_t *this, subtitle_t *current) { - char line[LINE_LEN + 1]; - char *next; - int h, m, s; - int i; - memset (current, 0, sizeof(subtitle_t)); - - do { - if (!read_line_from_input (this, line, LINE_LEN)) return NULL; - } while (sscanf (line, "[%d:%d:%d]", &h, &m, &s) != 3); + int h, m, s; + { + char line[LINE_LEN + 1]; + do { + if (!read_line_from_input (this, line, LINE_LEN)) return NULL; + } while (sscanf (line, "[%d:%d:%d]", &h, &m, &s) != 3); + } + + char line[LINE_LEN + 1]; if (!read_line_from_input (this, line, LINE_LEN)) return NULL; current->start = 360000 * h + 6000 * m + 100 * s; current->end = -1; - next=line; - i=0; + char *next = line; + int i=0; while ((next = sub_readtext (next, &(current->text[i])))) { if (current->text[i]==ERR) return ERR; i++; @@ -976,22 +979,27 @@ static subtitle_t *sub_read_line_subrip09 (demux_sputext_t *this, subtitle_t *cu */ static subtitle_t *sub_read_line_mpl2(demux_sputext_t *this, subtitle_t *current) { - char line[LINE_LEN+1]; char line2[LINE_LEN+1]; - char *p, *next; - int i; memset (current, 0, sizeof(subtitle_t)); - do { - if (!read_line_from_input (this, line, LINE_LEN)) return NULL; - } while ((sscanf (line, + + { + char line[LINE_LEN+1]; + long start, end; + + do { + if (!read_line_from_input (this, line, LINE_LEN)) return NULL; + } while ((sscanf (line, "[%ld][%ld]%[^\r\n]", - &(current->start), &(current->end), line2) < 3)); - current->start *= 10; - current->end *= 10; - p=line2; + &start, &end, line2) < 3)); + + current->start = start * 10; + current->end = end * 10; + } + + char *p = line2, *next = p; + int i = 0; - next=p, i=0; while ((next = sub_readtext (next, &(current->text[i])))) { if (current->text[i] == ERR) {return ERR;} i++; @@ -1009,16 +1017,13 @@ static subtitle_t *sub_read_line_mpl2(demux_sputext_t *this, subtitle_t *current static int sub_autodetect (demux_sputext_t *this) { - - char line[LINE_LEN + 1]; - int i, j=0; - char p; - - while (j < 100) { - j++; + int j; + for(j = 1; j < 100; j++) { + char line[LINE_LEN + 1]; if (!read_line_from_input(this, line, LINE_LEN)) return FORMAT_UNKNOWN; + int i; if ((sscanf (line, "{%d}{}", &i)==1) || (sscanf (line, "{%d}{%d}", &i, &i)==2)) { this->uses_time=0; @@ -1078,11 +1083,14 @@ static int sub_autodetect (demux_sputext_t *this) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "mpsub subtitle format detected\n"); return FORMAT_MPSUB; } + + char p; if (sscanf (line, "FORMAT=TIM%c", &p)==1 && p=='E') { this->uses_time=1; xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "mpsub subtitle format detected\n"); return FORMAT_MPSUB; } + if (strstr (line, "-->>")) { this->uses_time=0; xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "aqtitle subtitle format detected\n"); @@ -1116,9 +1124,6 @@ static int sub_autodetect (demux_sputext_t *this) { static subtitle_t *sub_read_file (demux_sputext_t *this) { - int n_max; - int timeout; - subtitle_t *first; subtitle_t * (*func[])(demux_sputext_t *this,subtitle_t *dest)= { sub_read_line_microdvd, @@ -1159,23 +1164,23 @@ static subtitle_t *sub_read_file (demux_sputext_t *this) { } this->buflen = 0; - this->num=0;n_max=32; - first = (subtitle_t *) xine_xmalloc(n_max*sizeof(subtitle_t)); + this->num=0; + int n_max=32; + subtitle_t *first = calloc(n_max, sizeof(subtitle_t)); if(!first) return NULL; - timeout = ((demux_sputext_class_t *) - (this->demux_plugin.demux_class))->max_timeout; - if (this->uses_time) timeout *= 100; - else timeout *= 10; - while(1) { - subtitle_t *sub; + const int timeout = + (((demux_sputext_class_t *) + (this->demux_plugin.demux_class))->max_timeout) * + (this->uses_time ? 100 : 10); + while(1) { if(this->num>=n_max){ n_max+=16; first=realloc(first,n_max*sizeof(subtitle_t)); } - sub = func[this->format] (this, &first[this->num]); + subtitle_t *sub = func[this->format] (this, &first[this->num]); if (!sub) break; /* EOF */ @@ -1223,31 +1228,29 @@ static subtitle_t *sub_read_file (demux_sputext_t *this) { static int demux_sputext_next (demux_sputext_t *this_gen) { demux_sputext_t *this = (demux_sputext_t *) this_gen; - buf_element_t *buf; - uint32_t *val; - char *str; - subtitle_t *sub; - int line; if (this->cur >= this->num) return 0; - sub = &this->subtitles[this->cur]; + subtitle_t *sub = &this->subtitles[this->cur]; - buf = this->stream->video_fifo->buffer_pool_alloc(this->stream->video_fifo); + buf_element_t *buf = this->stream->video_fifo->buffer_pool_alloc(this->stream->video_fifo); buf->type = BUF_SPU_TEXT; buf->pts = 0; - val = (uint32_t * )buf->content; + uint32_t *val = (uint32_t * )buf->content; *val++ = sub->lines; *val++ = this->uses_time; *val++ = (this->uses_time) ? sub->start * 10 : sub->start; *val++ = (this->uses_time) ? sub->end * 10 : sub->end; - str = (char *)val; + char *str = (char *)val; + + /** @FIXME The way this works seems wrong, SUB_BUFSIZE-1 is not the + right maximum, I think. */ + int line; for (line = 0; line < sub->lines; line++, str+=strlen(str)+1) { - if( strlen(sub->text[line]) > SUB_BUFSIZE ) - sub->text[line][SUB_BUFSIZE] = '\0'; - strcpy(str, sub->text[line]); + strncpy(str, sub->text[line], SUB_BUFSIZE-1); + str[SUB_BUFSIZE-1] = '\0'; } this->stream->video_fifo->put(this->stream->video_fifo, buf); @@ -1258,9 +1261,10 @@ static int demux_sputext_next (demux_sputext_t *this_gen) { static void demux_sputext_dispose (demux_plugin_t *this_gen) { demux_sputext_t *this = (demux_sputext_t *) this_gen; - int i, l; - + + int i; for (i = 0; i < this->num; i++) { + int l; for (l = 0; l < this->subtitles[i].lines; l++) free(this->subtitles[i].text[l]); } @@ -1276,11 +1280,9 @@ static int demux_sputext_get_status (demux_plugin_t *this_gen) { static int demux_sputext_get_stream_length (demux_plugin_t *this_gen) { demux_sputext_t *this = (demux_sputext_t *) this_gen; - if( this->uses_time && this->num ) { - return this->subtitles[this->num-1].end * 10; - } else { - return 0; - } + return ( this->uses_time && this->num ) ? + this->subtitles[this->num-1].end * 10 : + 0; } static int demux_sputext_send_chunk (demux_plugin_t *this_gen) { @@ -1313,8 +1315,6 @@ static int demux_sputext_seek (demux_plugin_t *this_gen, static void demux_sputext_send_headers(demux_plugin_t *this_gen) { demux_sputext_t *this = (demux_sputext_t*)this_gen; - buf_element_t *buf; - lprintf("send_headers() called\n"); @@ -1323,7 +1323,7 @@ static void demux_sputext_send_headers(demux_plugin_t *this_gen) { _x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_AUDIO, 0); /* enable the SPU channel */ - buf = this->stream->video_fifo->buffer_pool_alloc(this->stream->video_fifo); + buf_element_t *buf = this->stream->video_fifo->buffer_pool_alloc(this->stream->video_fifo); buf->type = BUF_CONTROL_SPU_CHANNEL; buf->decoder_info[0] = buf->decoder_info[1] = buf->decoder_info[2] = 0; this->stream->video_fifo->put(this->stream->video_fifo, buf); @@ -1358,7 +1358,7 @@ static demux_plugin_t *open_demux_plugin (demux_class_t *class_gen, xine_stream_ lprintf("open_plugin() called\n"); - this = xine_xmalloc (sizeof (demux_sputext_t)); + this = calloc(1, sizeof (demux_sputext_t)); this->stream = stream; this->input = input; @@ -1460,7 +1460,7 @@ static void *init_sputext_demux_class (xine_t *xine, void *data) { lprintf("initializing\n"); - this = xine_xmalloc (sizeof (demux_sputext_class_t)); + this = calloc(1, sizeof (demux_sputext_class_t)); this->demux_class.open_plugin = open_demux_plugin; this->demux_class.get_description = get_demux_description; diff --git a/src/libsputext/xine_sputext_decoder.c b/src/libsputext/xine_sputext_decoder.c index d0cab9cbf..7d5e73ce9 100644 --- a/src/libsputext/xine_sputext_decoder.c +++ b/src/libsputext/xine_sputext_decoder.c @@ -18,6 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <stdio.h> #include <unistd.h> @@ -63,7 +67,7 @@ #define rgb2yuv(R,G,B) ((((((66*R+129*G+25*B+128)>>8)+16)<<8)|(((112*R-94*G-18*B+128)>>8)+128))<<8|(((-38*R-74*G+112*B+128)>>8)+128)) -static uint32_t sub_palette[22]={ +static const uint32_t sub_palette[22]={ /* RED */ rgb2yuv(0,0,0), rgb2yuv(0,0,0), @@ -90,7 +94,7 @@ static uint32_t sub_palette[22]={ rgb2yuv(0,170,255) }; -static uint8_t sub_trans[22]={ +static const uint8_t sub_trans[22]={ 0, 0, 3, 6, 8, 10, 12, 14, 15, 15, 15, 0, 0, 3, 6, 8, 10, 12, 14, 15, 15, 15 }; @@ -185,7 +189,7 @@ static inline char *get_font (sputext_class_t *class) } static void update_font_size (sputext_decoder_t *this, int force_update) { - static int sizes[SUBTITLE_SIZE_NUM] = { 16, 20, 24, 32, 48, 64 }; + static const int sizes[SUBTITLE_SIZE_NUM] = { 16, 20, 24, 32, 48, 64 }; if ((this->subtitle_size != this->class->subtitle_size) || (this->vertical_offset != this->class->vertical_offset) || @@ -214,11 +218,9 @@ static void update_font_size (sputext_decoder_t *this, int force_update) { } static void update_output_size (sputext_decoder_t *this) { - int unscaled; - - unscaled = this->class->use_unscaled && - (this->stream->video_out->get_capabilities(this->stream->video_out) & - VO_CAP_UNSCALED_OVERLAY); + const int unscaled = this->class->use_unscaled && + (this->stream->video_out->get_capabilities(this->stream->video_out) & + VO_CAP_UNSCALED_OVERLAY); if( unscaled != this->unscaled ) { this->unscaled = unscaled; @@ -303,7 +305,7 @@ static void update_output_size (sputext_decoder_t *this) { } } -static int parse_utf8_size(unsigned char *c) +static int parse_utf8_size(const uint8_t *c) { if ( c[0]<0x80 ) return 1; @@ -329,13 +331,8 @@ static int parse_utf8_size(unsigned char *c) static int ogm_render_line_internal(sputext_decoder_t *this, int x, int y, const char *text, int render) { - int i = 0, w, value; - char* end; - char letter[5]={0, 0, 0, 0, 0}; - const char *encoding = this->buf_encoding ? this->buf_encoding - : this->class->src_encoding; - int shift, isutf8 = !strcmp(encoding, "utf-8"); - size_t length = strlen (text); + const size_t length = strlen (text); + size_t i = 0; while (i <= length) { @@ -379,6 +376,7 @@ static int ogm_render_line_internal(sputext_decoder_t *this, int x, int y, const if (text[i] == '{') { if (!strncmp("{\\", text+i, 2)) { + int value; if (sscanf(text+i, "{\\b%d}", &value) == 1) { if (render) { @@ -395,7 +393,7 @@ static int ogm_render_line_internal(sputext_decoder_t *this, int x, int y, const this->current_osd_text = OSD_TEXT1; } } - end = strstr(text+i+2, "}"); + char *const end = strstr(text+i+2, "}"); if (end) { i=end-text+1; continue; @@ -403,15 +401,20 @@ static int ogm_render_line_internal(sputext_decoder_t *this, int x, int y, const } } - shift = isutf8 ? parse_utf8_size (&text[i]) : 1; + char letter[5]; + const char *const encoding = this->buf_encoding ? : this->class->src_encoding; + const int isutf8 = !strcmp(encoding, "utf-8"); + const size_t shift = isutf8 ? parse_utf8_size (&text[i]) : 1; memcpy(letter,&text[i],shift); letter[shift]=0; if (render) this->renderer->render_text(this->osd, x, y, letter, this->current_osd_text); - this->renderer->get_text_size(this->osd, letter, &w, &value); - x=x+w; - i+=shift; + + int w, dummy; + this->renderer->get_text_size(this->osd, letter, &w, &dummy); + x += w; + i += shift; } return x; @@ -547,15 +550,9 @@ static int is_cjk_encoding(const char *enc) { static void draw_subtitle(sputext_decoder_t *this, int64_t sub_start, int64_t sub_end ) { - int line, y; - int font_size; - char *font; - const char *encoding = (this->buf_encoding)?this->buf_encoding: - this->class->src_encoding; + int y; int sub_x, sub_y, max_width; int alignment; - int rebuild_all; - _x_assert(this->renderer != NULL); if ( ! this->renderer ) @@ -565,21 +562,20 @@ static void draw_subtitle(sputext_decoder_t *this, int64_t sub_start, int64_t su update_font_size(this, 0); - font = get_font (this->class); + const char *const font = get_font (this->class); if( strcmp(this->font, font) ) { strncpy(this->font, font, FILENAME_MAX); this->font[FILENAME_MAX - 1] = '\0'; this->renderer->set_font (this->osd, font, this->font_size); } - font_size = this->font_size; - if (this->buf_encoding) - this->renderer->set_encoding(this->osd, this->buf_encoding); - else - this->renderer->set_encoding(this->osd, this->class->src_encoding); + int font_size = this->font_size; + const char *const encoding = this->buf_encoding ? : this->class->src_encoding; + this->renderer->set_encoding(this->osd, encoding); - rebuild_all = 0; + int rebuild_all = 0; + int line; for (line = 0; line < this->lines; line++) { int line_width = ogm_get_width(this, this->text[line]); @@ -637,30 +633,27 @@ static void draw_subtitle(sputext_decoder_t *this, int64_t sub_start, int64_t su /* regenerate all the lines to find something that better fits */ if (rebuild_all) { - int line, line_width; - char *stream, *current_cut, *best_cut; - char buf[SUB_BUFSIZE * SUB_MAX_TEXT]; + char buf[SUB_BUFSIZE * SUB_MAX_TEXT] = { 0, }; - buf[0] = 0; + int line; for(line = 0; line < this->lines; line++) { - int len = strlen(buf); - if (len) { + const size_t len = strlen(buf); + if (len) buf[len] = ' '; - len++; - } - strncpy(buf + len, this->text[line], SUB_BUFSIZE); - *(buf + len + SUB_BUFSIZE) = 0; + + strncat(buf, this->text[line], SUB_BUFSIZE-len-1); } - stream = buf; + char *stream = buf; this->lines = 0; + char *current_cut, *best_cut; do { if (this->lines + 1 < SUB_MAX_TEXT) { /* find the longest sequence witch fit */ - line_width = 0; + int line_width = 0; current_cut = stream; best_cut = NULL; while (line_width < max_width) { @@ -1081,7 +1074,7 @@ static spu_decoder_t *sputext_class_open_plugin (spu_decoder_class_t *class_gen, sputext_class_t *class = (sputext_class_t *)class_gen; sputext_decoder_t *this ; - this = (sputext_decoder_t *) xine_xmalloc (sizeof (sputext_decoder_t)); + this = (sputext_decoder_t *) calloc(1, sizeof(sputext_decoder_t)); this->spu_decoder.decode_data = spudec_decode_data; this->spu_decoder.reset = spudec_reset; @@ -1135,7 +1128,7 @@ static void *init_spu_decoder_plugin (xine_t *xine, void *data) { lprintf("init class\n"); - this = (sputext_class_t *) xine_xmalloc (sizeof (sputext_class_t)); + this = (sputext_class_t *) calloc(1, sizeof(sputext_class_t)); this->class.open_plugin = sputext_class_open_plugin; this->class.get_identifier = sputext_class_get_identifier; diff --git a/src/libw32dll/Makefile.am b/src/libw32dll/Makefile.am index e7f655888..5036851a3 100644 --- a/src/libw32dll/Makefile.am +++ b/src/libw32dll/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CFLAGS = -I$(srcdir)/wine -DWIN32_PATH=\"@w32_path@\" $(VISIBILITY_FLAG) diff --git a/src/libw32dll/qt_decoder.c b/src/libw32dll/qt_decoder.c index 3053b2b68..99e2ba9d4 100644 --- a/src/libw32dll/qt_decoder.c +++ b/src/libw32dll/qt_decoder.c @@ -553,7 +553,7 @@ static audio_decoder_t *qta_open_plugin (audio_decoder_class_t *class_gen, qta_decoder_t *this ; - this = (qta_decoder_t *) xine_xmalloc (sizeof (qta_decoder_t)); + this = (qta_decoder_t *) calloc(1, sizeof(qta_decoder_t)); this->audio_decoder.decode_data = qta_decode_data; this->audio_decoder.reset = qta_reset; @@ -592,7 +592,7 @@ static void *qta_init_class (xine_t *xine, void *data) { pthread_once (&once_control, init_routine); - this = (qta_class_t *) xine_xmalloc (sizeof (qta_class_t)); + this = (qta_class_t *) calloc(1, sizeof(qta_class_t)); this->decoder_class.open_plugin = qta_open_plugin; this->decoder_class.get_identifier = qta_get_identifier; @@ -1063,7 +1063,7 @@ static video_decoder_t *qtv_open_plugin (video_decoder_class_t *class_gen, qtv_class_t *cls = (qtv_class_t *) class_gen; qtv_decoder_t *this ; - this = (qtv_decoder_t *) xine_xmalloc (sizeof (qtv_decoder_t)); + this = (qtv_decoder_t *) calloc(1, sizeof(qtv_decoder_t)); this->video_decoder.decode_data = qtv_decode_data; this->video_decoder.flush = qtv_flush; @@ -1116,7 +1116,7 @@ static void *qtv_init_class (xine_t *xine, void *data) { pthread_once (&once_control, init_routine); - this = (qtv_class_t *) xine_xmalloc (sizeof (qtv_class_t)); + this = (qtv_class_t *) calloc(1, sizeof(qtv_class_t)); this->decoder_class.open_plugin = qtv_open_plugin; this->decoder_class.get_identifier = qtv_get_identifier; diff --git a/src/libw32dll/w32codec.c b/src/libw32dll/w32codec.c index 88790ebc7..e61ebcb82 100644 --- a/src/libw32dll/w32codec.c +++ b/src/libw32dll/w32codec.c @@ -21,6 +21,10 @@ * DirectShow support by Miguel Freitas (Nov/2001) * DMO support (Dez/2002) */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include <stdlib.h> #include <stdio.h> @@ -1550,7 +1554,7 @@ static video_decoder_t *open_video_decoder_plugin (video_decoder_class_t *class_ w32v_decoder_t *this ; - this = (w32v_decoder_t *) xine_xmalloc (sizeof (w32v_decoder_t)); + this = (w32v_decoder_t *) calloc(1, sizeof(w32v_decoder_t)); this->video_decoder.decode_data = w32v_decode_data; this->video_decoder.flush = w32v_flush; @@ -1593,7 +1597,7 @@ static void *init_video_decoder_class (xine_t *xine, void *data) { cfg = xine->config; if ((win32_def_path = get_win32_codecs_path(cfg)) == NULL) return NULL; - this = (w32v_class_t *) xine_xmalloc (sizeof (w32v_class_t)); + this = (w32v_class_t *) calloc(1, sizeof(w32v_class_t)); this->decoder_class.open_plugin = open_video_decoder_plugin; this->decoder_class.get_identifier = get_video_identifier; @@ -1614,7 +1618,7 @@ static audio_decoder_t *open_audio_decoder_plugin (audio_decoder_class_t *class_ w32a_decoder_t *this ; - this = (w32a_decoder_t *) xine_xmalloc (sizeof (w32a_decoder_t)); + this = (w32a_decoder_t *) calloc(1, sizeof(w32a_decoder_t)); this->audio_decoder.decode_data = w32a_decode_data; this->audio_decoder.reset = w32a_reset; @@ -1655,7 +1659,7 @@ static void *init_audio_decoder_class (xine_t *xine, void *data) { cfg = xine->config; if ((win32_def_path = get_win32_codecs_path(cfg)) == NULL) return NULL; - this = (w32a_class_t *) xine_xmalloc (sizeof (w32a_class_t)); + this = (w32a_class_t *) calloc(1, sizeof(w32a_class_t)); this->decoder_class.open_plugin = open_audio_decoder_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libw32dll/wine/Makefile.am b/src/libw32dll/wine/Makefile.am index 63da4068e..70341a502 100644 --- a/src/libw32dll/wine/Makefile.am +++ b/src/libw32dll/wine/Makefile.am @@ -9,7 +9,8 @@ noinst_LTLIBRARIES = $(wine_lib) AM_CFLAGS = $(X_CFLAGS) @W32_NO_OPTIMIZE@ \ -Wmissing-prototypes -Wimplicit-function-declaration \ -DWIN32_PATH=\"@w32_path@\" -I$(srcdir)/.. -D__WINE__ \ - -Ddbg_printf=__vprintf -DTRACE=__vprintf + -Ddbg_printf=__vprintf -DTRACE=__vprintf \ + -I$(top_srcdir)/src/xine-utils # CFLAGS is here to filter out -fomit-frame-pointer, # -finline-functions and -frename-registers because they cause bad diff --git a/src/libw32dll/wine/driver.c b/src/libw32dll/wine/driver.c index ef8761628..296fcd25a 100644 --- a/src/libw32dll/wine/driver.c +++ b/src/libw32dll/wine/driver.c @@ -1,4 +1,4 @@ -#include <config.h> +#include "config.h" #include <stdio.h> #ifdef HAVE_MALLOC_H #include <malloc.h> diff --git a/src/libw32dll/wine/elfdll.c b/src/libw32dll/wine/elfdll.c index 7853ffe71..e81467b5a 100644 --- a/src/libw32dll/wine/elfdll.c +++ b/src/libw32dll/wine/elfdll.c @@ -3,7 +3,7 @@ * * Copyright 1999 Bertho A. Stultiens */ -#include <config.h> +#include "config.h" #ifdef HAVE_LIBDL diff --git a/src/libw32dll/wine/pe_image.c b/src/libw32dll/wine/pe_image.c index c99bbaed0..1366cc396 100644 --- a/src/libw32dll/wine/pe_image.c +++ b/src/libw32dll/wine/pe_image.c @@ -900,7 +900,7 @@ void PE_UnloadLibrary(WINE_MODREF *wm) */ static void extend_stack_for_dll_alloca(void) { -#ifndef __FreeBSD__ +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) void* mem=alloca(0x20000); *(int*)mem=0x1234; #endif diff --git a/src/libw32dll/wine/pe_resource.c b/src/libw32dll/wine/pe_resource.c index 6acfef2f0..16dc85389 100644 --- a/src/libw32dll/wine/pe_resource.c +++ b/src/libw32dll/wine/pe_resource.c @@ -9,7 +9,7 @@ * Copyright 1995 Alexandre Julliard * Copyright 1997 Marcus Meissner */ -#include <config.h> +#include "config.h" #include <stdlib.h> #include <sys/types.h> diff --git a/src/libw32dll/wine/registry.c b/src/libw32dll/wine/registry.c index 0f91499b3..0ccf3de9b 100644 --- a/src/libw32dll/wine/registry.c +++ b/src/libw32dll/wine/registry.c @@ -311,8 +311,7 @@ static void init_registry(void) localregpathname = regpathname; #else #ifdef XINE_MAJOR - localregpathname = (char *)malloc(strlen(xine_get_homedir()) + 21); - sprintf(localregpathname, "%s/.xine/win32registry", xine_get_homedir()); + asprintf(&localregpathname, "%s/.xine/win32registry", xine_get_homedir()); #else // regpathname is an external pointer // diff --git a/src/libw32dll/wine/resource.c b/src/libw32dll/wine/resource.c index 9d4fa80bb..a38c1dd1e 100644 --- a/src/libw32dll/wine/resource.c +++ b/src/libw32dll/wine/resource.c @@ -4,7 +4,7 @@ * Copyright 1993 Robert J. Amstadt * Copyright 1995 Alexandre Julliard */ -#include <config.h> +#include "config.h" #include <assert.h> #include <stdio.h> diff --git a/src/libw32dll/wine/vfl.c b/src/libw32dll/wine/vfl.c index e8eb7969f..f509995de 100644 --- a/src/libw32dll/wine/vfl.c +++ b/src/libw32dll/wine/vfl.c @@ -1,7 +1,7 @@ /* * Copyright 1998 Marcus Meissner */ -#include <config.h> +#include "config.h" #include <stdio.h> #include <stdlib.h> diff --git a/src/libw32dll/wine/win32.c b/src/libw32dll/wine/win32.c index 3b0941391..d9744ae35 100644 --- a/src/libw32dll/wine/win32.c +++ b/src/libw32dll/wine/win32.c @@ -1430,7 +1430,7 @@ static void WINAPI expDeleteCriticalSection(CRITICAL_SECTION *c) } static int WINAPI expGetCurrentThreadId() { - dbgprintf("GetCurrentThreadId() => %ld\n", pthread_self()); + dbgprintf("GetCurrentThreadId() => %ld\n", (long int)pthread_self()); return (int)pthread_self(); } static int WINAPI expGetCurrentProcess() @@ -2134,7 +2134,6 @@ static const char* WINAPI expGetCommandLineA() dbgprintf("GetCommandLineA() => \"c:\\aviplay.exe\"\n"); return "c:\\aviplay.exe"; } -static short envs[]={'p', 'a', 't', 'h', ' ', 'c', ':', '\\', 0, 0}; static LPWSTR WINAPI expGetEnvironmentStringsW() { dbgprintf("GetEnvironmentStringsW() => 0\n"); @@ -3491,9 +3490,9 @@ static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2, if(strstr(cs1, ".qtx")) { int result; - char* tmp=(char*)malloc(strlen(win32_def_path)+250); char* x=strrchr(cs1,'\\'); - sprintf(tmp,"%s/%s",win32_def_path,x?(x+1):cs1); + char* tmp; + asprintf(&tmp,"%s/%s",win32_def_path,x?(x+1):cs1); // printf("### Open: %s -> %s\n",cs1,tmp); result=open(tmp, O_RDONLY); free(tmp); @@ -3998,7 +3997,7 @@ static int XINE_FORMAT_PRINTF(2, 3) expsprintf(char* str, const char* format, .. va_end(args); return r; } -static int XINE_FORMAT_PRINTF(2, 3) expsscanf(const char* str, const char* format, ...) +static int XINE_FORMAT_SCANF(2, 3) expsscanf(const char* str, const char* format, ...) { va_list args; int r; @@ -4162,7 +4161,7 @@ static void* expmemset(void* dest, int c, size_t n) static time_t exptime(time_t* t) { time_t result = time(t); - dbgprintf("time(%p) => %ld\n", t, result); + dbgprintf("time(%p) => %ld\n", t, (long int)result); return result; } @@ -5058,11 +5057,9 @@ struct libs libraries[]={ LL(ddraw) #endif }; -#if defined(__CYGWIN__) || defined(__OS2__) || defined (__OpenBSD__) -#define MANGLE(a) "_" #a -#else -#define MANGLE(a) #a -#endif + +#include "mangle.h" + static void ext_stubs(void) { // expects: diff --git a/src/libxineadec/Makefile.am b/src/libxineadec/Makefile.am index d502b7955..ae261e60c 100644 --- a/src/libxineadec/Makefile.am +++ b/src/libxineadec/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common EXTRA_DIST = fooaudio.c @@ -39,7 +40,7 @@ xineplug_decode_lpcm_la_CFLAGS = $(VISIBILITY_FLAG) xineplug_decode_lpcm_la_LIBADD = $(XINE_LIB) xineplug_decode_vorbis_la_SOURCES = xine_vorbis_decoder.c -xineplug_decode_vorbis_la_LIBADD = $(XINE_LIB) $(VORBIS_LIBS) $(OGG_LIBS) +xineplug_decode_vorbis_la_LIBADD = $(XINE_LIB) $(VORBIS_LIBS) $(OGG_LIBS) $(LTLIBINTL) xineplug_decode_vorbis_la_CFLAGS = $(VISIBILITY_FLAG) $(VORBIS_CFLAGS) xineplug_decode_speex_la_SOURCES = xine_speex_decoder.c diff --git a/src/libxineadec/fooaudio.c b/src/libxineadec/fooaudio.c index 5ab4fa1f6..53fcef801 100644 --- a/src/libxineadec/fooaudio.c +++ b/src/libxineadec/fooaudio.c @@ -22,6 +22,10 @@ * place of the data it should actually send. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -91,7 +95,7 @@ static void fooaudio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) this->channels = buf->decoder_info[3]; /* initialize the data accumulation buffer */ - this->buf = xine_xmalloc(AUDIOBUFSIZE); + this->buf = calloc(1, AUDIOBUFSIZE); this->bufsize = AUDIOBUFSIZE; this->size = 0; @@ -255,7 +259,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre fooaudio_decoder_t *this ; - this = (fooaudio_decoder_t *) xine_xmalloc (sizeof (fooaudio_decoder_t)); + this = (fooaudio_decoder_t *) calloc(1, sizeof(fooaudio_decoder_t)); /* connect the member functions */ this->audio_decoder.decode_data = fooaudio_decode_data; diff --git a/src/libxineadec/gsm610.c b/src/libxineadec/gsm610.c index 23c0d2104..c67382bc5 100644 --- a/src/libxineadec/gsm610.c +++ b/src/libxineadec/gsm610.c @@ -101,7 +101,7 @@ static void gsm610_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { if (buf->decoder_flags & BUF_FLAG_STDHEADER) { this->sample_rate = buf->decoder_info[1]; - this->buf = xine_xmalloc(AUDIOBUFSIZE); + this->buf = calloc(1, AUDIOBUFSIZE); this->bufsize = AUDIOBUFSIZE; this->size = 0; @@ -233,7 +233,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre gsm610_decoder_t *this ; - this = (gsm610_decoder_t *) xine_xmalloc (sizeof (gsm610_decoder_t)); + this = (gsm610_decoder_t *) calloc(1, sizeof(gsm610_decoder_t)); this->audio_decoder.decode_data = gsm610_decode_data; this->audio_decoder.reset = gsm610_reset; @@ -265,7 +265,7 @@ static void *init_plugin (xine_t *xine, void *data) { gsm610_class_t *this ; - this = (gsm610_class_t *) xine_xmalloc (sizeof (gsm610_class_t)); + this = (gsm610_class_t *) calloc(1, sizeof(gsm610_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxineadec/gsm610/long_term.c b/src/libxineadec/gsm610/long_term.c index 625662e1f..d3ef1b63d 100644 --- a/src/libxineadec/gsm610/long_term.c +++ b/src/libxineadec/gsm610/long_term.c @@ -6,6 +6,10 @@ /* $Header: /nfshome/cvs/xine-lib/src/libxineadec/gsm610/long_term.c,v 1.3 2003/12/07 15:34:30 f1rmb Exp $ */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xineutils.h" diff --git a/src/libxineadec/gsm610/lpc.c b/src/libxineadec/gsm610/lpc.c index 0f51fa55f..7a8a8e2bc 100644 --- a/src/libxineadec/gsm610/lpc.c +++ b/src/libxineadec/gsm610/lpc.c @@ -6,6 +6,10 @@ /* $Header: /nfshome/cvs/xine-lib/src/libxineadec/gsm610/lpc.c,v 1.3 2003/12/07 15:34:30 f1rmb Exp $ */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xineutils.h" diff --git a/src/libxineadec/gsm610/rpe.c b/src/libxineadec/gsm610/rpe.c index 67d94d30e..be1b1529b 100644 --- a/src/libxineadec/gsm610/rpe.c +++ b/src/libxineadec/gsm610/rpe.c @@ -6,6 +6,10 @@ /* $Header: /nfshome/cvs/xine-lib/src/libxineadec/gsm610/rpe.c,v 1.3 2003/12/07 15:34:30 f1rmb Exp $ */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xineutils.h" #include "private.h" diff --git a/src/libxineadec/gsm610/short_term.c b/src/libxineadec/gsm610/short_term.c index 8222b2caa..c2d64853b 100644 --- a/src/libxineadec/gsm610/short_term.c +++ b/src/libxineadec/gsm610/short_term.c @@ -6,6 +6,10 @@ /* $Header: /nfshome/cvs/xine-lib/src/libxineadec/gsm610/short_term.c,v 1.3 2003/12/07 15:34:30 f1rmb Exp $ */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xineutils.h" #include "private.h" diff --git a/src/libxineadec/nsf.c b/src/libxineadec/nsf.c index bdf523f1d..d4841ec6e 100644 --- a/src/libxineadec/nsf.c +++ b/src/libxineadec/nsf.c @@ -21,6 +21,10 @@ * http://www.baisoku.org/ */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -90,7 +94,7 @@ static void nsf_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { this->song_number = buf->content[4]; /* allocate a buffer for the file */ this->nsf_size = _X_BE_32(&buf->content[0]); - this->nsf_file = xine_xmalloc(this->nsf_size); + this->nsf_file = calloc(1, this->nsf_size); this->nsf_index = 0; /* peform any other required initialization */ @@ -205,7 +209,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre nsf_decoder_t *this ; - this = (nsf_decoder_t *) xine_xmalloc (sizeof (nsf_decoder_t)); + this = (nsf_decoder_t *) calloc(1, sizeof(nsf_decoder_t)); /* connect the member functions */ this->audio_decoder.decode_data = nsf_decode_data; @@ -255,7 +259,7 @@ static void *init_plugin (xine_t *xine, void *data) { nsf_class_t *this ; - this = (nsf_class_t *) xine_xmalloc (sizeof (nsf_class_t)); + this = (nsf_class_t *) calloc(1, sizeof(nsf_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxineadec/xine_lpcm_decoder.c b/src/libxineadec/xine_lpcm_decoder.c index 8d8f23a05..435545d56 100644 --- a/src/libxineadec/xine_lpcm_decoder.c +++ b/src/libxineadec/xine_lpcm_decoder.c @@ -20,6 +20,11 @@ * 31-8-2001 Added LPCM rate sensing. * (c) 2001 James Courtier-Dutton James@superbug.demon.co.uk */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #ifndef __sun #define _XOPEN_SOURCE 500 #endif @@ -187,18 +192,34 @@ static void lpcm_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { uint8_t *d = (uint8_t *)audio_buffer->mem; int n = buf->size; - while (n >= 0) { + while (n >= 3) { if ( stream_be ) { - *d++ = s[0]; - *d++ = s[1]; + if ( stream_be == this->cpu_be ) { + *d++ = s[0]; + *d++ = s[1]; + } else { + *d++ = s[1]; + *d++ = s[0]; + } } else { - *d++ = s[1]; - *d++ = s[2]; + if ( stream_be == this->cpu_be ) { + *d++ = s[1]; + *d++ = s[2]; + } + else + { + *d++ = s[2]; + *d++ = s[1]; + } } s += 3; n -= 3; } + + if ( (d - (uint8_t*)audio_buffer->mem)/2*3 < buf->size ) + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "lpcm_decoder: lost %i bytes\n", (int)(buf->size - (d - (uint8_t*)audio_buffer->mem))/2*3); + } else { memcpy (audio_buffer->mem, sample_buffer, buf->size); } @@ -224,7 +245,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stre lpcm_decoder_t *this ; - this = (lpcm_decoder_t *) xine_xmalloc (sizeof (lpcm_decoder_t)); + this = (lpcm_decoder_t *) calloc(1, sizeof(lpcm_decoder_t)); this->audio_decoder.decode_data = lpcm_decode_data; this->audio_decoder.reset = lpcm_reset; @@ -259,7 +280,7 @@ static void *init_plugin (xine_t *xine, void *data) { lpcm_class_t *this ; - this = (lpcm_class_t *) xine_xmalloc (sizeof (lpcm_class_t)); + this = (lpcm_class_t *) calloc(1, sizeof(lpcm_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxineadec/xine_speex_decoder.c b/src/libxineadec/xine_speex_decoder.c index aa8234385..46ea3a9f9 100644 --- a/src/libxineadec/xine_speex_decoder.c +++ b/src/libxineadec/xine_speex_decoder.c @@ -170,16 +170,16 @@ void read_metadata (speex_decoder_t *this, char * comments, int length) #endif for (i = 0; speex_comment_keys[i].key != NULL; i++) { + size_t keylen = strlen(speex_comment_keys[i].key); if ( !strncasecmp (speex_comment_keys[i].key, c, - strlen(speex_comment_keys[i].key)) ) { - int keylen = strlen(speex_comment_keys[i].key); + keylen) ) { char meta_info[(len - keylen) + 1]; lprintf ("known metadata %d %d\n", i, speex_comment_keys[i].xine_metainfo_index); - snprintf(meta_info, (len - keylen), "%s", c + keylen); + strncpy(meta_info, &c[keylen], len-keylen); _x_meta_info_set_utf8(this->stream, speex_comment_keys[i].xine_metainfo_index, meta_info); } } @@ -204,7 +204,7 @@ static void speex_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { if (!this->st) { SpeexMode * spx_mode; SpeexHeader * spx_header; - int modeID; + unsigned int modeID; int bitrate; speex_bits_init (&this->bits); @@ -216,7 +216,12 @@ static void speex_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { return; } - modeID = spx_header->mode; + modeID = (unsigned int)spx_header->mode; + if (modeID >= SPEEX_NB_MODES) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, LOG_MODULE ": invalid mode ID %u\n", modeID); + return; + } + spx_mode = (SpeexMode *) speex_mode_list[modeID]; if (spx_mode->bitstream_version != spx_header->mode_bitstream_version) { @@ -280,7 +285,7 @@ static void speex_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { } } else if (this->output_open) { - int i, j; + int j; audio_buffer_t *audio_buffer; @@ -350,7 +355,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, speex_decoder_t *this ; static SpeexStereoState init_stereo = SPEEX_STEREO_STATE_INIT; - this = (speex_decoder_t *) xine_xmalloc (sizeof (speex_decoder_t)); + this = (speex_decoder_t *) calloc(1, sizeof(speex_decoder_t)); this->audio_decoder.decode_data = speex_decode_data; this->audio_decoder.reset = speex_reset; @@ -391,7 +396,7 @@ static void *init_plugin (xine_t *xine, void *data) { speex_class_t *this; - this = (speex_class_t *) xine_xmalloc (sizeof (speex_class_t)); + this = (speex_class_t *) calloc(1, sizeof(speex_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxineadec/xine_vorbis_decoder.c b/src/libxineadec/xine_vorbis_decoder.c index 4b7a6c15d..218c26033 100644 --- a/src/libxineadec/xine_vorbis_decoder.c +++ b/src/libxineadec/xine_vorbis_decoder.c @@ -41,6 +41,7 @@ #include <vorbis/codec.h> #define MAX_NUM_SAMPLES 4096 +#define INIT_BUFSIZE 8192 typedef struct { audio_decoder_class_t decoder_class; @@ -70,6 +71,11 @@ typedef struct vorbis_decoder_s { xine_stream_t *stream; + /* data accumulation stuff */ + unsigned char *buf; + int bufsize; + int size; + } vorbis_decoder_t; @@ -78,6 +84,7 @@ static void vorbis_reset (audio_decoder_t *this_gen) { vorbis_decoder_t *this = (vorbis_decoder_t *) this_gen; if( this->header_count ) return; + this->size = 0; /* clear block first, as it might contain allocated data */ vorbis_block_clear(&this->vb); @@ -136,126 +143,147 @@ static void get_metadata (vorbis_decoder_t *this) { _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "vorbis"); } +static void vorbis_check_bufsize (vorbis_decoder_t *this, int size) { + if (size > this->bufsize) { + this->bufsize = size + size / 2; + xprintf(this->stream->xine, XINE_VERBOSITY_LOG, + _("vorbis: increasing buffer to %d to avoid overflow.\n"), + this->bufsize); + this->buf = realloc(this->buf, this->bufsize); + } +} + static void vorbis_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { vorbis_decoder_t *this = (vorbis_decoder_t *) this_gen; memset( &this->op, 0, sizeof(this->op) ); - this->op.packet = buf->content; - this->op.bytes = buf->size; - - if ( (buf->decoder_flags & BUF_FLAG_HEADER) && - !(buf->decoder_flags & BUF_FLAG_STDHEADER) ) { - lprintf ("%d headers to go\n", this->header_count); - if (this->header_count) { - int res = 0; + /* data accumulation */ + vorbis_check_bufsize(this, this->size + buf->size); + xine_fast_memcpy (&this->buf[this->size], buf->content, buf->size); + this->size += buf->size; - if (this->header_count == 3) - this->op.b_o_s = 1; + if (buf->decoder_flags & BUF_FLAG_FRAME_END) { + this->op.packet = this->buf; + this->op.bytes = this->size; - - if( (res = vorbis_synthesis_headerin(&this->vi,&this->vc,&this->op)) < 0 ){ - /* error case; not a vorbis header */ - xine_log(this->stream->xine, XINE_LOG_MSG, "libvorbis: this bitstream does not contain vorbis audio data. Following first 64 bytes (return: %d).\n", res); - xine_hexdump((char *)this->op.packet, this->op.bytes < 64 ? this->op.bytes : 64); - return; - } - - this->header_count--; - - if (!this->header_count) { - - int mode = AO_CAP_MODE_MONO; - - get_metadata (this); - - mode = _x_ao_channels2mode(this->vi.channels); - - this->convsize=MAX_NUM_SAMPLES/this->vi.channels; - - if (!this->output_open) { - this->output_open = (this->stream->audio_out->open) (this->stream->audio_out, - this->stream, - 16, - this->vi.rate, - mode) ; - - _x_stream_info_set(this->stream, XINE_STREAM_INFO_AUDIO_BITRATE, - this->vi.bitrate_nominal); - - } - - /* OK, got and parsed all three headers. Initialize the Vorbis - * packet->PCM decoder. */ - lprintf("all three headers parsed. initializing decoder.\n"); - /* initialize central decode state */ - vorbis_synthesis_init(&this->vd,&this->vi); - /* initialize local state for most of the decode so multiple - * block decodes can proceed in parallel. We could init - * multiple vorbis_block structures for vd here */ - vorbis_block_init(&this->vd,&this->vb); + /* reset accumultaion buffer */ + this->size = 0; + + if ( (buf->decoder_flags & BUF_FLAG_HEADER) && + !(buf->decoder_flags & BUF_FLAG_STDHEADER) ) { + + lprintf ("%d headers to go\n", this->header_count); + + if (this->header_count) { + int res = 0; + + if (this->header_count == 3) + this->op.b_o_s = 1; + + if ( (res = vorbis_synthesis_headerin(&this->vi,&this->vc,&this->op)) < 0 ) { + /* error case; not a vorbis header */ + xine_log(this->stream->xine, XINE_LOG_MSG, "libvorbis: this bitstream does not contain vorbis audio data. Following first 64 bytes (return: %d).\n", res); + xine_hexdump((char *)this->op.packet, this->op.bytes < 64 ? this->op.bytes : 64); + return; + } + + this->header_count--; + + if (!this->header_count) { + + int mode = AO_CAP_MODE_MONO; + + get_metadata (this); + + mode = _x_ao_channels2mode(this->vi.channels); + + this->convsize=MAX_NUM_SAMPLES/this->vi.channels; + + if (!this->output_open) { + this->output_open = (this->stream->audio_out->open) (this->stream->audio_out, + this->stream, + 16, + this->vi.rate, + mode) ; + + _x_stream_info_set(this->stream, XINE_STREAM_INFO_AUDIO_BITRATE, + this->vi.bitrate_nominal); + + } + + /* OK, got and parsed all three headers. Initialize the Vorbis + * packet->PCM decoder. */ + lprintf("all three headers parsed. initializing decoder.\n"); + /* initialize central decode state */ + vorbis_synthesis_init(&this->vd,&this->vi); + /* initialize local state for most of the decode so multiple + * block decodes can proceed in parallel. We could init + * multiple vorbis_block structures for vd here */ + vorbis_block_init(&this->vd,&this->vb); + } } - } - - } else if (this->output_open) { - - float **pcm; - int samples; - - if(vorbis_synthesis(&this->vb,&this->op)==0) - vorbis_synthesis_blockin(&this->vd,&this->vb); - - if (buf->pts!=0) - this->pts=buf->pts; - - while ((samples=vorbis_synthesis_pcmout(&this->vd,&pcm))>0){ - - /* **pcm is a multichannel float vector. In stereo, for - * example, pcm[0][...] is left, and pcm[1][...] is right. - * samples is the size of each channel. Convert the float - * values (-1.<=range<=1.) to whatever PCM format and write - * it out - */ - - int i,j; - int bout=(samples<this->convsize?samples:this->convsize); - audio_buffer_t *audio_buffer; - - audio_buffer = this->stream->audio_out->get_buffer (this->stream->audio_out); - - /* convert floats to 16 bit signed ints (host order) and - interleave */ - for(i=0;i<this->vi.channels;i++){ - ogg_int16_t *ptr=audio_buffer->mem+i; - float *mono=pcm[i]; - for(j=0;j<bout;j++){ - int val=(mono[j] + 1.0f) * 32768.f; - val -= 32768; - /* might as well guard against clipping */ - if(val>32767){ - val=32767; - } else if(val<-32768){ - val=-32768; - } - *ptr=val; - ptr+=this->vi.channels; - } + + } else if (this->output_open) { + + float **pcm; + int samples; + + if(vorbis_synthesis(&this->vb,&this->op)==0) + vorbis_synthesis_blockin(&this->vd,&this->vb); + + if (buf->pts!=0) + this->pts=buf->pts; + + while ((samples=vorbis_synthesis_pcmout(&this->vd,&pcm))>0){ + + /* **pcm is a multichannel float vector. In stereo, for + * example, pcm[0][...] is left, and pcm[1][...] is right. + * samples is the size of each channel. Convert the float + * values (-1.<=range<=1.) to whatever PCM format and write + * it out + */ + + int i,j; + int bout=(samples<this->convsize?samples:this->convsize); + audio_buffer_t *audio_buffer; + + audio_buffer = this->stream->audio_out->get_buffer (this->stream->audio_out); + + /* convert floats to 16 bit signed ints (host order) and + interleave */ + for(i=0;i<this->vi.channels;i++){ + ogg_int16_t *ptr=audio_buffer->mem+i; + float *mono=pcm[i]; + for(j=0;j<bout;j++){ + int val=(mono[j] + 1.0f) * 32768.f; + val -= 32768; + /* might as well guard against clipping */ + if(val>32767){ + val=32767; + } else if(val<-32768){ + val=-32768; + } + *ptr=val; + ptr+=this->vi.channels; + } + } + + audio_buffer->vpts = this->pts; + this->pts=0; + audio_buffer->num_frames = bout; + + this->stream->audio_out->put_buffer (this->stream->audio_out, audio_buffer, this->stream); + + buf->pts=0; + + /* tell libvorbis how many samples we actually consumed */ + vorbis_synthesis_read(&this->vd,bout); } - - audio_buffer->vpts = this->pts; - this->pts=0; - audio_buffer->num_frames = bout; - - this->stream->audio_out->put_buffer (this->stream->audio_out, audio_buffer, this->stream); - - buf->pts=0; - - /* tell libvorbis how many samples we actually consumed */ - vorbis_synthesis_read(&this->vd,bout); + } else { + lprintf("output not open\n"); } - } else { - lprintf("output not open\n"); } } @@ -287,7 +315,7 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, vorbis_decoder_t *this ; - this = (vorbis_decoder_t *) xine_xmalloc (sizeof (vorbis_decoder_t)); + this = (vorbis_decoder_t *) calloc(1, sizeof(vorbis_decoder_t)); this->audio_decoder.decode_data = vorbis_decode_data; this->audio_decoder.reset = vorbis_reset; @@ -299,6 +327,10 @@ static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, this->header_count = 3; this->convsize = 0; + this->bufsize = INIT_BUFSIZE; + this->buf = calloc(1, INIT_BUFSIZE); + this->size = 0; + vorbis_info_init(&this->vi); vorbis_comment_init(&this->vc); @@ -327,7 +359,7 @@ static void *init_plugin (xine_t *xine, void *data) { vorbis_class_t *this; - this = (vorbis_class_t *) xine_xmalloc (sizeof (vorbis_class_t)); + this = (vorbis_class_t *) calloc(1, sizeof(vorbis_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxinevdec/Makefile.am b/src/libxinevdec/Makefile.am index 9805eb09e..b7dbe1db1 100644 --- a/src/libxinevdec/Makefile.am +++ b/src/libxinevdec/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CFLAGS = $(VISIBILITY_FLAG) @@ -43,4 +44,4 @@ xineplug_decode_gdk_pixbuf_la_LIBADD = $(XINE_LIB) $(DYNAMIC_LD_LIBS) $(GDK_PIXB xineplug_decode_theora_la_SOURCES = xine_theora_decoder.c xineplug_decode_theora_la_CFLAGS = $(AM_CFLAGS) $(OGG_CFLAGS) $(THEORA_CFLAGS) -xineplug_decode_theora_la_LIBADD = $(XINE_LIB) $(OGG_LIBS) $(THEORA_LIBS) +xineplug_decode_theora_la_LIBADD = $(XINE_LIB) $(OGG_LIBS) $(THEORA_LIBS) $(LTLIBINTL) diff --git a/src/libxinevdec/bitplane.c b/src/libxinevdec/bitplane.c index bf868ad2a..76b7c8a89 100644 --- a/src/libxinevdec/bitplane.c +++ b/src/libxinevdec/bitplane.c @@ -29,6 +29,10 @@ * - untested (found no testfiles) IFF-ANIM OPT 3, 4 and 6 */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -252,7 +256,7 @@ static uint8_t *bitplane_decode_byterun1 (uint8_t *compressed, int i = 0; int j = 0; - uint8_t *uncompressed = xine_xmalloc( size_uncompressed ); + uint8_t *uncompressed = calloc(1, size_uncompressed ); while ( i < size_compressed && pixel_ptr < size_uncompressed ) { @@ -1158,8 +1162,8 @@ static void bitplane_decode_data (video_decoder_t *this_gen, this->bytes_per_pixel = 1; /* New Buffer for indexes (palette based formats) */ - this->index_buf = xine_xmalloc( this->num_pixel * this->bytes_per_pixel ); - this->index_buf_hist = xine_xmalloc( this->num_pixel * this->bytes_per_pixel ); + this->index_buf = calloc( this->num_pixel, this->bytes_per_pixel ); + this->index_buf_hist = calloc( this->num_pixel, this->bytes_per_pixel ); this->num_bitplanes = bih->biPlanes; this->camg_mode = bih->biCompression; @@ -1189,7 +1193,7 @@ static void bitplane_decode_data (video_decoder_t *this_gen, if (this->buf) free (this->buf); this->bufsize = VIDEOBUFSIZE; - this->buf = xine_xmalloc(this->bufsize); + this->buf = calloc(1, this->bufsize); this->size = 0; this->framenumber = 0; @@ -1255,7 +1259,7 @@ static void bitplane_decode_data (video_decoder_t *this_gen, case BUF_VIDEO_BITPLANE: /* uncompressed Buffer, set decoded_buf pointer direct to input stream */ if( this->buf_uk == NULL ) - this->buf_uk = xine_xmalloc( (this->size) ); + this->buf_uk = malloc(this->size); xine_fast_memcpy (this->buf_uk, this->buf, this->size); break; case BUF_VIDEO_BITPLANE_BR1: @@ -1294,7 +1298,7 @@ static void bitplane_decode_data (video_decoder_t *this_gen, } } if( this->buf_uk_hist == NULL ) { - this->buf_uk_hist = xine_xmalloc( (this->size_uk) ); + this->buf_uk_hist = malloc(this->size_uk); xine_fast_memcpy (this->buf_uk_hist, this->buf_uk, this->size_uk); xine_fast_memcpy (this->index_buf_hist, this->index_buf, (this->num_pixel * this->bytes_per_pixel)); @@ -1306,20 +1310,12 @@ static void bitplane_decode_data (video_decoder_t *this_gen, /* when no start-picture is given, create a empty one */ if( this->buf_uk_hist == NULL ) { this->size_uk = (((this->num_pixel) / 8) * this->num_bitplanes); - this->buf_uk = xine_xmalloc( (this->size_uk) ); - this->buf_uk_hist = xine_xmalloc( (this->size_uk) ); - for (i = 0; i < this->size_uk; i++) { - this->buf_uk[i] = 0; - this->buf_uk_hist[i] = 0; - } + this->buf_uk = calloc(this->num_bitplanes, ((this->num_pixel) / 8)); + this->buf_uk_hist = calloc(this->num_bitplanes, ((this->num_pixel) / 8)); } if( this->index_buf == NULL ) { - this->index_buf = xine_xmalloc( (this->num_pixel * this->bytes_per_pixel) ); - this->index_buf_hist = xine_xmalloc( (this->num_pixel * this->bytes_per_pixel) ); - for (i = 0; i < (this->num_pixel * this->bytes_per_pixel); i++) { - this->index_buf[i] = 0; - this->index_buf_hist[i] = 0; - } + this->index_buf = calloc( this->num_pixel, this->bytes_per_pixel ); + this->index_buf_hist = calloc( this->num_pixel, this->bytes_per_pixel ); } switch( anhd->operation ) { @@ -1523,7 +1519,7 @@ static void bitplane_dispose (video_decoder_t *this_gen) { static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, xine_stream_t *stream) { - bitplane_decoder_t *this = (bitplane_decoder_t *) xine_xmalloc (sizeof (bitplane_decoder_t)); + bitplane_decoder_t *this = (bitplane_decoder_t *) calloc(1, sizeof(bitplane_decoder_t)); this->video_decoder.decode_data = bitplane_decode_data; this->video_decoder.flush = bitplane_flush; @@ -1558,7 +1554,7 @@ static void dispose_class (video_decoder_class_t *this) { static void *init_plugin (xine_t *xine, void *data) { - bitplane_class_t *this = (bitplane_class_t *) xine_xmalloc (sizeof (bitplane_class_t)); + bitplane_class_t *this = (bitplane_class_t *) calloc(1, sizeof(bitplane_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxinevdec/foovideo.c b/src/libxinevdec/foovideo.c index 98e0ebc0b..7a80c7c66 100644 --- a/src/libxinevdec/foovideo.c +++ b/src/libxinevdec/foovideo.c @@ -24,6 +24,10 @@ * frame when the frames are played in succession. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -206,7 +210,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, xine_stre foovideo_decoder_t *this ; - this = (foovideo_decoder_t *) xine_xmalloc (sizeof (foovideo_decoder_t)); + this = (foovideo_decoder_t *) calloc(1, sizeof(foovideo_decoder_t)); this->video_decoder.decode_data = foovideo_decode_data; this->video_decoder.flush = foovideo_flush; @@ -256,7 +260,7 @@ static void *init_plugin (xine_t *xine, void *data) { foovideo_class_t *this; - this = (foovideo_class_t *) xine_xmalloc (sizeof (foovideo_class_t)); + this = (foovideo_class_t *) calloc(1, sizeof(foovideo_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxinevdec/gdkpixbuf.c b/src/libxinevdec/gdkpixbuf.c index b5acdfa42..de4c2271e 100644 --- a/src/libxinevdec/gdkpixbuf.c +++ b/src/libxinevdec/gdkpixbuf.c @@ -20,6 +20,11 @@ * a gdk-pixbuf-based image video decoder */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + + #include <stdlib.h> #include <string.h> @@ -236,7 +241,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, g_type_init (); - this = (image_decoder_t *) xine_xmalloc (sizeof (image_decoder_t)); + this = (image_decoder_t *) calloc(1, sizeof(image_decoder_t)); this->video_decoder.decode_data = image_decode_data; this->video_decoder.flush = image_flush; @@ -277,7 +282,7 @@ static void *init_class (xine_t *xine, void *data) { image_class_t *this; - this = (image_class_t *) xine_xmalloc (sizeof (image_class_t)); + this = (image_class_t *) calloc(1, sizeof(image_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxinevdec/image.c b/src/libxinevdec/image.c index a338e3cab..bd749be8e 100644 --- a/src/libxinevdec/image.c +++ b/src/libxinevdec/image.c @@ -20,6 +20,10 @@ * a image video decoder */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <string.h> @@ -88,7 +92,7 @@ static void image_decode_data (video_decoder_t *this_gen, buf_element_t *buf) { if (buf->decoder_flags & BUF_FLAG_FRAME_END) { int width, height, i; - MagickBooleanType status; + int status; MagickWand *wand; uint8_t *img_buf, *img_buf_ptr; yuv_planes_t yuv_planes; @@ -101,7 +105,7 @@ static void image_decode_data (video_decoder_t *this_gen, buf_element_t *buf) { status = MagickReadImageBlob(wand, this->image, this->index); this->index = 0; - if (status == MagickFalse) { + if (!status) { DestroyMagickWand(wand); lprintf("error loading image\n"); return; @@ -212,7 +216,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, lprintf("opened\n"); - this = (image_decoder_t *) xine_xmalloc (sizeof (image_decoder_t)); + this = (image_decoder_t *) calloc(1, sizeof(image_decoder_t)); this->video_decoder.decode_data = image_decode_data; this->video_decoder.flush = image_flush; @@ -255,7 +259,7 @@ static void *init_class (xine_t *xine, void *data) { image_class_t *this; - this = (image_class_t *) xine_xmalloc (sizeof (image_class_t)); + this = (image_class_t *) calloc(1, sizeof(image_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxinevdec/rgb.c b/src/libxinevdec/rgb.c index 0e7be4c18..fc206a0ce 100644 --- a/src/libxinevdec/rgb.c +++ b/src/libxinevdec/rgb.c @@ -31,6 +31,10 @@ * indicated by a negative height parameter. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -145,7 +149,7 @@ static void rgb_decode_data (video_decoder_t *this_gen, /* minimal buffer size */ this->bufsize = this->width * this->height * this->bytes_per_pixel; - this->buf = xine_xmalloc(this->bufsize); + this->buf = calloc(1, this->bufsize); this->size = 0; init_yuv_planes(&this->yuv_planes, this->width, this->height); @@ -398,7 +402,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, xine_stre rgb_decoder_t *this ; - this = (rgb_decoder_t *) xine_xmalloc (sizeof (rgb_decoder_t)); + this = (rgb_decoder_t *) calloc(1, sizeof(rgb_decoder_t)); this->video_decoder.decode_data = rgb_decode_data; this->video_decoder.flush = rgb_flush; @@ -432,7 +436,7 @@ static void *init_plugin (xine_t *xine, void *data) { rgb_class_t *this; - this = (rgb_class_t *) xine_xmalloc (sizeof (rgb_class_t)); + this = (rgb_class_t *) calloc(1, sizeof(rgb_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/libxinevdec/xine_theora_decoder.c b/src/libxinevdec/xine_theora_decoder.c index c71ce7559..d15625812 100644 --- a/src/libxinevdec/xine_theora_decoder.c +++ b/src/libxinevdec/xine_theora_decoder.c @@ -312,7 +312,7 @@ static video_decoder_t *theora_open_plugin (video_decoder_class_t *class_gen, xi theora_decoder_t *this ; - this = (theora_decoder_t *) xine_xmalloc (sizeof (theora_decoder_t)); + this = (theora_decoder_t *) calloc(1, sizeof(theora_decoder_t)); this->theora_decoder.decode_data = theora_decode_data; this->theora_decoder.flush = theora_flush; @@ -370,7 +370,7 @@ static void *init_plugin (xine_t *xine, void *data) { /*initialize our plugin*/ theora_class_t *this; - this = (theora_class_t *) xine_xmalloc (sizeof (theora_class_t)); + this = (theora_class_t *) calloc(1, sizeof(theora_class_t)); this->decoder_class.open_plugin = theora_open_plugin; this->decoder_class.get_identifier = theora_get_identifier; diff --git a/src/libxinevdec/yuv.c b/src/libxinevdec/yuv.c index 2b8657685..b1a69cd65 100644 --- a/src/libxinevdec/yuv.c +++ b/src/libxinevdec/yuv.c @@ -22,6 +22,10 @@ * a way that xine can display them. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -321,7 +325,7 @@ static video_decoder_t *open_plugin (video_decoder_class_t *class_gen, xine_stre yuv_decoder_t *this ; - this = (yuv_decoder_t *) xine_xmalloc (sizeof (yuv_decoder_t)); + this = (yuv_decoder_t *) calloc(1, sizeof(yuv_decoder_t)); this->video_decoder.decode_data = yuv_decode_data; this->video_decoder.flush = yuv_flush; @@ -355,7 +359,7 @@ static void *init_plugin (xine_t *xine, void *data) { yuv_class_t *this; - this = (yuv_class_t *) xine_xmalloc (sizeof (yuv_class_t)); + this = (yuv_class_t *) calloc(1, sizeof(yuv_class_t)); this->decoder_class.open_plugin = open_plugin; this->decoder_class.get_identifier = get_identifier; diff --git a/src/post/audio/Makefile.am b/src/post/audio/Makefile.am index 41a364d0d..5e587ef2f 100644 --- a/src/post/audio/Makefile.am +++ b/src/post/audio/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common noinst_HEADERS = dsp.h filter.h window.h audio_filters.h diff --git a/src/post/audio/audio_filters.c b/src/post/audio/audio_filters.c index 8200db51b..12d48784c 100644 --- a/src/post/audio/audio_filters.c +++ b/src/post/audio/audio_filters.c @@ -20,6 +20,9 @@ * catalog for audio filter plugins */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "xine_internal.h" #include "xineutils.h" diff --git a/src/post/audio/filter.c b/src/post/audio/filter.c index c5602736c..55d75e1e4 100644 --- a/src/post/audio/filter.c +++ b/src/post/audio/filter.c @@ -414,7 +414,7 @@ void bilinear(_ftype_t* a, _ftype_t* b, _ftype_t* k, _ftype_t fs, _ftype_t *coef * * return -1 if fail 0 if success. */ -int szxform(_ftype_t* a, _ftype_t* b, _ftype_t Q, _ftype_t fc, _ftype_t fs, _ftype_t *k, _ftype_t *coef) +int szxform(const _ftype_t* a, const _ftype_t* b, _ftype_t Q, _ftype_t fc, _ftype_t fs, _ftype_t *k, _ftype_t *coef) { _ftype_t at[3]; _ftype_t bt[3]; diff --git a/src/post/audio/filter.h b/src/post/audio/filter.h index 0b0ce1c1b..0e08aa2b9 100644 --- a/src/post/audio/filter.h +++ b/src/post/audio/filter.h @@ -55,7 +55,7 @@ extern int design_pfir(unsigned int n, unsigned int k, _ftype_t* w, _ftype_t** p extern void prewarp(_ftype_t* a, _ftype_t fc, _ftype_t fs); void bilinear(_ftype_t* a, _ftype_t* b, _ftype_t* k, _ftype_t fs, _ftype_t *coef); -extern int szxform(_ftype_t* a, _ftype_t* b, _ftype_t Q, _ftype_t fc, _ftype_t fs, _ftype_t *k, _ftype_t *coef); +extern int szxform(const _ftype_t* a, const _ftype_t* b, _ftype_t Q, _ftype_t fc, _ftype_t fs, _ftype_t *k, _ftype_t *coef); /* Add new data to circular queue designed to be used with a FIR * filter. xq is the circular queue, in pointing at the new sample, xi diff --git a/src/post/audio/stretch.c b/src/post/audio/stretch.c index 5aa7a0617..d4621a800 100644 --- a/src/post/audio/stretch.c +++ b/src/post/audio/stretch.c @@ -20,6 +20,10 @@ * Time stretch by a given factor, optionally preserving pitch */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xine_internal.h" @@ -152,10 +156,10 @@ static void stretchscr_exit (scr_plugin_t *scr) { free(this); } -static stretchscr_t* stretchscr_init (double *stretch_factor) { +static stretchscr_t *XINE_MALLOC stretchscr_init (double *stretch_factor) { stretchscr_t *this; - this = (stretchscr_t *) xine_xmalloc(sizeof(stretchscr_t)); + this = calloc(1, sizeof(stretchscr_t)); this->scr.interface_version = 3; this->scr.get_priority = stretchscr_get_priority; @@ -620,7 +624,7 @@ static post_plugin_t *stretch_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_stretch_t *this = (post_plugin_stretch_t *)xine_xmalloc(sizeof(post_plugin_stretch_t)); + post_plugin_stretch_t *this = calloc(1, sizeof(post_plugin_stretch_t)); post_in_t *input; post_out_t *output; xine_post_in_t *input_api; diff --git a/src/post/audio/upmix.c b/src/post/audio/upmix.c index e1b2afbe3..e753f4a2a 100644 --- a/src/post/audio/upmix.c +++ b/src/post/audio/upmix.c @@ -24,6 +24,10 @@ * E.g. Converts Stereo into Surround 5.1 */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xine_internal.h" @@ -181,7 +185,7 @@ static int upmix_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream, } pthread_mutex_lock (&this->lock); - this->sub = xine_xmalloc(sizeof(af_sub_t)); + this->sub = calloc(1, sizeof(af_sub_t)); if (!this->sub) { pthread_mutex_unlock (&this->lock); return 0; @@ -379,7 +383,7 @@ static post_plugin_t *upmix_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_upmix_t *this = (post_plugin_upmix_t *)xine_xmalloc(sizeof(post_plugin_upmix_t)); + post_plugin_upmix_t *this = calloc(1, sizeof(post_plugin_upmix_t)); post_in_t *input; post_out_t *output; xine_post_in_t *input_api; diff --git a/src/post/audio/upmix_mono.c b/src/post/audio/upmix_mono.c index 195831123..52b5f497b 100644 --- a/src/post/audio/upmix_mono.c +++ b/src/post/audio/upmix_mono.c @@ -23,6 +23,10 @@ * It simply converts Mono into Stereo. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #define LOG_MODULE "upmix_mono" @@ -192,32 +196,32 @@ static void upmix_mono_port_put_buffer(xine_audio_port_t *port_gen, _x_extra_info_merge(buf1->extra_info, buf->extra_info); { - int step = buf->format.bits / 8; + const size_t step = buf->format.bits / 8; uint8_t *src = (uint8_t *)buf->mem; uint8_t *dst0 = (uint8_t *)buf0->mem; uint8_t *dst1 = (uint8_t *)buf1->mem; - int i, k; + int i; for (i = 0; i < buf->num_frames / 2; i++) { - for (k = 0; k < step; k++) - *dst0++ = *src++; + memcpy(dst0, src, step); + dst0 += step; - src -= step; + memcpy(dst0, src, step); + dst0 += step; - for (k = 0; k < step; k++) - *dst0++ = *src++; + src += step; } for (i = buf->num_frames / 2; i < buf->num_frames; i++) { - for (k = 0; k < step; k++) - *dst1++ = *src++; + memcpy(dst1, src, step); + dst1 += step; - src -= step; + memcpy(dst1, src, step); + dst1 += step; - for (k = 0; k < step; k++) - *dst1++ = *src++; + src += step; } } @@ -244,11 +248,11 @@ static void upmix_mono_port_put_buffer(xine_audio_port_t *port_gen, _x_extra_info_merge(buf0->extra_info, buf->extra_info); { - int step = buf->format.bits / 8; + const size_t step = buf->format.bits / 8; uint8_t *src = (uint8_t *)buf->mem; uint8_t *dst0 = (uint8_t *)buf0->mem; int cur_channel = this->params.channel; - int i, j, k; + int i, j; if( cur_channel >= this->channels ) cur_channel = this->channels-1; @@ -259,8 +263,8 @@ static void upmix_mono_port_put_buffer(xine_audio_port_t *port_gen, { for (j = 0; j < this->channels; j++ ) { - for (k = 0; k < step; k++) - *dst0++ = *(src+k); + memcpy(dst0, src, step); + dst0 += step; } src += this->channels * step; } @@ -293,7 +297,7 @@ static post_plugin_t *upmix_mono_open_plugin(post_class_t *class_gen, int inputs xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_upmix_mono_t *this = (post_plugin_upmix_mono_t *)xine_xmalloc(sizeof(post_plugin_upmix_mono_t)); + post_plugin_upmix_mono_t *this = calloc(1, sizeof(post_plugin_upmix_mono_t)); post_in_t *input; post_out_t *output; xine_post_in_t *input_api; diff --git a/src/post/audio/volnorm.c b/src/post/audio/volnorm.c index 783c1e26d..158705ef7 100644 --- a/src/post/audio/volnorm.c +++ b/src/post/audio/volnorm.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2005 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -22,6 +22,10 @@ * & Pierre Lombard. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <math.h> @@ -407,12 +411,11 @@ static post_plugin_t *volnorm_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_volnorm_t *this = (post_plugin_volnorm_t *)xine_xmalloc(sizeof(post_plugin_volnorm_t)); + post_plugin_volnorm_t *this = calloc(1, sizeof(post_plugin_volnorm_t)); post_in_t *input; post_out_t *output; xine_post_in_t *input_api; post_audio_port_t *port; - int i; if (!this || !audio_target || !audio_target[0] ) { free(this); @@ -426,9 +429,8 @@ static post_plugin_t *volnorm_open_plugin(post_class_t *class_gen, int inputs, this->mul = MUL_INIT; this->lastavg = MID_S16; this->idx = 0; - for (i = 0; i < NSAMPLES; i++) - this->mem[i].len = this->mem[i].avg = 0; - + memset(this->mem, 0, sizeof(this->mem)); + port = _x_post_intercept_audio_port(&this->post, audio_target[0], &input, &output); port->new_port.open = volnorm_port_open; port->new_port.close = volnorm_port_close; diff --git a/src/post/deinterlace/Makefile.am b/src/post/deinterlace/Makefile.am index d382a2e98..bac6bac33 100644 --- a/src/post/deinterlace/Makefile.am +++ b/src/post/deinterlace/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common SUBDIRS = plugins @@ -8,7 +9,7 @@ xinepost_LTLIBRARIES = xineplug_post_tvtime.la xineplug_post_tvtime_la_SOURCES = xine_plugin.c \ deinterlace.c pulldown.c speedy.c tvtime.c -xineplug_post_tvtime_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) \ +xineplug_post_tvtime_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) $(PTHREAD_LIBS) \ $(top_builddir)/src/post/deinterlace/plugins/libdeinterlaceplugins.la xineplug_post_tvtime_la_CFLAGS = $(VISIBILITY_FLAG) diff --git a/src/post/deinterlace/plugins/Makefile.am b/src/post/deinterlace/plugins/Makefile.am index 17d170127..5f0997eb8 100644 --- a/src/post/deinterlace/plugins/Makefile.am +++ b/src/post/deinterlace/plugins/Makefile.am @@ -30,7 +30,10 @@ EXTRA_DIST = greedy2frame_template.c greedyh.asm \ # libpostproc is here so we can use their nice mangle.h AM_CFLAGS = -I$(top_srcdir)/src/post/deinterlace \ - -I$(top_srcdir)/src/libffmpeg/libavcodec/libpostproc + -I$(top_srcdir)/src/xine-utils + +# Avoid "can't find register" failures with -O0, -O2, -O3 (gcc 4.0) +libdeinterlaceplugins_la-kdetv_greedyh.o libdeinterlaceplugins_la-kdetv_greedyh.lo: CFLAGS=$(shell echo @CFLAGS@ | sed -e 's/$$/ -O1/') noinst_LTLIBRARIES = libdeinterlaceplugins.la @@ -45,7 +48,6 @@ libdeinterlaceplugins_la_SOURCES = \ scalerbob.c \ kdetv_greedyh.c \ kdetv_tomsmocomp.c -libdeinterlaceplugins_la_LIBADD = $(XINE_LIB) libdeinterlaceplugins_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS) libdeinterlaceplugins_la_LDFLAGS = -avoid-version -module diff --git a/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h b/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h index a3b92a51c..a0136fd44 100644 --- a/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h +++ b/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h @@ -2,6 +2,8 @@ #include <math.h> #include <stdlib.h> +#include "mangle.h" + #define USE_FOR_DSCALER #define MyMemCopy xine_fast_memcpy diff --git a/src/post/deinterlace/tvtime.c b/src/post/deinterlace/tvtime.c index eff43d5e8..97da6543e 100644 --- a/src/post/deinterlace/tvtime.c +++ b/src/post/deinterlace/tvtime.c @@ -38,14 +38,6 @@ #include "tvtime.h" /** - * This is how many frames to wait until deciding if the pulldown phase - * has changed or if we've really found a pulldown sequence. This is - * currently set to about 1 second, that is, we won't go into film mode - * until we've seen a pulldown sequence successfully for 1 second. - */ -#define PULLDOWN_ERROR_WAIT 60 - -/** * This is how many predictions have to be incorrect before we fall back to * video mode. Right now, if we mess up, we jump to video mode immediately. */ @@ -192,13 +184,13 @@ int tvtime_build_deinterlaced_frame( tvtime_t *tvtime, uint8_t *output, if( !tvtime->pdoffset ) { /* No pulldown offset applies, drop out of pulldown immediately. */ tvtime->pdlastbusted = 0; - tvtime->pderror = PULLDOWN_ERROR_WAIT; + tvtime->pderror = tvtime->pulldown_error_wait; } else if( tvtime->pdoffset != predicted ) { if( tvtime->pdlastbusted ) { tvtime->pdlastbusted--; tvtime->pdoffset = predicted; } else { - tvtime->pderror = PULLDOWN_ERROR_WAIT; + tvtime->pderror = tvtime->pulldown_error_wait; } } else { if( tvtime->pderror ) { @@ -437,7 +429,7 @@ void tvtime_reset_context( tvtime_t *tvtime ) tvtime->last_botdiff = 0; tvtime->pdoffset = PULLDOWN_SEQ_AA; - tvtime->pderror = PULLDOWN_ERROR_WAIT; + tvtime->pderror = tvtime->pulldown_error_wait; tvtime->pdlastbusted = 0; tvtime->filmmode = 0; } diff --git a/src/post/deinterlace/tvtime.h b/src/post/deinterlace/tvtime.h index 8e4c5abc2..2253f264e 100644 --- a/src/post/deinterlace/tvtime.h +++ b/src/post/deinterlace/tvtime.h @@ -56,6 +56,11 @@ typedef struct { */ deinterlace_method_t *curmethod; + /** + * This is how many frames to wait until deciding if the pulldown phase + * has changed or if we've really found a pulldown sequence. + */ + unsigned int pulldown_error_wait; /* internal data */ int last_topdiff; diff --git a/src/post/deinterlace/xine_plugin.c b/src/post/deinterlace/xine_plugin.c index 477e6812b..7149f2bdb 100644 --- a/src/post/deinterlace/xine_plugin.c +++ b/src/post/deinterlace/xine_plugin.c @@ -23,6 +23,10 @@ * heavily based on tvtime.sf.net by Billy Biggs */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* #define LOG */ @@ -69,6 +73,7 @@ typedef struct deinterlace_parameters_s { int method; int enabled; int pulldown; + int pulldown_error_wait; int framerate_mode; int judder_correction; int use_progressive_frame_flag; @@ -87,6 +92,8 @@ PARAM_ITEM( POST_PARAM_TYPE_BOOL, enabled, NULL, 0, 1, 0, "enable/disable" ) PARAM_ITEM( POST_PARAM_TYPE_INT, pulldown, enum_pulldown, 0, 0, 0, "pulldown algorithm" ) +PARAM_ITEM( POST_PARAM_TYPE_INT, pulldown_error_wait, NULL, 0, 0, 0, + "number of frames of telecine pattern sync required before mode change" ) PARAM_ITEM( POST_PARAM_TYPE_INT, framerate_mode, enum_framerate, 0, 0, 0, "framerate output mode" ) PARAM_ITEM( POST_PARAM_TYPE_BOOL, judder_correction, NULL, 0, 1, 0, @@ -165,6 +172,7 @@ static int set_parameters (xine_post_t *this_gen, void *param_gen) { this->enabled = param->enabled; this->pulldown = param->pulldown; + this->tvtime->pulldown_error_wait = param->pulldown_error_wait; this->framerate_mode = param->framerate_mode; this->judder_correction = param->judder_correction; this->use_progressive_frame_flag = param->use_progressive_frame_flag; @@ -185,6 +193,7 @@ static int get_parameters (xine_post_t *this_gen, void *param_gen) { param->method = this->cur_method; param->enabled = this->enabled; param->pulldown = this->pulldown; + param->pulldown_error_wait = this->tvtime->pulldown_error_wait; param->framerate_mode = this->framerate_mode; param->judder_correction = this->judder_correction; param->use_progressive_frame_flag = this->use_progressive_frame_flag; @@ -212,6 +221,9 @@ static char * get_static_help (void) { "\n" " Enabled: Enable/disable the plugin.\n" "\n" + " Pulldown_error_wait: Ensures that the telecine pattern has been " + "locked for this many frames before changing to filmmode.\n" + "\n" " Pulldown: Choose the 2-3 pulldown detection algorithm. 24 FPS films " "that have being converted to NTSC can be detected and intelligently " "reconstructed to their original (non-interlaced) frames.\n" @@ -291,7 +303,7 @@ static int deinterlace_draw(vo_frame_t *frame, xine_stream_t *stream) static void *deinterlace_init_plugin(xine_t *xine, void *data) { - post_class_deinterlace_t *class = (post_class_deinterlace_t *)xine_xmalloc(sizeof(post_class_deinterlace_t)); + post_class_deinterlace_t *class = calloc(1, sizeof(post_class_deinterlace_t)); uint32_t config_flags = xine_mm_accel(); int i; @@ -350,6 +362,7 @@ static void *deinterlace_init_plugin(xine_t *xine, void *data) class->init_param.method = 1; /* First (plugin) method available */ class->init_param.enabled = 1; class->init_param.pulldown = 1; /* vektor */ + class->init_param.pulldown_error_wait = 60; /* about one second */ class->init_param.framerate_mode = 0; /* full */ class->init_param.judder_correction = 1; class->init_param.use_progressive_frame_flag = 1; @@ -364,7 +377,7 @@ static post_plugin_t *deinterlace_open_plugin(post_class_t *class_gen, int input xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_deinterlace_t *this = (post_plugin_deinterlace_t *)xine_xmalloc(sizeof(post_plugin_deinterlace_t)); + post_plugin_deinterlace_t *this = calloc(1, sizeof(post_plugin_deinterlace_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/goom/Makefile.am b/src/post/goom/Makefile.am index c01482917..cd022c9b0 100644 --- a/src/post/goom/Makefile.am +++ b/src/post/goom/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common EXTRA_DIST = mmx.c xmmx.c ppc_drawings.s ppc_zoom_ultimate.s diff_against_release.patch \ diff --git a/src/post/goom/convolve_fx.c b/src/post/goom/convolve_fx.c index e86bb3723..ee36dfd0b 100644 --- a/src/post/goom/convolve_fx.c +++ b/src/post/goom/convolve_fx.c @@ -20,7 +20,7 @@ typedef char Motif[CONV_MOTIF_W][CONV_MOTIF_W]; #define NB_THETA 512 -#define MAX 2.0f +//#define MAX 2.0f typedef struct _CONV_DATA{ PluginParam light; @@ -73,7 +73,7 @@ static void set_motif(ConvData *data, Motif motif) static void convolve_init(VisualFX *_this, PluginInfo *info) { ConvData *data; - data = (ConvData*)malloc(sizeof(ConvData)); + data = (ConvData*)calloc(1, sizeof(ConvData)); _this->fx_data = (void*)data; data->light = secure_f_param("Screen Brightness"); diff --git a/src/post/goom/diff_against_release.patch b/src/post/goom/diff_against_release.patch index bde85c285..a5e84b8d1 100644 --- a/src/post/goom/diff_against_release.patch +++ b/src/post/goom/diff_against_release.patch @@ -653,3 +653,40 @@ diff -u -p -r1.2 -r1.3 #endif +diff -r 96c7f8460d61 src/post/goom/convolve_fx.c +--- convolve_fx.c Mon Nov 10 16:33:51 2008 +0100 ++++ convolve_fx.c Sun Nov 16 21:14:29 2008 +0100 +@@ -73,7 +73,7 @@ static void set_motif(ConvData *data, Mo + + static void convolve_init(VisualFX *_this, PluginInfo *info) { + ConvData *data; +- data = (ConvData*)malloc(sizeof(ConvData)); ++ data = (ConvData*)calloc(1, sizeof(ConvData)); + _this->fx_data = (void*)data; + + data->light = secure_f_param("Screen Brightness"); +diff -r 96c7f8460d61 src/post/goom/goom_core.c +--- goom_core.c Mon Nov 10 16:33:51 2008 +0100 ++++ goom_core.c Sun Nov 16 21:14:29 2008 +0100 +@@ -76,6 +76,10 @@ PluginInfo *goom_init (guint32 resx, gui + goomInfo->tentacles_fx = tentacle_fx_create(); + goomInfo->tentacles_fx.init(&goomInfo->tentacles_fx, goomInfo); + ++ goomInfo->screen.width = resx; ++ goomInfo->screen.height = resy; ++ goomInfo->screen.size = resx * resy; ++ + goomInfo->convolve_fx = convolve_create(); + goomInfo->convolve_fx.init(&goomInfo->convolve_fx, goomInfo); + +@@ -83,10 +87,6 @@ PluginInfo *goom_init (guint32 resx, gui + plugin_info_add_visual (goomInfo, 1, &goomInfo->tentacles_fx); + plugin_info_add_visual (goomInfo, 2, &goomInfo->star_fx); + plugin_info_add_visual (goomInfo, 3, &goomInfo->convolve_fx); +- +- goomInfo->screen.width = resx; +- goomInfo->screen.height = resy; +- goomInfo->screen.size = resx * resy; + + init_buffers(goomInfo, goomInfo->screen.size); + goomInfo->gRandom = goom_random_init((uintptr_t)goomInfo->pixel); diff --git a/src/post/goom/goom_core.c b/src/post/goom/goom_core.c index b24f2f496..62d9a27b6 100644 --- a/src/post/goom/goom_core.c +++ b/src/post/goom/goom_core.c @@ -76,6 +76,10 @@ PluginInfo *goom_init (guint32 resx, guint32 resy) goomInfo->tentacles_fx = tentacle_fx_create(); goomInfo->tentacles_fx.init(&goomInfo->tentacles_fx, goomInfo); + goomInfo->screen.width = resx; + goomInfo->screen.height = resy; + goomInfo->screen.size = resx * resy; + goomInfo->convolve_fx = convolve_create(); goomInfo->convolve_fx.init(&goomInfo->convolve_fx, goomInfo); @@ -84,10 +88,6 @@ PluginInfo *goom_init (guint32 resx, guint32 resy) plugin_info_add_visual (goomInfo, 2, &goomInfo->star_fx); plugin_info_add_visual (goomInfo, 3, &goomInfo->convolve_fx); - goomInfo->screen.width = resx; - goomInfo->screen.height = resy; - goomInfo->screen.size = resx * resy; - init_buffers(goomInfo, goomInfo->screen.size); goomInfo->gRandom = goom_random_init((uintptr_t)goomInfo->pixel); @@ -841,7 +841,7 @@ void update_message (PluginInfo *goomInfo, char *message) { if (message) { int i=1,j=0; - sprintf (goomInfo->update_message.message, "%s", message); + strcpy(goomInfo->update_message.message, message); for (j=0;goomInfo->update_message.message[j];j++) if (goomInfo->update_message.message[j]=='\n') i++; @@ -855,8 +855,8 @@ void update_message (PluginInfo *goomInfo, char *message) { char *ptr = msg; int pos; float ecart; + strncpy(msg, goomInfo->update_message.message, goomInfo->update_message.longueur); message = msg; - sprintf (msg, "%s", goomInfo->update_message.message); while (!fin) { while (1) { diff --git a/src/post/goom/ppc_zoom_ultimate.h b/src/post/goom/ppc_zoom_ultimate.h index d6932e7e6..d070071c9 100644 --- a/src/post/goom/ppc_zoom_ultimate.h +++ b/src/post/goom/ppc_zoom_ultimate.h @@ -11,4 +11,4 @@ void ppc_zoom_generic (int sizeX, int sizeY, Pixel *src, Pixel *dest, int *brutS, int *brutD, int buffratio, int precalCoef[16][16]); /* G4 Specific PowerPC Code (Possible use of Altivec and Data Streams) */ -void ppc_zoom_G4 (int sizeX, int sizeY, Pixel *src, Pixel *dest, int *brutS, int *brutD, int buffratio, int precalCoef[16][16]);
\ No newline at end of file +void ppc_zoom_G4 (int sizeX, int sizeY, Pixel *src, Pixel *dest, int *brutS, int *brutD, int buffratio, int precalCoef[16][16]); diff --git a/src/post/goom/xine_goom.c b/src/post/goom/xine_goom.c index 8cd06dbd6..db7079423 100644 --- a/src/post/goom/xine_goom.c +++ b/src/post/goom/xine_goom.c @@ -48,7 +48,7 @@ #define GOOM_HEIGHT 240 /* colorspace conversion methods */ -static const char const * goom_csc_methods[]={ +static const char* goom_csc_methods[]={ "Fast but not photorealistic", "Slow but looks better", NULL @@ -187,7 +187,7 @@ static void csc_method_changed_cb(void *data, xine_cfg_entry_t *cfg) { static void *goom_init_plugin(xine_t *xine, void *data) { - post_class_goom_t *this = (post_class_goom_t *)xine_xmalloc(sizeof(post_class_goom_t)); + post_class_goom_t *this = calloc(1, sizeof(post_class_goom_t)); config_values_t *cfg; if (!this) @@ -234,7 +234,7 @@ static post_plugin_t *goom_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_goom_t *this = (post_plugin_goom_t *)xine_xmalloc(sizeof(post_plugin_goom_t)); + post_plugin_goom_t *this = calloc(1, sizeof(post_plugin_goom_t)); post_class_goom_t *class = (post_class_goom_t*) class_gen; post_in_t *input; post_out_t *output; diff --git a/src/post/mosaico/Makefile.am b/src/post/mosaico/Makefile.am index af027b6e6..56426c711 100644 --- a/src/post/mosaico/Makefile.am +++ b/src/post/mosaico/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common xinepost_LTLIBRARIES = xineplug_post_mosaico.la xineplug_post_switch.la diff --git a/src/post/mosaico/mosaico.c b/src/post/mosaico/mosaico.c index 50b1cfcdf..c9ac9ab4c 100644 --- a/src/post/mosaico/mosaico.c +++ b/src/post/mosaico/mosaico.c @@ -22,6 +22,10 @@ * simple video mosaico plugin */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #define LOG_MODULE "mosaico" #define LOG_VERBOSE /* @@ -122,7 +126,7 @@ static int mosaico_draw(vo_frame_t *frame, xine_stream_t *stream); static void *mosaico_init_plugin(xine_t *xine, void *data) { - post_class_mosaico_t *this = (post_class_mosaico_t *)xine_xmalloc(sizeof(post_class_mosaico_t)); + post_class_mosaico_t *this = calloc(1, sizeof(post_class_mosaico_t)); if (!this) return NULL; @@ -140,7 +144,7 @@ static post_plugin_t *mosaico_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_mosaico_t *this = (post_mosaico_t *)xine_xmalloc(sizeof(post_mosaico_t)); + post_mosaico_t *this = calloc(1, sizeof(post_mosaico_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; @@ -158,7 +162,7 @@ static post_plugin_t *mosaico_open_plugin(post_class_t *class_gen, int inputs, _x_post_init(&this->post, 0, inputs); - this->pip = (mosaico_pip_t *)xine_xmalloc(sizeof(mosaico_pip_t) * (inputs - 1)); + this->pip = (mosaico_pip_t *)calloc((inputs - 1), sizeof(mosaico_pip_t)); this->pip_count = inputs - 1; pthread_cond_init(&this->vpts_limit_changed, NULL); @@ -178,8 +182,7 @@ static post_plugin_t *mosaico_open_plugin(post_class_t *class_gen, int inputs, this->pip[i].y = 50; this->pip[i].w = 150; this->pip[i].h = 150; - this->pip[i].input_name = (char *)xine_xmalloc(sizeof("video in ") + 10); - snprintf(this->pip[i].input_name, sizeof("video in ") + 10, "video in %d", i+1); + asprintf(&(this->pip[i].input_name), "video in %d", i+1); port = _x_post_intercept_video_port(&this->post, video_target[0], &input, NULL); port->new_port.close = mosaico_close; diff --git a/src/post/mosaico/switch.c b/src/post/mosaico/switch.c index 8fec5ee77..a01c821b2 100644 --- a/src/post/mosaico/switch.c +++ b/src/post/mosaico/switch.c @@ -101,7 +101,7 @@ static int switch_draw(vo_frame_t *frame, xine_stream_t *stream); static void *switch_init_plugin(xine_t *xine, void *data) { - post_class_switch_t *this = (post_class_switch_t *)xine_xmalloc(sizeof(post_class_switch_t)); + post_class_switch_t *this = calloc(1, sizeof(post_class_switch_t)); if (!this) return NULL; @@ -119,7 +119,7 @@ static post_plugin_t *switch_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_switch_t *this = (post_switch_t *)xine_xmalloc(sizeof(post_switch_t)); + post_switch_t *this = calloc(1, sizeof(post_switch_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/planar/Makefile.am b/src/post/planar/Makefile.am index 4ba6bfa41..751ea390a 100644 --- a/src/post/planar/Makefile.am +++ b/src/post/planar/Makefile.am @@ -1,12 +1,13 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common POSTPROC_INT_LIB = $(top_builddir)/src/libffmpeg/libavcodec/libpostproc/libpostprocess.la if HAVE_FFMPEG postproc_lib = $(FFMPEG_POSTPROC_LIBS) -ff_cflags = $(FFMPEG_POSTPROC_CFLAGS) +ff_cflags = $(FFMPEG_CFLAGS) $(FFMPEG_POSTPROC_CFLAGS) else -ff_cflags = -I$(top_srcdir)/src/libffmpeg/libavcodec/libpostproc +ff_cflags = -I$(top_srcdir)/src/libffmpeg/libavcodec postproc_lib = $(POSTPROC_INT_LIB) postproc_dep = $(postproc_lib) endif diff --git a/src/post/planar/boxblur.c b/src/post/planar/boxblur.c index b7a6f524f..517cec489 100644 --- a/src/post/planar/boxblur.c +++ b/src/post/planar/boxblur.c @@ -21,6 +21,10 @@ * Copyright (C) 2002 Michael Niedermayer <michaelni@gmx.at> */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" @@ -154,7 +158,7 @@ static post_plugin_t *boxblur_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_boxblur_t *this = (post_plugin_boxblur_t *)xine_xmalloc(sizeof(post_plugin_boxblur_t)); + post_plugin_boxblur_t *this = calloc(1, sizeof(post_plugin_boxblur_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/planar/denoise3d.c b/src/post/planar/denoise3d.c index fb3c1102b..21b58dbf9 100644 --- a/src/post/planar/denoise3d.c +++ b/src/post/planar/denoise3d.c @@ -21,6 +21,10 @@ * Copyright (C) 2003 Daniel Moreno <comac@comac.darktech.org> */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" @@ -194,7 +198,7 @@ static post_plugin_t *denoise3d_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_denoise3d_t *this = (post_plugin_denoise3d_t *)xine_xmalloc(sizeof(post_plugin_denoise3d_t)); + post_plugin_denoise3d_t *this = calloc(1, sizeof(post_plugin_denoise3d_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/planar/eq.c b/src/post/planar/eq.c index b2cf6e50f..45bc43463 100644 --- a/src/post/planar/eq.c +++ b/src/post/planar/eq.c @@ -21,6 +21,10 @@ * Copyright (C) Richard Felker */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" @@ -246,7 +250,7 @@ static post_plugin_t *eq_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_eq_t *this = (post_plugin_eq_t *)xine_xmalloc(sizeof(post_plugin_eq_t)); + post_plugin_eq_t *this = calloc(1, sizeof(post_plugin_eq_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/planar/eq2.c b/src/post/planar/eq2.c index 6b277c347..1a301fdab 100644 --- a/src/post/planar/eq2.c +++ b/src/post/planar/eq2.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2006 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -25,6 +25,10 @@ * Richard Felker (original MMX contrast/brightness code (vf_eq.c)) */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" @@ -427,13 +431,11 @@ static post_plugin_t *eq2_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_eq2_t *this = (post_plugin_eq2_t *)xine_xmalloc(sizeof(post_plugin_eq2_t)); + post_plugin_eq2_t *this = calloc(1, sizeof(post_plugin_eq2_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; post_video_port_t *port; - vf_eq2_t *eq2; - int i; if (!this || !video_target || !video_target[0]) { free(this); @@ -442,26 +444,15 @@ static post_plugin_t *eq2_open_plugin(post_class_t *class_gen, int inputs, _x_post_init(&this->post, 0, 1); - eq2 = &this->eq2; - for (i = 0; i < 3; i++) { - eq2->buf[i] = NULL; - eq2->buf_w[i] = 0; - eq2->buf_h[i] = 0; - - eq2->param[i].adjust = NULL; - eq2->param[i].c = 1.0; - eq2->param[i].b = 0.0; - eq2->param[i].g = 1.0; - eq2->param[i].lut_clean = 0; - } + memset(&this->eq2, 0, sizeof(this->eq2)); - eq2->gamma = this->params.gamma = 1.0; - eq2->contrast = this->params.contrast = 1.0; - eq2->brightness = this->params.brightness = 0.0; - eq2->saturation = this->params.saturation = 1.0; - eq2->rgamma = this->params.rgamma = 1.0; - eq2->ggamma = this->params.ggamma = 1.0; - eq2->bgamma = this->params.bgamma = 1.0; + this->eq2.gamma = this->params.gamma = 1.0; + this->eq2.contrast = this->params.contrast = 1.0; + this->eq2.brightness = this->params.brightness = 0.0; + this->eq2.saturation = this->params.saturation = 1.0; + this->eq2.rgamma = this->params.rgamma = 1.0; + this->eq2.ggamma = this->params.ggamma = 1.0; + this->eq2.bgamma = this->params.bgamma = 1.0; pthread_mutex_init(&this->lock, NULL); diff --git a/src/post/planar/expand.c b/src/post/planar/expand.c index 67d449153..52bc2b37a 100644 --- a/src/post/planar/expand.c +++ b/src/post/planar/expand.c @@ -148,7 +148,7 @@ static post_plugin_t *expand_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_expand_t *this = (post_expand_t *)xine_xmalloc(sizeof(post_expand_t)); + post_expand_t *this = calloc(1, sizeof(post_expand_t)); post_in_t *input; xine_post_in_t *input_param; post_out_t *output; diff --git a/src/post/planar/fill.c b/src/post/planar/fill.c index 32a9d5dfb..98c572777 100644 --- a/src/post/planar/fill.c +++ b/src/post/planar/fill.c @@ -66,7 +66,7 @@ static post_plugin_t *fill_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_t *this = (post_plugin_t *)xine_xmalloc(sizeof(post_plugin_t)); + post_plugin_t *this = calloc(1, sizeof(post_plugin_t)); post_in_t *input; post_out_t *output; post_video_port_t *port; diff --git a/src/post/planar/invert.c b/src/post/planar/invert.c index 1aa5c2a2e..d1f0c8d4e 100644 --- a/src/post/planar/invert.c +++ b/src/post/planar/invert.c @@ -67,7 +67,7 @@ static post_plugin_t *invert_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_t *this = (post_plugin_t *)xine_xmalloc(sizeof(post_plugin_t)); + post_plugin_t *this = calloc(1, sizeof(post_plugin_t)); post_in_t *input; post_out_t *output; post_video_port_t *port; diff --git a/src/post/planar/noise.c b/src/post/planar/noise.c index 8c04f2e72..f639fce76 100644 --- a/src/post/planar/noise.c +++ b/src/post/planar/noise.c @@ -21,6 +21,10 @@ * is copyright 2002 Michael Niedermayer <michaelni@gmx.at> */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" @@ -471,7 +475,7 @@ static post_plugin_t *noise_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_noise_t *this = (post_plugin_noise_t *)xine_xmalloc(sizeof(post_plugin_noise_t)); + post_plugin_noise_t *this = calloc(1, sizeof(post_plugin_noise_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/planar/planar.c b/src/post/planar/planar.c index 5907d58e5..e1c9681ab 100644 --- a/src/post/planar/planar.c +++ b/src/post/planar/planar.c @@ -20,6 +20,10 @@ * catalog for planar post plugins */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" diff --git a/src/post/planar/pp.c b/src/post/planar/pp.c index e13119311..1ce45e381 100644 --- a/src/post/planar/pp.c +++ b/src/post/planar/pp.c @@ -20,12 +20,21 @@ * plugin for ffmpeg libpostprocess */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" -#include "postprocess.h" #include <pthread.h> +#ifdef HAVE_FFMPEG_AVUTIL_H +# include <postprocess.h> +#else +# include <libpostproc/postprocess.h> +#endif + #define PP_STRING_SIZE 256 /* size of pp mode string (including all options) */ /* plugin class initialization function */ @@ -114,12 +123,9 @@ static char * get_help (void) { ); static char *help = NULL; - if( !help ) { - help = malloc( strlen(help1) + strlen(help2) + strlen(pp_help) + 1); - strcpy(help, help1); - strcat(help, pp_help); - strcat(help, help2); - } + if( !help ) + asprintf(&help, "%s%s%s", help1, help2, pp_help); + return help; } @@ -169,7 +175,7 @@ static post_plugin_t *pp_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_pp_t *this = (post_plugin_pp_t *)xine_xmalloc(sizeof(post_plugin_pp_t)); + post_plugin_pp_t *this = calloc(1, sizeof(post_plugin_pp_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/planar/unsharp.c b/src/post/planar/unsharp.c index b9b791a8e..6fac727ce 100644 --- a/src/post/planar/unsharp.c +++ b/src/post/planar/unsharp.c @@ -21,18 +21,15 @@ * Copyright (C) 2002 Rémi Guyomarch <rguyom@pobox.com> */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xine_internal.h" #include "post.h" #include "xineutils.h" #include <pthread.h> -#ifndef MIN -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif -#ifndef MAX -#define MAX(a,b) (((a)>(b))?(a):(b)) -#endif - /*===========================================================================*/ #define MIN_MATRIX_SIZE 3 @@ -287,7 +284,7 @@ static post_plugin_t *unsharp_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_unsharp_t *this = (post_plugin_unsharp_t *)xine_xmalloc(sizeof(post_plugin_unsharp_t)); + post_plugin_unsharp_t *this = calloc(1, sizeof(post_plugin_unsharp_t)); post_in_t *input; xine_post_in_t *input_api; post_out_t *output; diff --git a/src/post/visualizations/Makefile.am b/src/post/visualizations/Makefile.am index f42598d9c..a766bc10a 100644 --- a/src/post/visualizations/Makefile.am +++ b/src/post/visualizations/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common EXTRA_DIST = fooviz.c diff --git a/src/post/visualizations/fftgraph.c b/src/post/visualizations/fftgraph.c index 5068bd37a..8bd30ed5c 100644 --- a/src/post/visualizations/fftgraph.c +++ b/src/post/visualizations/fftgraph.c @@ -21,6 +21,10 @@ * by Thibaut Mattern (tmattern@noos.fr) */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <math.h> @@ -415,7 +419,7 @@ static post_plugin_t *fftgraph_open_plugin(post_class_t *class_gen, int inputs, xine_video_port_t **video_target) { post_class_fftgraph_t *class = (post_class_fftgraph_t *)class_gen; - post_plugin_fftgraph_t *this = (post_plugin_fftgraph_t *)xine_xmalloc(sizeof(post_plugin_fftgraph_t)); + post_plugin_fftgraph_t *this = calloc(1, sizeof(post_plugin_fftgraph_t)); post_in_t *input; post_out_t *output; post_out_t *outputv; diff --git a/src/post/visualizations/fftscope.c b/src/post/visualizations/fftscope.c index ba34437f5..ccff59634 100644 --- a/src/post/visualizations/fftscope.c +++ b/src/post/visualizations/fftscope.c @@ -23,6 +23,10 @@ * FFT code by Steve Haehnichen, originally licensed under GPL v1 */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <math.h> @@ -435,7 +439,7 @@ static post_plugin_t *fftscope_open_plugin(post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target) { - post_plugin_fftscope_t *this = (post_plugin_fftscope_t *)xine_xmalloc(sizeof(post_plugin_fftscope_t)); + post_plugin_fftscope_t *this = calloc(1, sizeof(post_plugin_fftscope_t)); post_class_fftscope_t *class = (post_class_fftscope_t *)class_gen; post_in_t *input; post_out_t *output; diff --git a/src/post/visualizations/fooviz.c b/src/post/visualizations/fooviz.c index 21854afc6..c645601fc 100644 --- a/src/post/visualizations/fooviz.c +++ b/src/post/visualizations/fooviz.c @@ -24,6 +24,10 @@ * colors on each iteration. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xine_internal.h" @@ -247,7 +251,7 @@ static post_plugin_t *fooviz_open_plugin(post_class_t *class_gen, int inputs, xine_video_port_t **video_target) { post_class_fooviz_t *class = (post_class_fooviz_t *)class_gen; - post_plugin_fooviz_t *this = (post_plugin_fooviz_t *)xine_xmalloc(sizeof(post_plugin_fooviz_t)); + post_plugin_fooviz_t *this = calloc(1, sizeof(post_plugin_fooviz_t)); post_in_t *input; post_out_t *output; post_out_t *outputv; diff --git a/src/post/visualizations/oscope.c b/src/post/visualizations/oscope.c index a435604d4..a2c9c6961 100644 --- a/src/post/visualizations/oscope.c +++ b/src/post/visualizations/oscope.c @@ -21,6 +21,10 @@ * by Mike Melanson (melanson@pcisys.net) */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include "xine_internal.h" @@ -318,7 +322,7 @@ static post_plugin_t *oscope_open_plugin(post_class_t *class_gen, int inputs, xine_video_port_t **video_target) { post_class_oscope_t *class = (post_class_oscope_t *)class_gen; - post_plugin_oscope_t *this = (post_plugin_oscope_t *)xine_xmalloc(sizeof(post_plugin_oscope_t)); + post_plugin_oscope_t *this = calloc(1, sizeof(post_plugin_oscope_t)); post_in_t *input; post_out_t *output; post_out_t *outputv; diff --git a/src/video_out/Makefile.am b/src/video_out/Makefile.am index d447417c5..3e182fc14 100644 --- a/src/video_out/Makefile.am +++ b/src/video_out/Makefile.am @@ -1,3 +1,4 @@ +include $(top_builddir)/misc/Makefile.plugins include $(top_srcdir)/misc/Makefile.common AM_CPPFLAGS = -DXINE_COMPILE @@ -100,6 +101,7 @@ xineplug_LTLIBRARIES = $(xshm_module) $(xv_module) $(xvmc_module) \ $(xxmc_module) \ $(xcbshm_module) \ $(xcbxv_module) \ + xineplug_vo_out_raw.la \ xineplug_vo_out_none.la xineplug_vo_out_xcbshm_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c video_out_xcbshm.c $(XCBOSD) @@ -130,11 +132,11 @@ xineplug_vo_out_xxmc_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) $(XV_CFLAGS) -fn xineplug_vo_out_opengl_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c \ video_out_opengl.c myglext.h $(X11OSD) -xineplug_vo_out_opengl_la_LIBADD = $(MLIB_LIBS) $(OPENGL_LIBS) $(GLUT_LIBS) \ - $(GLU_LIBS) $(X_LIBS) $(XINE_LIB) $(PTHREAD_LIBS) $(DYNAMIC_LD_LIBS) $(LTLIBINTL) +xineplug_vo_out_opengl_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(OPENGL_LIBS) \ + $(GLUT_LIBS) $(GLU_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(DYNAMIC_LD_LIBS) $(LTLIBINTL) xineplug_vo_out_opengl_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) $(MLIB_CFLAGS) -fno-strict-aliasing -xineplug_vo_out_syncfb_la_SOURCES = video_out_syncfb.c +xineplug_vo_out_syncfb_la_SOURCES = video_out_syncfb.c xineplug_vo_out_syncfb_la_LIBADD = $(XINE_LIB) $(X_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL) xineplug_vo_out_syncfb_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) @@ -177,28 +179,32 @@ xineplug_vo_out_sdl_la_SOURCES = video_out_sdl.c xineplug_vo_out_sdl_la_LIBADD = $(XINE_LIB) $(SDL_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL) xineplug_vo_out_sdl_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) $(SDL_CFLAGS) -xineplug_vo_out_stk_la_SOURCES = video_out_stk.c +xineplug_vo_out_stk_la_SOURCES = video_out_stk.c xineplug_vo_out_stk_la_LIBADD = $(XINE_LIB) $(LIBSTK_LIBS) $(PTHREAD_LIBS) xineplug_vo_out_stk_la_CFLAGS = $(VISIBILITY_FLAG) $(LIBSTK_CFLAGS) -xineplug_vo_out_directx_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c video_out_directx.c +xineplug_vo_out_directx_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c video_out_directx.c xineplug_vo_out_directx_la_CPPFLAGS = $(AM_CPPFLAGS) $(DIRECTX_CPPFLAGS) -xineplug_vo_out_directx_la_LIBADD = $(XINE_LIB) $(DIRECTX_VIDEO_LIBS) $(PTHREAD_LIBS) +xineplug_vo_out_directx_la_LIBADD = $(XINE_LIB) $(DIRECTX_VIDEO_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL) xineplug_vo_out_directx_la_CFLAGS = $(VISIBILITY_FLAG) xineplug_vo_out_none_la_SOURCES = video_out_none.c xineplug_vo_out_none_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL) xineplug_vo_out_none_la_CFLAGS = $(VISIBILITY_FLAG) +xineplug_vo_out_raw_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c video_out_raw.c +xineplug_vo_out_raw_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL) +xineplug_vo_out_raw_la_CFLAGS = $(VISIBILITY_FLAG) + xineplug_vo_out_macosx_la_SOURCES = video_out_macosx.m xineplug_vo_out_macosx_la_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) $(MLIB_CFLAGS) xineplug_vo_out_macosx_la_OBJCFLAGS = $(VISIBILITY_FLAG) -xineplug_vo_out_macosx_la_LIBADD = $(MLIB_LIBS) $(OPENGL_LIBS) $(GLUT_LIBS) \ - $(GLU_LIBS) $(X_LIBS) $(XINE_LIB) $(PTHREAD_LIBS) +xineplug_vo_out_macosx_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(OPENGL_LIBS) \ + $(GLUT_LIBS) $(GLU_LIBS) $(X_LIBS) $(PTHREAD_LIBS) # The "-Wl,-framework -Wl,Cocoa" is needed for libtool versions before # 1.5.x (1.257): the default version that ships with Mac OS X is 1.5 (1.1220) xineplug_vo_out_macosx_la_LDFLAGS = $(AM_LDFLAGS) \ -Wl,-framework -Wl,Cocoa -framework Cocoa -framework OpenGL noinst_HEADERS = deinterlace.h video_out_syncfb.h \ - yuv2rgb.h x11osd.h xcbosd.h + yuv2rgb.h x11osd.h xcbosd.h xv_common.h diff --git a/src/video_out/deinterlace.c b/src/video_out/deinterlace.c index 8ba161ebb..712e9a83e 100644 --- a/src/video_out/deinterlace.c +++ b/src/video_out/deinterlace.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 the xine project + * Copyright (C) 2001-2008 the xine project * * This file is part of xine, a free video player. * @@ -30,6 +30,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <string.h> #include "xine_internal.h" @@ -37,6 +41,18 @@ #include "xineutils.h" +const char *deinterlace_methods[] = { + "none", + "bob", + "weave", + "greedy", + "onefield", + "onefield_xv", + "linearblend", + NULL +}; + + /* DeinterlaceFieldBob algorithm Based on Virtual Dub plugin by Gunnar Thalin diff --git a/src/video_out/deinterlace.h b/src/video_out/deinterlace.h index 2ebbf53d9..d7712f581 100644 --- a/src/video_out/deinterlace.h +++ b/src/video_out/deinterlace.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 the xine project + * Copyright (C) 2001-2008 the xine project * * This file is part of xine, a free video player. * @@ -41,15 +41,6 @@ void deinterlace_yuv( uint8_t *pdst, uint8_t *psrc[], #define DEINTERLACE_ONEFIELDXV 5 #define DEINTERLACE_LINEARBLEND 6 -static const char *deinterlace_methods[] = { - "none", - "bob", - "weave", - "greedy", - "onefield", - "onefield_xv", - "linearblend", - NULL -}; +extern const char *deinterlace_methods[]; #endif diff --git a/src/video_out/macosx/XineOpenGLView.m b/src/video_out/macosx/XineOpenGLView.m index a9ffee00f..1f947ca16 100644 --- a/src/video_out/macosx/XineOpenGLView.m +++ b/src/video_out/macosx/XineOpenGLView.m @@ -340,7 +340,7 @@ NSColorToYUV(NSColor *color) // http://developer.apple.com/samplecode/Sample_Code/Graphics_3D/TextureRange/MainOpenGLView.m.htm glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, videoSize.width, videoSize.height, GL_YCBCR_422_APPLE, -#if WORDS_BIG_ENDIAN +#if WORDS_BIGENDIAN GL_UNSIGNED_SHORT_8_8_APPLE, #else GL_UNSIGNED_SHORT_8_8_REV_APPLE, diff --git a/src/video_out/video_out_aa.c b/src/video_out/video_out_aa.c index 012db9665..770b75a10 100644 --- a/src/video_out/video_out_aa.c +++ b/src/video_out/video_out_aa.c @@ -106,7 +106,7 @@ static vo_frame_t *aa_alloc_frame(vo_driver_t *this_gen) { /* aa_driver_t *this = (aa_driver_t*) this_gen; */ aa_frame_t *frame; - frame = (aa_frame_t *) xine_xmalloc (sizeof (aa_frame_t)); + frame = calloc(1, sizeof (aa_frame_t)); if (!frame) return NULL; @@ -276,7 +276,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi aa_class_t *class = (aa_class_t *) class_gen; aa_driver_t *this; - this = (aa_driver_t*) xine_xmalloc (sizeof (aa_driver_t)); + this = (aa_driver_t*) calloc(1, sizeof(aa_driver_t)); this->context = (aa_context*) visual_gen; @@ -316,7 +316,7 @@ static void *init_class (xine_t *xine, void *visual_gen) { /* aa_context *context = (aa_context*) visual_gen; */ aa_class_t *this; - this = (aa_class_t *) xine_xmalloc(sizeof(aa_class_t)); + this = calloc(1, sizeof(aa_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_caca.c b/src/video_out/video_out_caca.c index 866eabcd8..65ebf707e 100644 --- a/src/video_out/video_out_caca.c +++ b/src/video_out/video_out_caca.c @@ -120,7 +120,7 @@ static vo_frame_t *caca_alloc_frame(vo_driver_t *this_gen) { caca_driver_t *this = (caca_driver_t*) this_gen; caca_frame_t *frame; - frame = (caca_frame_t *) xine_xmalloc (sizeof (caca_frame_t)); + frame = calloc(1, sizeof (caca_frame_t)); if (!frame) return NULL; @@ -276,9 +276,10 @@ static int caca_redraw_needed (vo_driver_t *this_gen) { static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *visual_gen) { caca_class_t *class = (caca_class_t *) class_gen; + caca_display_t *dp = (caca_display_t *)visual_gen; caca_driver_t *this; - this = (caca_driver_t*) xine_xmalloc (sizeof (caca_driver_t)); + this = calloc(1, sizeof (caca_driver_t)); this->config = class->config; this->xine = class->xine; @@ -300,8 +301,13 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi this->yuv2rgb_factory = yuv2rgb_factory_init(MODE_32_RGB, 0, NULL); this->yuv2rgb_factory->set_csc_levels(this->yuv2rgb_factory, 0, 128, 128); - this->cv = cucul_create_canvas(0, 0); - this->dp = caca_create_display(this->cv); + if (dp) { + this->cv = caca_get_canvas(dp); + this->dp = dp; + } else { + this->cv = cucul_create_canvas(0, 0); + this->dp = caca_create_display(this->cv); + } caca_refresh_display(this->dp); return &this->vo_driver; @@ -322,7 +328,7 @@ static void dispose_class (video_driver_class_t *this_gen) { static void *init_class (xine_t *xine, void *visual_gen) { caca_class_t *this; - this = (caca_class_t *) xine_xmalloc(sizeof(caca_class_t)); + this = calloc(1, sizeof(caca_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_directfb.c b/src/video_out/video_out_directfb.c index e6e333a0c..2e9874cc0 100644 --- a/src/video_out/video_out_directfb.c +++ b/src/video_out/video_out_directfb.c @@ -168,10 +168,6 @@ typedef struct { "no-deinit-check" -#ifndef MAX -# define MAX( a, b ) (((a) > (b)) ? (a) : (b)) -#endif - #define YCBCR_TO_RGB( y, cb, cr, r, g, b ) \ do { \ int _y, _cb, _cr, _r, _g, _b; \ @@ -232,7 +228,7 @@ static vo_frame_t *directfb_alloc_frame (vo_driver_t *this_gen) { directfb_driver_t *this = (directfb_driver_t *) this_gen; directfb_frame_t *frame; - frame = (directfb_frame_t *) xine_xmalloc (sizeof (directfb_frame_t)); + frame = (directfb_frame_t *) calloc(1, sizeof(directfb_frame_t)); if (!frame) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_directfb: directfb_alloc_frame: out of memory\n"); @@ -1753,7 +1749,7 @@ static vo_driver_t *open_plugin_fb (video_driver_class_t *class_gen, const void DFBDisplayLayerID id; DFBResult ret; - this = xine_xmalloc (sizeof (directfb_driver_t)); + this = calloc(1, sizeof(directfb_driver_t)); if (!this) return NULL; @@ -1908,7 +1904,7 @@ static void *init_class_fb (xine_t *xine, void *visual_gen) { return NULL; } - this = (directfb_class_t *) xine_xmalloc (sizeof (directfb_class_t)); + this = (directfb_class_t *) calloc(1, sizeof(directfb_class_t)); this->driver_class.open_plugin = open_plugin_fb; this->driver_class.get_identifier = get_identifier_fb; this->driver_class.get_description = get_description_fb; @@ -1939,7 +1935,7 @@ static vo_driver_t *open_plugin_x11 (video_driver_class_t *class_gen, const void DFBDisplayLayerID id = DLID_PRIMARY; DFBResult ret; - this = xine_xmalloc (sizeof (directfb_driver_t)); + this = calloc(1, sizeof(directfb_driver_t)); if (!this) return NULL; @@ -2127,7 +2123,7 @@ static void *init_class_x11 (xine_t *xine, void *visual_gen) { if (strcmp (XServerVendor (visual->display), "Denis Oliver Kropp")) return NULL; - this = (directfb_class_t *) xine_xmalloc (sizeof (directfb_class_t)); + this = (directfb_class_t *) calloc(1, sizeof(directfb_class_t)); this->driver_class.open_plugin = open_plugin_x11; this->driver_class.get_identifier = get_identifier_x11; this->driver_class.get_description = get_description_x11; diff --git a/src/video_out/video_out_directx.c b/src/video_out/video_out_directx.c index 11ee709e1..3c6f6e784 100644 --- a/src/video_out/video_out_directx.c +++ b/src/video_out/video_out_directx.c @@ -21,6 +21,10 @@ * by Matthew Grooms <elon@altavista.com> */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + typedef unsigned char boolean; #include <windows.h> @@ -55,21 +59,33 @@ typedef unsigned char boolean; * the linking stage. *****************************************************************************/ #if 1 -static const GUID IID_IDirectDraw = { +static const GUID xine_IID_IDirectDraw = { 0x6C14DB80,0xA733,0x11CE,{0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60} }; +#ifdef IID_IDirectDraw +# undef IID_IDirectDraw +#endif +#define IID_IDirectDraw xine_IID_IDirectDraw #endif #if 0 static const GUID IID_IDirectDraw2 = { 0xB3A6F3E0,0x2B43,0x11CF,{0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56} }; +#ifdef IID_IDirectDraw2 +# undef IID_IDirectDraw2 +#endif +#define IID_IDirectDraw2 xine_IID_IDirectDraw2 #endif #if 0 static const GUID IID_IDirectDraw4 = { 0x9C59509A,0x39BD,0x11D1,{0x8C,0x4A,0x00,0xC0,0x4F,0xD9,0x30,0xC5} }; +#ifdef IID_IDirectDraw4 +# undef IID_IDirectDraw4 +#endif +#define IID_IDirectDraw4 xine_IID_IDirectDraw4 #endif /* ----------------------------------------- @@ -117,7 +133,8 @@ typedef struct { yuv2rgb_t *yuv2rgb; /* used for format conversion */ int mode; /* rgb mode */ int bytespp; /* rgb bits per pixel */ - + DDPIXELFORMAT primary_pixel_format; + DDSURFACEDESC ddsd; /* set by Lock(), used during display_frame */ alphablend_t alphablend_extra_data; } win32_driver_t; @@ -367,8 +384,9 @@ static boolean CreateSecondary( win32_driver_t * win32_driver, int width, int he lprintf("CreateSecondary() - Falling back to back buffer same as primary\n"); lprintf("CreateSecondary() - act_format = (NATIVE) %d\n", IMGFMT_NATIVE); - ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; + ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; + ddsd.ddpfPixelFormat = win32_driver->primary_pixel_format; win32_driver->act_format = IMGFMT_NATIVE; if( IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK ) @@ -429,6 +447,10 @@ static boolean CheckPixelFormat( win32_driver_t * win32_driver ) Error( 0, "IDirectDrawSurface_GetPixelFormat ( CheckPixelFormat ) : error 0x%lx", result ); return 0; } + + /* store pixel format for CreateSecondary */ + + win32_driver->primary_pixel_format = ddpf; /* TODO : support paletized video modes */ @@ -478,9 +500,11 @@ static boolean CheckPixelFormat( win32_driver_t * win32_driver ) win32_driver->mode = MODE_15_BGR; } + lprintf("win32 mode: %u\n", win32_driver->mode); return TRUE; } +#if 0 /* Create a Direct draw surface from * a bitmap resource.. * @@ -546,6 +570,7 @@ static LPDIRECTDRAWSURFACE CreateBMP( win32_driver_t * win32_driver, int resourc return bmp_surf; } +#endif /* Merge overlay with the current primary * surface. This funtion is only used when @@ -755,23 +780,22 @@ static boolean DisplayFrame( win32_driver_t * win32_driver ) /* Lock our back buffer to update its contents. */ -static void * Lock( void * surface ) +static void * Lock( win32_driver_t * win32_driver, void * surface ) { LPDIRECTDRAWSURFACE lock_surface = ( LPDIRECTDRAWSURFACE ) surface; - DDSURFACEDESC ddsd; HRESULT result; if( !surface ) return 0; - memset( &ddsd, 0, sizeof( ddsd ) ); - ddsd.dwSize = sizeof( ddsd ); + memset( &win32_driver->ddsd, 0, sizeof( win32_driver->ddsd ) ); + win32_driver->ddsd.dwSize = sizeof( win32_driver->ddsd ); - result = IDirectDrawSurface_Lock( lock_surface, 0, &ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); + result = IDirectDrawSurface_Lock( lock_surface, 0, &win32_driver->ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); if( result == DDERR_SURFACELOST ) { IDirectDrawSurface_Restore( lock_surface ); - result = IDirectDrawSurface_Lock( lock_surface, 0, &ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); + result = IDirectDrawSurface_Lock( lock_surface, 0, &win32_driver->ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); if( result != DD_OK ) return 0; @@ -786,7 +810,7 @@ static void * Lock( void * surface ) } } - return ddsd.lpSurface; + return win32_driver->ddsd.lpSurface; } /* Unlock our back buffer to prepair for display. */ @@ -863,7 +887,7 @@ static vo_frame_t * win32_alloc_frame( vo_driver_t * vo_driver ) { win32_frame_t *win32_frame; - win32_frame = ( win32_frame_t * ) xine_xmalloc( sizeof( win32_frame_t ) ); + win32_frame = calloc(1, sizeof(win32_frame_t)); if (!win32_frame) return NULL; @@ -946,8 +970,6 @@ static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame { win32_driver_t *win32_driver = ( win32_driver_t * ) vo_driver; win32_frame_t *win32_frame = ( win32_frame_t * ) vo_frame; - int offset; - int size; /* if the required width, height or format has changed @@ -966,7 +988,7 @@ static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame /* lock our surface to update its contents */ - win32_driver->contents = Lock( win32_driver->secondary ); + win32_driver->contents = Lock( win32_driver, win32_driver->secondary ); /* surface unavailable, skip frame render */ @@ -1051,37 +1073,47 @@ static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame /* the actual format is identical to our * stream format. we just need to copy it */ - switch(win32_frame->format) + int line; + uint8_t * src; + vo_frame_t * frame = vo_frame; + uint8_t * dst = (uint8_t *)win32_driver->contents; + + switch(win32_frame->format) { - case XINE_IMGFMT_YV12: - { - vo_frame_t *frame; - uint8_t *img; - - frame = vo_frame; - img = (uint8_t *)win32_driver->contents; - - offset = 0; - size = frame->pitches[0] * frame->height; - xine_fast_memcpy( img+offset, frame->base[0], size); - - offset += size; - size = frame->pitches[2]* frame->height / 2; - xine_fast_memcpy( img+offset, frame->base[2], size); - - offset += size; - size = frame->pitches[1] * frame->height / 2; - xine_fast_memcpy( img+offset, frame->base[1], size); - } + case XINE_IMGFMT_YV12: + src = frame->base[0]; + for (line = 0; line < frame->height ; line++){ + xine_fast_memcpy( dst, src, frame->width); + src += vo_frame->pitches[0]; + dst += win32_driver->ddsd.lPitch; + } + + src = frame->base[2]; + for (line = 0; line < frame->height/2 ; line++){ + xine_fast_memcpy( dst, src, frame->width/2); + src += vo_frame->pitches[2]; + dst += win32_driver->ddsd.lPitch/2; + } + + src = frame->base[1]; + for (line = 0; line < frame->height/2 ; line++){ + xine_fast_memcpy( dst, src, frame->width/2); + src += vo_frame->pitches[1]; + dst += win32_driver->ddsd.lPitch/2; + } break; + case XINE_IMGFMT_YUY2: - xine_fast_memcpy( win32_driver->contents, win32_frame->vo_frame.base[0], win32_frame->vo_frame.pitches[0] * win32_frame->vo_frame.height * 2); - break; default: - xine_fast_memcpy( win32_driver->contents, win32_frame->vo_frame.base[0], win32_frame->vo_frame.pitches[0] * win32_frame->vo_frame.height * 2); + src = frame->base[0]; + for (line = 0; line < frame->height ; line++){ + xine_fast_memcpy( dst, src, frame->width*2); + src += vo_frame->pitches[0]; + dst += win32_driver->ddsd.lPitch; + } break; } - } + } /* unlock the surface */ @@ -1143,11 +1175,38 @@ static int win32_gui_data_exchange( vo_driver_t * vo_driver, int data_type, void switch( data_type ) { + case GUI_WIN32_MOVED_OR_RESIZED: UpdateRect( win32_driver->win32_visual ); DisplayFrame( win32_driver ); break; + case XINE_GUI_SEND_DRAWABLE_CHANGED: + { + HRESULT result; + HWND newWndHnd = (HWND) data; + + /* set cooperative level */ + result = IDirectDraw_SetCooperativeLevel( win32_driver->ddobj, newWndHnd, DDSCL_NORMAL ); + if( result != DD_OK ) + { + Error( 0, "SetCooperativeLevel : error 0x%lx", result ); + return 0; + } + /* associate our clipper with new window */ + result = IDirectDrawClipper_SetHWnd( win32_driver->ddclipper, 0, newWndHnd ); + if( result != DD_OK ) + { + Error( 0, "ddclipper->SetHWnd : error 0x%lx", result ); + return 0; + } + /* store our objects in our visual struct */ + win32_driver->win32_visual->WndHnd = newWndHnd; + /* update video area and redraw current frame */ + UpdateRect( win32_driver->win32_visual ); + DisplayFrame( win32_driver ); + break; } + } return 0; } @@ -1183,7 +1242,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *wi /*vo_driver_t *init_video_out_plugin( config_values_t * config, void * win32_visual )*/ { directx_class_t *class = (directx_class_t *)class_gen; - win32_driver_t *win32_driver = ( win32_driver_t * ) xine_xmalloc ( sizeof( win32_driver_t ) ); + win32_driver_t *win32_driver = calloc(1, sizeof(win32_driver_t)); _x_alphablend_init(&win32_driver->alphablend_extra_data, class->xine); @@ -1249,7 +1308,7 @@ static void *init_class (xine_t *xine, void *visual_gen) { /* * from this point on, nothing should go wrong anymore */ - directx = (directx_class_t *) xine_xmalloc (sizeof (directx_class_t)); + directx = calloc(1, sizeof (directx_class_t)); directx->driver_class.open_plugin = open_plugin; directx->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c index 95060a4d8..d67b0870d 100644 --- a/src/video_out/video_out_fb.c +++ b/src/video_out/video_out_fb.c @@ -221,7 +221,7 @@ static vo_frame_t *fb_alloc_frame(vo_driver_t *this_gen) this->total_num_native_buffers <= this->used_num_buffers) return 0; - frame = (fb_frame_t *)xine_xmalloc(sizeof(fb_frame_t)); + frame = calloc(1, sizeof(fb_frame_t)); if(!frame) return NULL; @@ -324,21 +324,10 @@ static void setup_colorspace_converter(fb_frame_t *frame, int flags) static void frame_reallocate(fb_driver_t *this, fb_frame_t *frame, uint32_t width, uint32_t height, int format) { - if(frame->chunk[0]) - { - free(frame->chunk[0]); - frame->chunk[0] = NULL; - } - if(frame->chunk[1]) - { - free(frame->chunk[1]); - frame->chunk[1] = NULL; - } - if(frame->chunk[2]) - { - free(frame->chunk[2]); - frame->chunk[2] = NULL; - } + free(frame->chunk[0]); + free(frame->chunk[1]); + free(frame->chunk[2]); + memset(frame->chunk, 0, sizeof(frame->chunk[0])*3); if(this->use_zero_copy) { @@ -348,10 +337,9 @@ static void frame_reallocate(fb_driver_t *this, fb_frame_t *frame, } else { - if(frame->data) - free(frame->data); - frame->data = xine_xmalloc(frame->sc.output_width * - frame->sc.output_height * + free(frame->data); + frame->data = calloc(frame->sc.output_width * + frame->sc.output_height, this->bytes_per_pixel); } @@ -1004,7 +992,7 @@ static vo_driver_t *fb_open_plugin(video_driver_class_t *class_gen, config = class->config; /* allocate plugin struct */ - this = (fb_driver_t *) xine_xmalloc(sizeof(fb_driver_t)); + this = calloc(1, sizeof(fb_driver_t)); if(!this) return NULL; @@ -1087,7 +1075,7 @@ static void fb_dispose_class(video_driver_class_t *this_gen) static void *fb_init_class(xine_t *xine, void *visual_gen) { - fb_class_t *this = (fb_class_t *)xine_xmalloc(sizeof(fb_class_t)); + fb_class_t *this = calloc(1, sizeof(fb_class_t)); this->driver_class.open_plugin = fb_open_plugin; this->driver_class.get_identifier = fb_get_identifier; diff --git a/src/video_out/video_out_macosx.m b/src/video_out/video_out_macosx.m index 4621d31b9..b5b4d731c 100644 --- a/src/video_out/video_out_macosx.m +++ b/src/video_out/video_out_macosx.m @@ -97,7 +97,7 @@ static vo_frame_t *macosx_alloc_frame(vo_driver_t *vo_driver) { /* macosx_driver_t *this = (macosx_driver_t *) vo_driver; */ macosx_frame_t *frame; - frame = (macosx_frame_t *) xine_xmalloc(sizeof(macosx_frame_t)); + frame = calloc(1, sizeof(macosx_frame_t)); if(!frame) return NULL; @@ -207,7 +207,7 @@ static void macosx_display_frame(vo_driver_t *vo_driver, vo_frame_t *vo_frame) { break; case XINE_IMGFMT_YUY2: xine_fast_memcpy (texture_buffer, vo_frame->base[0], - vo_frame->pitches[0] * vo_frame->height * 2); + vo_frame->pitches[0] * vo_frame->height); [driver->view updateTexture]; break; default: @@ -320,7 +320,7 @@ static vo_driver_t *open_plugin(video_driver_class_t *driver_class, const void * macosx_driver_t *driver; XineOpenGLView *view = (XineOpenGLView *) visual; - driver = (macosx_driver_t *) xine_xmalloc(sizeof(macosx_driver_t)); + driver = calloc(1, sizeof(macosx_driver_t)); driver->config = class->config; driver->xine = class->xine; @@ -366,7 +366,7 @@ static void dispose_class (video_driver_class_t *driver_class) { static void *init_class (xine_t *xine, void *visual) { macosx_class_t *this; - this = (macosx_class_t *) xine_xmalloc(sizeof(macosx_class_t)); + this = calloc(1, sizeof(macosx_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_none.c b/src/video_out/video_out_none.c index 5f2424a60..0de6e34e8 100644 --- a/src/video_out/video_out_none.c +++ b/src/video_out/video_out_none.c @@ -88,7 +88,7 @@ static vo_frame_t *none_alloc_frame(vo_driver_t *vo_driver) { /* none_driver_t *this = (none_driver_t *) vo_driver; */ none_frame_t *frame; - frame = (none_frame_t *) xine_xmalloc(sizeof(none_frame_t)); + frame = calloc(1, sizeof(none_frame_t)); if(!frame) return NULL; @@ -243,7 +243,7 @@ static vo_driver_t *open_plugin(video_driver_class_t *driver_class, const void * none_class_t *class = (none_class_t *) driver_class; none_driver_t *driver; - driver = (none_driver_t *) xine_xmalloc(sizeof(none_driver_t)); + driver = calloc(1, sizeof(none_driver_t)); driver->config = class->config; driver->xine = class->xine; @@ -286,7 +286,7 @@ static void dispose_class (video_driver_class_t *driver_class) { static void *init_class (xine_t *xine, void *visual) { none_class_t *this; - this = (none_class_t *) xine_xmalloc(sizeof(none_class_t)); + this = calloc(1, sizeof(none_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_opengl.c b/src/video_out/video_out_opengl.c index 54696f452..a8f11db2f 100644 --- a/src/video_out/video_out_opengl.c +++ b/src/video_out/video_out_opengl.c @@ -669,8 +669,8 @@ static int render_image_envtex (opengl_driver_t *this, opengl_frame_t *frame) { * Render setup functions */ static int render_help_verify_ext (opengl_driver_t *this, char *ext) { - int ret = 0; - int l = strlen (ext); + int ret = 0; + const size_t l = strlen (ext); const char *e; for (e = (char *) this->gl_exts; e && *e; e = strchr (e, ' ')) { while (isspace (*e)) @@ -694,10 +694,9 @@ static void *getdladdr (const GLubyte *_funcName) { return NULL; #elif defined(__APPLE__) - char *temp = xine_xmalloc (strlen (funcName) + 2); + char *temp; + asprintf(&temp, "_%s", funcName); void *res = NULL; - temp[0] = '_'; /* Mac OS X prepends an underscore on function names */ - strcpy (temp+1, funcName); if (NSIsSymbolNameDefined (temp)) { NSSymbol symbol = NSLookupAndBindSymbol (temp); res = NSAddressOfSymbol (symbol); @@ -1281,7 +1280,7 @@ static vo_frame_t *opengl_alloc_frame (vo_driver_t *this_gen) { opengl_frame_t *frame; opengl_driver_t *this = (opengl_driver_t *) this_gen; - frame = (opengl_frame_t *) xine_xmalloc (sizeof (opengl_frame_t)); + frame = (opengl_frame_t *) calloc(1, sizeof(opengl_frame_t)); if (!frame) return NULL; @@ -1820,7 +1819,7 @@ static vo_driver_t *opengl_open_plugin (video_driver_class_t *class_gen, const v char **render_fun_names; int i; - this = (opengl_driver_t *) xine_xmalloc (sizeof (opengl_driver_t)); + this = (opengl_driver_t *) calloc(1, sizeof(opengl_driver_t)); if (!this) return NULL; @@ -1876,8 +1875,7 @@ static vo_driver_t *opengl_open_plugin (video_driver_class_t *class_gen, const v this->drawable, X11OSD_SHAPED); XUnlockDisplay (this->display); - render_fun_names = xine_xmalloc ((sizeof(opengl_rb)/sizeof(opengl_render_t)+1) - * sizeof (const char *)); + render_fun_names = calloc((sizeof(opengl_rb)/sizeof(opengl_render_t)+1), sizeof(const char*)); for (i = 0; i < sizeof (opengl_rb) / sizeof (opengl_render_t); i++) render_fun_names[i] = opengl_rb[i].name; render_fun_names[i] = NULL; @@ -1955,6 +1953,52 @@ static vo_driver_t *opengl_open_plugin (video_driver_class_t *class_gen, const v * class functions */ +static int opengl_verify_direct (x11_visual_t *vis) { + int attribs[] = { + GLX_RGBA, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + None + }; + Window root, win; + XVisualInfo *visinfo; + GLXContext ctx; + XSetWindowAttributes xattr; + int ret = 0; + + if (!vis || !vis->display || + ! (root = RootWindow (vis->display, vis->screen))) { + fprintf (stderr, "[videoout_opengl]: Don't have a root window to verify\n"); + return 0; + } + if (! (visinfo = glXChooseVisual (vis->display, vis->screen, attribs))) + return 0; + if (! (ctx = glXCreateContext (vis->display, visinfo, NULL, 1))) + return 0; + memset (&xattr, 0, sizeof (xattr)); + xattr.colormap = XCreateColormap(vis->display, root, visinfo->visual, AllocNone); + xattr.event_mask = StructureNotifyMask | ExposureMask; + if ( (win = XCreateWindow (vis->display, root, 0, 0, 1, 1, 0, visinfo->depth, + InputOutput, visinfo->visual, + CWBackPixel | CWBorderPixel | CWColormap | CWEventMask, + &xattr))) { + if (glXMakeCurrent (vis->display, win, ctx)) { + const char *renderer = (const char *) glGetString(GL_RENDERER); + if (glXIsDirect (vis->display, ctx) && + ! strstr (renderer, "Software") && + ! strstr (renderer, "Indirect")) + ret = 1; + glXMakeCurrent (vis->display, None, NULL); + } + XDestroyWindow (vis->display, win); + } + glXDestroyContext (vis->display, ctx); + XFreeColormap (vis->display, xattr.colormap); + + return ret; +} + static char* opengl_get_identifier (video_driver_class_t *this_gen) { return "opengl"; } @@ -1970,7 +2014,18 @@ static void opengl_dispose_class (video_driver_class_t *this_gen) { } static void *opengl_init_class (xine_t *xine, void *visual_gen) { - opengl_class_t *this = (opengl_class_t *) xine_xmalloc (sizeof (opengl_class_t)); + + opengl_class_t *this; + + xprintf (xine, XINE_VERBOSITY_LOG, + "video_out_opengl: Testing for hardware accelerated direct rendering visual\n"); + if (! opengl_verify_direct ((x11_visual_t *)visual_gen)) { + xprintf (xine, XINE_VERBOSITY_LOG, + "video_out_opengl: Didn't find any\n"); + return NULL; + } + + this = (opengl_class_t *) calloc (1, sizeof(opengl_class_t)); this->driver_class.open_plugin = opengl_open_plugin; this->driver_class.get_identifier = opengl_get_identifier; diff --git a/src/video_out/video_out_pgx32.c b/src/video_out/video_out_pgx32.c index d903efc89..45a54cc76 100644 --- a/src/video_out/video_out_pgx32.c +++ b/src/video_out/video_out_pgx32.c @@ -386,7 +386,7 @@ static vo_frame_t *pgx32_alloc_frame(vo_driver_t *this_gen) /*pgx32_driver_t *this = (pgx32_driver_t *)(void *)this_gen;*/ pgx32_frame_t *frame; - frame = (pgx32_frame_t *) xine_xmalloc(sizeof(pgx32_frame_t)); + frame = calloc(1, sizeof(pgx32_frame_t)); if (!frame) { return NULL; } @@ -800,7 +800,7 @@ static vo_driver_t *pgx32_init_driver(video_driver_class_t *class_gen, const voi pgx32_driver_class_t *class = (pgx32_driver_class_t *)(void *)class_gen; pgx32_driver_t *this; - this = (pgx32_driver_t *)xine_xmalloc(sizeof(pgx32_driver_t)); + this = calloc(1, sizeof(pgx32_driver_t)); if (!this) { return NULL; } @@ -869,7 +869,7 @@ static void *pgx32_init_class(xine_t *xine, void *visual_gen) { pgx32_driver_class_t *class; - class = (pgx32_driver_class_t *)xine_xmalloc(sizeof(pgx32_driver_class_t)); + class = calloc(1, sizeof(pgx32_driver_class_t)); if (!class) { return NULL; } diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c index 4abb794d7..abda51e2b 100644 --- a/src/video_out/video_out_pgx64.c +++ b/src/video_out/video_out_pgx64.c @@ -561,7 +561,7 @@ static vo_frame_t *pgx64_alloc_frame(vo_driver_t *this_gen) /*pgx64_driver_t *this = (pgx64_driver_t *)(void *)this_gen;*/ pgx64_frame_t *frame; - frame = (pgx64_frame_t *) xine_xmalloc(sizeof(pgx64_frame_t)); + frame = calloc(1, sizeof(pgx64_frame_t)); if (!frame) { return NULL; } @@ -1352,7 +1352,7 @@ static vo_driver_t *pgx64_init_driver(video_driver_class_t *class_gen, const voi struct fbgattr attr; long page_size; - this = (pgx64_driver_t *)xine_xmalloc(sizeof(pgx64_driver_t)); + this = calloc(1, sizeof(pgx64_driver_t)); if (!this) { return NULL; } @@ -1493,7 +1493,7 @@ static void *pgx64_init_class(xine_t *xine, void *visual_gen) { pgx64_driver_class_t *class; - class = (pgx64_driver_class_t *)xine_xmalloc(sizeof(pgx64_driver_class_t)); + class = calloc(1, sizeof(pgx64_driver_class_t)); if (!class) { return NULL; } diff --git a/src/video_out/video_out_raw.c b/src/video_out/video_out_raw.c new file mode 100644 index 000000000..99e2c0004 --- /dev/null +++ b/src/video_out/video_out_raw.c @@ -0,0 +1,610 @@ +/* + * Copyright (C) 2007-2008 the xine project + * + * This file is part of xine, a free video player. + * + * xine 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. + * + * xine 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 + * + * + * video_out_raw.c, a video output plugin to pass raw data to frontend + * + * Written by Christophe Thommeret <hftom@free.fr>, + * based on others' video output plugins. + * + */ + +/* #define LOG */ +#define LOG_MODULE "video_out_raw" + +/* Allow frontend some time to render frames +* However, frontends are strongly advised to render synchronously */ +#define NUM_FRAMES_BACKLOG 4 +#define BYTES_PER_PIXEL 3 + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <math.h> +#include <errno.h> +#include <ctype.h> +#include <pthread.h> + +#include "xine.h" +#include "video_out.h" + +#include "xine_internal.h" +#include "yuv2rgb.h" +#include "xineutils.h" + + + +typedef struct { + vo_frame_t vo_frame; + + int width, height, format, flags; + double ratio; + uint8_t *chunk[4]; /* mem alloc by xmalloc_aligned */ + uint8_t *rgb, *rgb_dst; + yuv2rgb_t *yuv2rgb; /* yuv2rgb converter set up for this frame */ + +} raw_frame_t; + +typedef struct { + vo_driver_t vo_driver; + + void *user_data; + + void (*raw_output_cb) (void *user_data, int format, + int frame_width, int frame_height, double frame_aspect, + void *data0, void *data1, void *data2); + + void (*raw_overlay_cb) (void *user_data, int num_ovl, + raw_overlay_t *overlays_p); + + int ovl_changed; + raw_overlay_t overlays[XINE_VORAW_MAX_OVL]; + yuv2rgb_t *ovl_yuv2rgb; + + int doYV12; + int doYUY2; + yuv2rgb_factory_t *yuv2rgb_factory; + /* Frame state */ + raw_frame_t *frame[NUM_FRAMES_BACKLOG]; + xine_t *xine; +} raw_driver_t; + + +typedef struct { + video_driver_class_t driver_class; + xine_t *xine; +} raw_class_t; + + + +static void raw_overlay_clut_yuv2rgb(raw_driver_t *this, vo_overlay_t *overlay, raw_frame_t *frame) +{ + int i; + clut_t* clut = (clut_t*) overlay->color; + + if (!overlay->rgb_clut) { + for ( i=0; i<sizeof(overlay->color)/sizeof(overlay->color[0]); i++ ) { + *((uint32_t *)&clut[i]) = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun(frame->yuv2rgb, clut[i].y, clut[i].cb, clut[i].cr); + } + overlay->rgb_clut++; + } + if (!overlay->hili_rgb_clut) { + clut = (clut_t*) overlay->hili_color; + for ( i=0; i<sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { + *((uint32_t *)&clut[i]) = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun(frame->yuv2rgb, clut[i].y, clut[i].cb, clut[i].cr); + } + overlay->hili_rgb_clut++; + } +} + + +static int raw_process_ovl( raw_driver_t *this_gen, vo_overlay_t *overlay ) +{ + raw_overlay_t *ovl = &this_gen->overlays[this_gen->ovl_changed-1]; + + if ( overlay->width<=0 || overlay->height<=0 ) + return 0; + + if ( (overlay->width*overlay->height)!=(ovl->ovl_w*ovl->ovl_h) ) + ovl->ovl_rgba = (uint8_t*)realloc( ovl->ovl_rgba, overlay->width*overlay->height*4 ); + ovl->ovl_w = overlay->width; + ovl->ovl_h = overlay->height; + ovl->ovl_x = overlay->x; + ovl->ovl_y = overlay->y; + + int num_rle = overlay->num_rle; + rle_elem_t *rle = overlay->rle; + uint8_t *rgba = ovl->ovl_rgba; + clut_t *low_colors = (clut_t*)overlay->color; + clut_t *hili_colors = (clut_t*)overlay->hili_color; + uint8_t *low_trans = overlay->trans; + uint8_t *hili_trans = overlay->hili_trans; + clut_t *colors; + uint8_t *trans; + uint8_t alpha; + int rlelen = 0; + uint8_t clr = 0; + int i, pos=0, x, y; + + while ( num_rle>0 ) { + x = pos%ovl->ovl_w; + y = pos/ovl->ovl_w; + if ( (x>=overlay->hili_left && x<=overlay->hili_right) && (y>=overlay->hili_top && y<=overlay->hili_bottom) ) { + colors = hili_colors; + trans = hili_trans; + } + else { + colors = low_colors; + trans = low_trans; + } + rlelen = rle->len; + clr = rle->color; + alpha = trans[clr]; + for ( i=0; i<rlelen; ++i ) { + rgba[0] = colors[clr].y; + rgba[1] = colors[clr].cr; + rgba[2] = colors[clr].cb; + rgba[3] = alpha*255/15; + rgba+= 4; + ++pos; + } + ++rle; + --num_rle; + } + return 1; +} + + +static void raw_overlay_begin (vo_driver_t *this_gen, vo_frame_t *frame_gen, int changed) +{ + raw_driver_t *this = (raw_driver_t *) this_gen; + + if ( !changed ) + return; + + ++this->ovl_changed; +} + + +static void raw_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) +{ + raw_driver_t *this = (raw_driver_t *) this_gen; + raw_frame_t *frame = (raw_frame_t *) frame_gen; + + if ( !this->ovl_changed || this->ovl_changed>XINE_VORAW_MAX_OVL ) + return; + + if (overlay->rle) { + if (!overlay->rgb_clut || !overlay->hili_rgb_clut) + raw_overlay_clut_yuv2rgb (this, overlay, frame); + if ( raw_process_ovl( this, overlay ) ) + ++this->ovl_changed; + } +} + + +static void raw_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img) +{ + raw_driver_t *this = (raw_driver_t *) this_gen; + + if ( !this->ovl_changed ) + return; + + this->raw_overlay_cb( this->user_data, this->ovl_changed-1, this->overlays ); + + this->ovl_changed = 0; +} + + +static void raw_frame_proc_slice (vo_frame_t *vo_img, uint8_t **src) +{ + raw_frame_t *frame = (raw_frame_t *) vo_img ; + + vo_img->proc_called = 1; + if (! frame->rgb_dst) + return; + + if( frame->vo_frame.crop_left || frame->vo_frame.crop_top || + frame->vo_frame.crop_right || frame->vo_frame.crop_bottom ) + { + /* TODO: ?!? */ + return; + } + + if (frame->format == XINE_IMGFMT_YV12) + frame->yuv2rgb->yuv2rgb_fun (frame->yuv2rgb, frame->rgb_dst, src[0], src[1], src[2]); + else + frame->yuv2rgb->yuy22rgb_fun (frame->yuv2rgb, frame->rgb_dst, src[0]); +} + + + +static void raw_frame_field (vo_frame_t *vo_img, int which_field) +{ + raw_frame_t *frame = (raw_frame_t *) vo_img ; + raw_driver_t *this = (raw_driver_t *) vo_img->driver; + + if ( frame->format==XINE_IMGFMT_YV12 && this->doYV12 ) { + frame->rgb_dst = 0; + return; + } + else if ( frame->format==XINE_IMGFMT_YUY2 && this->doYUY2 ) { + frame->rgb_dst = 0; + return; + } + + switch (which_field) { + case VO_TOP_FIELD: + frame->rgb_dst = (uint8_t *)frame->rgb; + break; + case VO_BOTTOM_FIELD: + frame->rgb_dst = (uint8_t *)frame->rgb + frame->width * BYTES_PER_PIXEL; + break; + case VO_BOTH_FIELDS: + frame->rgb_dst = (uint8_t *)frame->rgb; + break; + } + + frame->yuv2rgb->next_slice (frame->yuv2rgb, NULL); +} + + + +static void raw_frame_dispose (vo_frame_t *vo_img) +{ + raw_frame_t *frame = (raw_frame_t *) vo_img ; + + frame->yuv2rgb->dispose (frame->yuv2rgb); + + free (frame->chunk[0]); + free (frame->chunk[1]); + free (frame->chunk[2]); + free (frame->chunk[3]); + free (frame); +} + + + +static vo_frame_t *raw_alloc_frame (vo_driver_t *this_gen) +{ + raw_frame_t *frame; + raw_driver_t *this = (raw_driver_t *) this_gen; + + frame = (raw_frame_t *) calloc(1, sizeof(raw_frame_t)); + + if (!frame) + return NULL; + + pthread_mutex_init (&frame->vo_frame.mutex, NULL); + + /* + * supply required functions/fields + */ + frame->vo_frame.proc_slice = raw_frame_proc_slice; + frame->vo_frame.proc_frame = NULL; + frame->vo_frame.field = raw_frame_field; + frame->vo_frame.dispose = raw_frame_dispose; + frame->vo_frame.driver = this_gen; + + /* + * colorspace converter for this frame + */ + frame->yuv2rgb = this->yuv2rgb_factory->create_converter (this->yuv2rgb_factory); + + return (vo_frame_t *) frame; +} + + + +static void raw_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, + uint32_t width, uint32_t height, double ratio, int format, int flags) +{ + raw_frame_t *frame = (raw_frame_t *) frame_gen; + + /* Check frame size and format and reallocate if necessary */ + if ((frame->width != width) + || (frame->height != height) + || (frame->format != format) + || (frame->flags != flags)) { +/* lprintf ("updating frame to %d x %d (ratio=%g, format=%08x)\n", width, height, ratio, format); */ + + flags &= VO_BOTH_FIELDS; + + /* (re-) allocate render space */ + free (frame->chunk[0]); + free (frame->chunk[1]); + free (frame->chunk[2]); + free (frame->chunk[3]); + + if (format == XINE_IMGFMT_YV12) { + frame->vo_frame.pitches[0] = 8*((width + 7) / 8); + frame->vo_frame.pitches[1] = 8*((width + 15) / 16); + frame->vo_frame.pitches[2] = 8*((width + 15) / 16); + frame->vo_frame.base[0] = xine_xmalloc_aligned (16, frame->vo_frame.pitches[0] * height, (void **) &frame->chunk[0]); + frame->vo_frame.base[1] = xine_xmalloc_aligned (16, frame->vo_frame.pitches[1] * ((height+1)/2), (void **) &frame->chunk[1]); + frame->vo_frame.base[2] = xine_xmalloc_aligned (16, frame->vo_frame.pitches[2] * ((height+1)/2), (void **) &frame->chunk[2]); + } else { + frame->vo_frame.pitches[0] = 8*((width + 3) / 4); + frame->vo_frame.base[0] = xine_xmalloc_aligned (16, frame->vo_frame.pitches[0] * height, (void **) &frame->chunk[0]); + frame->chunk[1] = NULL; + frame->chunk[2] = NULL; + } + frame->rgb = xine_xmalloc_aligned (16, BYTES_PER_PIXEL*width*height, + (void **) &frame->chunk[3]); + + /* set up colorspace converter */ + switch (flags) { + case VO_TOP_FIELD: + case VO_BOTTOM_FIELD: + frame->yuv2rgb->configure (frame->yuv2rgb, + width, + height, + 2*frame->vo_frame.pitches[0], + 2*frame->vo_frame.pitches[1], + width, + height, + BYTES_PER_PIXEL*width * 2); + break; + case VO_BOTH_FIELDS: + frame->yuv2rgb->configure (frame->yuv2rgb, + width, + height, + frame->vo_frame.pitches[0], + frame->vo_frame.pitches[1], + width, + height, + BYTES_PER_PIXEL*width); + break; + } + + frame->width = width; + frame->height = height; + frame->format = format; + + raw_frame_field ((vo_frame_t *)frame, flags); + } + + frame->ratio = ratio; +} + + + +static int raw_redraw_needed (vo_driver_t *this_gen) +{ + return 0; +} + + + +static void raw_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) +{ + raw_driver_t *this = (raw_driver_t *) this_gen; + raw_frame_t *frame = (raw_frame_t *) frame_gen; + int i; + + if (this->frame[NUM_FRAMES_BACKLOG-1]) { + this->frame[NUM_FRAMES_BACKLOG-1]->vo_frame.free (&this->frame[NUM_FRAMES_BACKLOG-1]->vo_frame); + } + for (i = NUM_FRAMES_BACKLOG-1; i > 0; i--) + this->frame[i] = this->frame[i-1]; + this->frame[0] = frame; + + if ( frame->rgb_dst ) { + this->raw_output_cb( this->user_data, XINE_VORAW_RGB, frame->width, frame->height, frame->ratio, frame->rgb, 0, 0 ); + } + else if ( frame->format==XINE_IMGFMT_YV12 ) { + this->raw_output_cb( this->user_data, XINE_VORAW_YV12, frame->width, frame->height, frame->ratio, frame->vo_frame.base[0], + frame->vo_frame.base[1], frame->vo_frame.base[2] ); + } + else { + this->raw_output_cb( this->user_data, XINE_VORAW_YUY2, frame->width, frame->height, frame->ratio, frame->vo_frame.base[0], 0, 0 ); + } +} + + + +static int raw_get_property (vo_driver_t *this_gen, int property) +{ + switch (property) { + case VO_PROP_ASPECT_RATIO: + return XINE_VO_ASPECT_AUTO; + case VO_PROP_MAX_NUM_FRAMES: + return 15; + case VO_PROP_BRIGHTNESS: + return 0; + case VO_PROP_CONTRAST: + return 128; + case VO_PROP_SATURATION: + return 128; + case VO_PROP_WINDOW_WIDTH: + return 0; + case VO_PROP_WINDOW_HEIGHT: + return 0; + default: + return 0; + } +} + + + +static int raw_set_property (vo_driver_t *this_gen, int property, int value) +{ + return value; +} + + + +static void raw_get_property_min_max (vo_driver_t *this_gen, int property, int *min, int *max) +{ + *min = 0; + *max = 0; +} + + + +static int raw_gui_data_exchange (vo_driver_t *this_gen, int data_type, void *data) +{ + return 0; +} + + + +static uint32_t raw_get_capabilities (vo_driver_t *this_gen) +{ + uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP; + return capabilities; +} + + + +static void raw_dispose (vo_driver_t *this_gen) +{ + raw_driver_t *this = (raw_driver_t *) this_gen; + int i; + + for (i = 0; i < NUM_FRAMES_BACKLOG; i++) + if (this->frame[i]) + this->frame[i]->vo_frame.dispose (&this->frame[i]->vo_frame); + + this->yuv2rgb_factory->dispose (this->yuv2rgb_factory); + + for ( i=0; i<XINE_VORAW_MAX_OVL; ++i ) + free( this->overlays[i].ovl_rgba ); + + free (this); +} + + + +static vo_driver_t *raw_open_plugin (video_driver_class_t *class_gen, const void *visual_gen) +{ + raw_class_t *class = (raw_class_t *) class_gen; + raw_visual_t *visual = (raw_visual_t *) visual_gen; + raw_driver_t *this; + int i; + + this = (raw_driver_t *) calloc(1, sizeof(raw_driver_t)); + + if (!this) + return NULL; + + this->raw_output_cb = visual->raw_output_cb; + this->user_data = visual->user_data; + this->xine = class->xine; + this->raw_overlay_cb = visual->raw_overlay_cb; + this->doYV12 = visual->supported_formats&XINE_VORAW_YV12; + this->doYUY2 = visual->supported_formats&XINE_VORAW_YUY2; + + this->vo_driver.get_capabilities = raw_get_capabilities; + this->vo_driver.alloc_frame = raw_alloc_frame; + this->vo_driver.update_frame_format = raw_update_frame_format; + this->vo_driver.overlay_begin = raw_overlay_begin; + this->vo_driver.overlay_blend = raw_overlay_blend; + this->vo_driver.overlay_end = raw_overlay_end; + this->vo_driver.display_frame = raw_display_frame; + this->vo_driver.get_property = raw_get_property; + this->vo_driver.set_property = raw_set_property; + this->vo_driver.get_property_min_max = raw_get_property_min_max; + this->vo_driver.gui_data_exchange = raw_gui_data_exchange; + this->vo_driver.dispose = raw_dispose; + this->vo_driver.redraw_needed = raw_redraw_needed; + + this->yuv2rgb_factory = yuv2rgb_factory_init (MODE_24_BGR, 1, NULL); /* converts to rgb */ + + for (i = 0; i < NUM_FRAMES_BACKLOG; i++) + this->frame[i] = 0; + + for ( i=0; i<XINE_VORAW_MAX_OVL; ++i ) { + this->overlays[i].ovl_w = this->overlays[i].ovl_h = 2; + this->overlays[i].ovl_rgba = (uint8_t*)malloc(2*2*4); + this->overlays[i].ovl_x = this->overlays[i].ovl_y = 0; + } + this->ovl_changed = 0; + + /* we have to use a second converter for overlays + * because "MODE_24_BGR, 1 (swap)" breaks overlays conversion */ + yuv2rgb_factory_t *factory = yuv2rgb_factory_init (MODE_24_BGR, 0, NULL); + this->ovl_yuv2rgb = factory->create_converter( factory ); + factory->dispose( factory ); + + return &this->vo_driver; +} + +/* + * class functions + */ + +static char* raw_get_identifier (video_driver_class_t *this_gen) +{ + return "raw"; +} + + + +static char* raw_get_description (video_driver_class_t *this_gen) +{ + return _("xine video output plugin passing raw data to supplied callback"); +} + + + +static void raw_dispose_class (video_driver_class_t *this_gen) +{ + raw_class_t *this = (raw_class_t *) this_gen; + free (this); +} + + + +static void *raw_init_class (xine_t *xine, void *visual_gen) +{ + raw_class_t *this = (raw_class_t *) calloc(1, sizeof(raw_class_t)); + + this->driver_class.open_plugin = raw_open_plugin; + this->driver_class.get_identifier = raw_get_identifier; + this->driver_class.get_description = raw_get_description; + this->driver_class.dispose = raw_dispose_class; + this->xine = xine; + + return this; +} + + + +static const vo_info_t vo_info_raw = { + 7, /* priority */ + XINE_VISUAL_TYPE_RAW /* visual type */ +}; + + +/* + * exported plugin catalog entry + */ + +const plugin_info_t xine_plugin_info[] EXPORTED = { + /* type, API, "name", version, special_info, init_function */ + { PLUGIN_VIDEO_OUT, 21, "raw", XINE_VERSION_CODE, &vo_info_raw, raw_init_class }, + { PLUGIN_NONE, 0, "", 0, NULL, NULL } +}; diff --git a/src/video_out/video_out_sdl.c b/src/video_out/video_out_sdl.c index 6705b4176..89150f5d0 100644 --- a/src/video_out/video_out_sdl.c +++ b/src/video_out/video_out_sdl.c @@ -138,7 +138,7 @@ static vo_frame_t *sdl_alloc_frame (vo_driver_t *this_gen) { /* sdl_driver_t *this = (sdl_driver_t *) this_gen; */ sdl_frame_t *frame ; - frame = (sdl_frame_t *) xine_xmalloc (sizeof (sdl_frame_t)); + frame = (sdl_frame_t *) calloc(1, sizeof(sdl_frame_t)); if (!frame) return NULL; @@ -469,13 +469,15 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi sdl_driver_t *this; const SDL_VideoInfo *vidInfo; -#ifdef HAVE_X11 +#if defined(HAVE_X11) || defined(WIN32) static char SDL_windowhack[32]; x11_visual_t *visual = (x11_visual_t *) visual_gen; +#endif +#ifdef HAVE_X11 XWindowAttributes window_attributes; #endif - this = (sdl_driver_t *) xine_xmalloc (sizeof (sdl_driver_t)); + this = (sdl_driver_t *) calloc(1, sizeof(sdl_driver_t)); if (!this) return NULL; @@ -502,14 +504,18 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi _x_vo_scale_init( &this->sc, 0, 0, config); this->sc.frame_output_cb = visual->frame_output_cb; this->sc.user_data = visual->user_data; - - /* set SDL to use our existing X11 window */ - sprintf(SDL_windowhack,"SDL_WINDOWID=0x%x", (uint32_t) this->drawable ); - putenv(SDL_windowhack); #else _x_vo_scale_init( &this->sc, 0, 0, config ); #endif +#if defined(HAVE_X11) || defined(WIN32) + /* set SDL to use our existing X11/win32 window */ + if (visual->d){ + sprintf(SDL_windowhack,"SDL_WINDOWID=0x%x", (uint32_t) visual->d); + putenv(SDL_windowhack); + } +#endif + if ((SDL_Init (SDL_INIT_VIDEO)) < 0) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_sdl: open_plugin - sdl video initialization failed.\n"); return NULL; @@ -596,7 +602,7 @@ static void *init_class (xine_t *xine, void *visual_gen) { } SDL_QuitSubSystem (SDL_INIT_VIDEO); - this = (sdl_class_t*) xine_xmalloc (sizeof (sdl_class_t)); + this = (sdl_class_t*) calloc(1, sizeof(sdl_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_stk.c b/src/video_out/video_out_stk.c index dfc4ae385..00dd80251 100644 --- a/src/video_out/video_out_stk.c +++ b/src/video_out/video_out_stk.c @@ -133,7 +133,7 @@ static vo_frame_t *stk_alloc_frame(vo_driver_t *this_gen) { stk_frame_t* frame; //printf("video_out_stk: alloc_frame()\n"); - frame = (stk_frame_t *) xine_xmalloc(sizeof(stk_frame_t)); + frame = calloc(1, sizeof(stk_frame_t)); if (!frame) return NULL; @@ -389,7 +389,7 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis //printf("video_out_stk: open_plugin()\n"); - this = (stk_driver_t *) xine_xmalloc (sizeof (stk_driver_t)); + this = calloc(1, sizeof (stk_driver_t)); if (!this) return NULL; @@ -463,7 +463,7 @@ static void *init_class (xine_t *xine, void *visual_gen) { //printf("video_out_stk: init_class()\n"); - this = (stk_class_t *) xine_xmalloc(sizeof(stk_class_t)); + this = calloc(1, sizeof(stk_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_syncfb.c b/src/video_out/video_out_syncfb.c index b1fadbd58..f66817f36 100644 --- a/src/video_out/video_out_syncfb.c +++ b/src/video_out/video_out_syncfb.c @@ -478,7 +478,7 @@ static vo_frame_t* syncfb_alloc_frame(vo_driver_t* this_gen) /* syncfb_driver_t *this = (syncfb_driver_t *) this_gen; */ syncfb_frame_t *frame; - frame = (syncfb_frame_t *) xine_xmalloc(sizeof(syncfb_frame_t)); + frame = calloc(1, sizeof(syncfb_frame_t)); if(!frame) return NULL; @@ -882,7 +882,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi display = visual->display; - if(!(this = xine_xmalloc(sizeof (syncfb_driver_t)))) + if(!(this = calloc(1, sizeof (syncfb_driver_t)))) return NULL; _x_alphablend_init(&this->alphablend_extra_data, class->xine); @@ -1105,7 +1105,7 @@ static void *init_class (xine_t *xine, void *visual_gen) { /* * from this point on, nothing should go wrong anymore */ - this = (syncfb_class_t *) xine_xmalloc (sizeof (syncfb_class_t)); + this = calloc(1, sizeof (syncfb_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_vidix.c b/src/video_out/video_out_vidix.c index 9e3f870b1..482841a09 100644 --- a/src/video_out/video_out_vidix.c +++ b/src/video_out/video_out_vidix.c @@ -370,7 +370,7 @@ static vo_frame_t *vidix_alloc_frame (vo_driver_t *this_gen) { /* vidix_driver_t *this = (vidix_driver_t *) this_gen; */ vidix_frame_t *frame ; - frame = (vidix_frame_t *) xine_xmalloc (sizeof (vidix_frame_t)); + frame = (vidix_frame_t *) calloc(1, sizeof(vidix_frame_t)); if (!frame) return NULL; @@ -947,7 +947,7 @@ static vidix_driver_t *open_plugin (video_driver_class_t *class_gen) { vidix_driver_t *this; int err; - this = (vidix_driver_t *) xine_xmalloc (sizeof (vidix_driver_t)); + this = (vidix_driver_t *) calloc(1, sizeof(vidix_driver_t)); if (!this) return NULL; @@ -1089,7 +1089,7 @@ static void *init_class (xine_t *xine, void *visual_gen) { vidix_class_t *this; int err; - this = (vidix_class_t *) xine_xmalloc (sizeof (vidix_class_t)); + this = (vidix_class_t *) calloc(1, sizeof(vidix_class_t)); if (!this) return NULL; diff --git a/src/video_out/video_out_xcbshm.c b/src/video_out/video_out_xcbshm.c index 2ac579555..a5282a24f 100644 --- a/src/video_out/video_out_xcbshm.c +++ b/src/video_out/video_out_xcbshm.c @@ -295,7 +295,7 @@ static vo_frame_t *xshm_alloc_frame (vo_driver_t *this_gen) { xshm_frame_t *frame; xshm_driver_t *this = (xshm_driver_t *) this_gen; - frame = (xshm_frame_t *) xine_xmalloc (sizeof (xshm_frame_t)); + frame = (xshm_frame_t *) calloc(1, sizeof(xshm_frame_t)); if (!frame) return NULL; @@ -1015,7 +1015,7 @@ static vo_driver_t *xshm_open_plugin(video_driver_class_t *class_gen, const void const xcb_query_extension_reply_t *query_extension_reply; - this = (xshm_driver_t *) xine_xmalloc (sizeof (xshm_driver_t)); + this = (xshm_driver_t *) calloc(1, sizeof(xshm_driver_t)); if (!this) return NULL; @@ -1250,7 +1250,7 @@ static void xshm_dispose_class (video_driver_class_t *this_gen) { } static void *xshm_init_class (xine_t *xine, void *visual_gen) { - xshm_class_t *this = (xshm_class_t *) xine_xmalloc (sizeof (xshm_class_t)); + xshm_class_t *this = (xshm_class_t *) calloc(1, sizeof(xshm_class_t)); this->driver_class.open_plugin = xshm_open_plugin; this->driver_class.get_identifier = xshm_get_identifier; diff --git a/src/video_out/video_out_xcbxv.c b/src/video_out/video_out_xcbxv.c index 18ab5c6fb..1e6e2b663 100644 --- a/src/video_out/video_out_xcbxv.c +++ b/src/video_out/video_out_xcbxv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004, 2007 the xine project + * Copyright (C) 2000-2004, 2007-2008 the xine project * * This file is part of xine, a free video player. * @@ -65,6 +65,7 @@ #include "xineutils.h" #include "vo_scale.h" #include "xcbosd.h" +#include "xv_common.h" typedef struct xv_driver_s xv_driver_t; @@ -137,6 +138,8 @@ struct xv_driver_s { int use_colorkey; uint32_t colorkey; + int sync_is_vsync; + /* hold initial port attributes values to restore on exit */ xine_list_t *port_attributes; @@ -155,6 +158,10 @@ typedef struct { xine_t *xine; } xv_class_t; +VIDEO_DEVICE_XV_DECL_BICUBIC_TYPES; +VIDEO_DEVICE_XV_DECL_PREFER_TYPES; +VIDEO_DEVICE_XV_DECL_SYNC_ATOMS; + static uint32_t xv_get_capabilities (vo_driver_t *this_gen) { xv_driver_t *this = (xv_driver_t *) this_gen; @@ -186,7 +193,7 @@ static vo_frame_t *xv_alloc_frame (vo_driver_t *this_gen) { /* xv_driver_t *this = (xv_driver_t *) this_gen; */ xv_frame_t *frame ; - frame = (xv_frame_t *) xine_xmalloc (sizeof (xv_frame_t)); + frame = (xv_frame_t *) calloc(1, sizeof(xv_frame_t)); if (!frame) return NULL; @@ -432,7 +439,7 @@ static void xv_deinterlace_frame (xv_driver_t *this) { for( i = 0; i < VO_NUM_RECENT_FRAMES; i++ ) if( this->recent_frames[i] && this->recent_frames[i]->width == frame->width && this->recent_frames[i]->height == frame->height ) - recent_bitmaps[i] = this->recent_frames[i]->image + frame->width*frame->height; + recent_bitmaps[i] = this->recent_frames[i]->image + this->deinterlace_frame.xv_width*frame->height; else recent_bitmaps[i] = NULL; @@ -1101,6 +1108,8 @@ static int xv_check_yv12(xcb_connection_t *connection, xcb_xv_port_t port) { list_formats_cookie = xcb_xv_list_image_formats(connection, port); list_formats_reply = xcb_xv_list_image_formats_reply(connection, list_formats_cookie, NULL); + if (!list_formats_reply) + return 1; /* no formats listed; probably due to an invalid port no. */ format_it = xcb_xv_list_image_formats_format_iterator(list_formats_reply); for (; format_it.rem; xcb_xv_image_format_info_next(&format_it)) @@ -1122,7 +1131,7 @@ static void xv_check_capability (xv_driver_t *this, char *config_help) { int int_default; cfg_entry_t *entry; - char *str_prop = xcb_xv_attribute_info_name(attr); + const char *str_prop = xcb_xv_attribute_info_name(attr); xcb_xv_get_port_attribute_cookie_t get_attribute_cookie; xcb_xv_get_port_attribute_reply_t *get_attribute_reply; @@ -1207,44 +1216,42 @@ static void xv_update_deinterlace(void *this_gen, xine_cfg_entry_t *entry) { this->deinterlace_method = entry->num_value; } -static void xv_update_XV_FILTER(void *this_gen, xine_cfg_entry_t *entry) { +static void xv_update_attr (void *this_gen, xine_cfg_entry_t *entry, + const char *atomstr, const char *debugstr) +{ xv_driver_t *this = (xv_driver_t *) this_gen; - int xv_filter; xcb_intern_atom_cookie_t atom_cookie; xcb_intern_atom_reply_t *atom_reply; - xv_filter = entry->num_value; - pthread_mutex_lock(&this->main_mutex); - atom_cookie = xcb_intern_atom(this->connection, 0, sizeof("XV_FILTER"), "XV_FILTER"); + atom_cookie = xcb_intern_atom(this->connection, 0, strlen (atomstr), atomstr); atom_reply = xcb_intern_atom_reply(this->connection, atom_cookie, NULL); - xcb_xv_set_port_attribute(this->connection, this->xv_port, atom_reply->atom, xv_filter); + xcb_xv_set_port_attribute(this->connection, this->xv_port, atom_reply->atom, entry->num_value); free(atom_reply); pthread_mutex_unlock(&this->main_mutex); xprintf(this->xine, XINE_VERBOSITY_DEBUG, - "video_out_xcbxv: bilinear scaling mode (XV_FILTER) = %d\n",xv_filter); + LOG_MODULE ": %s = %d\n", debugstr, entry->num_value); } -static void xv_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry) { - xv_driver_t *this = (xv_driver_t *) this_gen; - int xv_double_buffer; - - xcb_intern_atom_cookie_t atom_cookie; - xcb_intern_atom_reply_t *atom_reply; +static void xv_update_XV_FILTER(void *this_gen, xine_cfg_entry_t *entry) { + xv_update_attr (this_gen, entry, "XV_FILTER", "bilinear scaling mode"); +} - xv_double_buffer = entry->num_value; +static void xv_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry) { + xv_update_attr (this_gen, entry, "XV_DOUBLE_BUFFER", "double buffering mode"); +} - pthread_mutex_lock(&this->main_mutex); - atom_cookie = xcb_intern_atom(this->connection, 0, sizeof("XV_DOUBLE_BUFFER"), "XV_DOUBLE_BUFFER"); - atom_reply = xcb_intern_atom_reply(this->connection, atom_cookie, NULL); - xcb_xv_set_port_attribute(this->connection, this->xv_port, atom_reply->atom, xv_double_buffer); - free(atom_reply); - pthread_mutex_unlock(&this->main_mutex); +static void xv_update_XV_SYNC_TO_VBLANK(void *this_gen, xine_cfg_entry_t *entry) { + xv_update_attr (this_gen, entry, + sync_atoms[((xv_driver_t *)this_gen)->sync_is_vsync], + "sync to vblank"); +} - xprintf(this->xine, XINE_VERBOSITY_DEBUG, - "video_out_xcbxv: double buffering mode = %d\n", xv_double_buffer); +static void xv_update_XV_BICUBIC(void *this_gen, xine_cfg_entry_t *entry) +{ + xv_update_attr (this_gen, entry, "XV_BICUBIC", "bicubic filtering mode"); } static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) { @@ -1253,14 +1260,65 @@ static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry this->use_pitch_alignment = entry->num_value; } +static xcb_xv_port_t xv_open_port (xv_driver_t *this, xcb_xv_port_t port) { + xcb_xv_grab_port_cookie_t grab_port_cookie; + xcb_xv_grab_port_reply_t *grab_port_reply; + + if (xv_check_yv12 (this->connection, port)) + return 0; + + grab_port_cookie = xcb_xv_grab_port (this->connection, port, XCB_CURRENT_TIME); + grab_port_reply = xcb_xv_grab_port_reply (this->connection, grab_port_cookie, NULL); + + if (grab_port_reply && (grab_port_reply->result == XCB_GRAB_STATUS_SUCCESS)) + { + free (grab_port_reply); + return port; + } + free (grab_port_reply); + return 0; +} + +static xcb_xv_adaptor_info_iterator_t * +xv_find_adaptor_by_port (int port, xcb_xv_adaptor_info_iterator_t *adaptor_it) +{ + for (; adaptor_it->rem; xcb_xv_adaptor_info_next(adaptor_it)) + if (adaptor_it->data->type & XCB_XV_TYPE_IMAGE_MASK) + if (port >= adaptor_it->data->base_id && + port < adaptor_it->data->base_id + adaptor_it->data->num_ports) + return adaptor_it; + return NULL; /* shouldn't happen */ +} + +static xcb_xv_port_t xv_autodetect_port(xv_driver_t *this, + xcb_xv_adaptor_info_iterator_t *adaptor_it, + xcb_xv_port_t base, + xv_prefertype prefer_type) +{ + for (; adaptor_it->rem; xcb_xv_adaptor_info_next(adaptor_it)) + if (adaptor_it->data->type & XCB_XV_TYPE_IMAGE_MASK && + (prefer_type == xv_prefer_none || + strcasestr (xcb_xv_adaptor_info_name (adaptor_it->data), prefer_substrings[prefer_type]))) + { + int j; + for (j = 0; j < adaptor_it->data->num_ports; ++j) + { + xcb_xv_port_t port = adaptor_it->data->base_id + j; + if (port >= base && xv_open_port (this, port)) + return port; + } + } + return 0; +} + static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *visual_gen) { xv_class_t *class = (xv_class_t *) class_gen; config_values_t *config = class->config; xv_driver_t *this; int i; xcb_visual_t *visual = (xcb_visual_t *) visual_gen; - unsigned int j; xcb_xv_port_t xv_port; + xv_prefertype prefer_type; const xcb_query_extension_reply_t *query_extension_reply; @@ -1271,10 +1329,10 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis xcb_xv_list_image_formats_cookie_t list_formats_cookie; xcb_xv_list_image_formats_reply_t *list_formats_reply; - xcb_xv_adaptor_info_iterator_t adaptor_it; + xcb_xv_adaptor_info_iterator_t adaptor_it, adaptor_first; xcb_xv_image_format_info_iterator_t format_it; - this = (xv_driver_t *) xine_xmalloc (sizeof (xv_driver_t)); + this = (xv_driver_t *) calloc(1, sizeof(xv_driver_t)); if (!this) return NULL; @@ -1309,28 +1367,37 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis return NULL; } - adaptor_it = xcb_xv_query_adaptors_info_iterator(query_adaptors_reply); - - xv_port = 0; - - for (; adaptor_it.rem && !xv_port; xcb_xv_adaptor_info_next(&adaptor_it)) { - - if (adaptor_it.data->type & XCB_XV_TYPE_IMAGE_MASK) { - - for (j = 0; j < adaptor_it.data->num_ports; j++) - if (!xv_check_yv12(this->connection, adaptor_it.data->base_id + j)) { - xcb_xv_grab_port_cookie_t grab_port_cookie; - xcb_xv_grab_port_reply_t *grab_port_reply; - grab_port_cookie = xcb_xv_grab_port(this->connection, adaptor_it.data->base_id + j, XCB_CURRENT_TIME); - grab_port_reply = xcb_xv_grab_port_reply(this->connection, grab_port_cookie, NULL); - if (grab_port_reply && (grab_port_reply->result == XCB_GRAB_STATUS_SUCCESS)) { - free(grab_port_reply); - xv_port = adaptor_it.data->base_id + j; - break; - } - free(grab_port_reply); - } - } + adaptor_first = xcb_xv_query_adaptors_info_iterator(query_adaptors_reply); + xv_port = config->register_num (config, "video.device.xv_port", 0, + VIDEO_DEVICE_XV_PORT_HELP, + 20, NULL, NULL); + prefer_type = config->register_enum (config, "video.device.xv_preferred_method", 0, + prefer_labels, VIDEO_DEVICE_XV_PREFER_TYPE_HELP, + 10, NULL, NULL); + + if (xv_port != 0) { + if (! xv_open_port(this, xv_port)) { + xprintf(class->xine, XINE_VERBOSITY_NONE, + _("%s: could not open Xv port %d - autodetecting\n"), + LOG_MODULE, xv_port); + adaptor_it = adaptor_first; + xv_port = xv_autodetect_port (this, &adaptor_it, xv_port, prefer_type); + } else + xv_find_adaptor_by_port (xv_port, &adaptor_it); + } + if (!xv_port) + { + adaptor_it = adaptor_first; + xv_port = xv_autodetect_port (this, &adaptor_it, 0, prefer_type); + } + if (!xv_port) + { + if (prefer_type) + xprintf(class->xine, XINE_VERBOSITY_NONE, + _("%s: no available ports of type \"%s\", defaulting...\n"), + LOG_MODULE, prefer_labels[prefer_type]); + adaptor_it = adaptor_first; + xv_port = xv_autodetect_port (this, &adaptor_it, 0, xv_prefer_none); } if (!xv_port) { @@ -1411,10 +1478,11 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis for (; attribute_it.rem; xcb_xv_attribute_info_next(&attribute_it)) { if ((attribute_it.data->flags & XCB_XV_ATTRIBUTE_FLAG_SETTABLE) && (attribute_it.data->flags & XCB_XV_ATTRIBUTE_FLAG_GETTABLE)) { + const char *const name = xcb_xv_attribute_info_name(attribute_it.data); /* store initial port attribute value */ - xv_store_port_attribute(this, xcb_xv_attribute_info_name(attribute_it.data)); - - if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_HUE")) { + xv_store_port_attribute(this, name); + + if(!strcmp(name, "XV_HUE")) { if (!strncmp(xcb_xv_adaptor_info_name(adaptor_it.data), "NV", 2)) { xprintf (this->xine, XINE_VERBOSITY_NONE, "video_out_xcbxv: ignoring broken XV_HUE settings on NVidia cards\n"); } else { @@ -1422,64 +1490,61 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis adaptor_it.data->base_id, NULL, NULL, NULL); } - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_SATURATION")) { + } else if(!strcmp(name, "XV_SATURATION")) { xv_check_capability (this, VO_PROP_SATURATION, attribute_it.data, adaptor_it.data->base_id, NULL, NULL, NULL); - - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_BRIGHTNESS")) { + } else if(!strcmp(name, "XV_BRIGHTNESS")) { xv_check_capability (this, VO_PROP_BRIGHTNESS, attribute_it.data, adaptor_it.data->base_id, NULL, NULL, NULL); - - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_CONTRAST")) { + } else if(!strcmp(name, "XV_CONTRAST")) { xv_check_capability (this, VO_PROP_CONTRAST, attribute_it.data, adaptor_it.data->base_id, NULL, NULL, NULL); - - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_COLORKEY")) { + } else if(!strcmp(name, "XV_COLORKEY")) { xv_check_capability (this, VO_PROP_COLORKEY, attribute_it.data, adaptor_it.data->base_id, "video.device.xv_colorkey", - _("video overlay colour key"), - _("The colour key is used to tell the graphics card where to " - "overlay the video image. Try different values, if you experience " - "windows becoming transparent.")); - - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_AUTOPAINT_COLORKEY")) { + VIDEO_DEVICE_XV_COLORKEY_HELP); + } else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) { xv_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attribute_it.data, adaptor_it.data->base_id, "video.device.xv_autopaint_colorkey", - _("autopaint colour key"), - _("Make Xv autopaint its colour key.")); - - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_FILTER")) { + VIDEO_DEVICE_XV_AUTOPAINT_COLORKEY_HELP); + } else if(!strcmp(name, "XV_FILTER")) { int xv_filter; /* This setting is specific to Permedia 2/3 cards. */ xv_filter = config->register_range (config, "video.device.xv_filter", 0, attribute_it.data->min, attribute_it.data->max, - _("bilinear scaling mode"), - _("Selects the bilinear scaling mode for Permedia cards. " - "The individual values are:\n\n" - "Permedia 2\n" - "0 - disable bilinear filtering\n" - "1 - enable bilinear filtering\n\n" - "Permedia 3\n" - "0 - disable bilinear filtering\n" - "1 - horizontal linear filtering\n" - "2 - enable full bilinear filtering"), + VIDEO_DEVICE_XV_FILTER_HELP, 20, xv_update_XV_FILTER, this); config->update_num(config,"video.device.xv_filter",xv_filter); - } else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), "XV_DOUBLE_BUFFER")) { - int xv_double_buffer; - xv_double_buffer = + } else if(!strcmp(name, "XV_DOUBLE_BUFFER")) { + int xv_double_buffer = config->register_bool (config, "video.device.xv_double_buffer", 1, - _("enable double buffering"), - _("Double buffering will synchronize the update of the video image to the " - "repainting of the entire screen (\"vertical retrace\"). This eliminates " - "flickering and tearing artifacts, but will use more graphics memory."), - 20, xv_update_XV_DOUBLE_BUFFER, this); + VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP, + 20, xv_update_XV_DOUBLE_BUFFER, this); config->update_num(config,"video.device.xv_double_buffer",xv_double_buffer); + } else if(!strcmp(name, sync_atoms[this->sync_is_vsync = 0]) || + !strcmp(name, sync_atoms[this->sync_is_vsync = 1])) { + int xv_sync_to_vblank; + xv_sync_to_vblank = + config->register_bool (config, "video.device.xv_sync_to_vblank", 1, + _("enable vblank sync"), + _("This option will synchronize the update of the video image to the " + "repainting of the entire screen (\"vertical retrace\"). This eliminates " + "flickering and tearing artifacts. On nvidia cards one may also " + "need to run \"nvidia-settings\" and choose which display device to " + "sync to under the XVideo Settings tab"), + 20, xv_update_XV_SYNC_TO_VBLANK, this); + config->update_num(config,"video.device.xv_sync_to_vblank",xv_sync_to_vblank); + } else if(!strcmp(name, "XV_BICUBIC")) { + int xv_bicubic = + config->register_enum (config, "video.device.xv_bicubic", 2, + bicubic_types, VIDEO_DEVICE_XV_BICUBIC_HELP, + 20, xv_update_XV_BICUBIC, this); + config->update_num(config,"video.device.xv_bicubic",xv_bicubic); } } } @@ -1524,8 +1589,7 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis this->use_pitch_alignment = config->register_bool (config, "video.device.xv_pitch_alignment", 0, - _("pitch alignment workaround"), - _("Some buggy video drivers need a workaround to function properly."), + VIDEO_DEVICE_XV_PITCH_ALIGNMENT_HELP, 10, xv_update_xv_pitch_alignment, this); this->deinterlace_method = @@ -1596,7 +1660,7 @@ static void dispose_class (video_driver_class_t *this_gen) { } static void *init_class (xine_t *xine, void *visual_gen) { - xv_class_t *this = (xv_class_t *) xine_xmalloc (sizeof (xv_class_t)); + xv_class_t *this = (xv_class_t *) calloc(1, sizeof(xv_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c index 9e901821a..74791f145 100644 --- a/src/video_out/video_out_xshm.c +++ b/src/video_out/video_out_xshm.c @@ -276,7 +276,7 @@ static XImage *create_ximage (xshm_driver_t *this, XShmSegmentInfo *shminfo, this->bytes_per_pixel = this->bpp / 8; this->image_byte_order = myimage->byte_order; - myimage->data = xine_xmalloc (width * this->bytes_per_pixel * height); + myimage->data = calloc (width * height, this->bytes_per_pixel); } return myimage; @@ -387,7 +387,7 @@ static vo_frame_t *xshm_alloc_frame (vo_driver_t *this_gen) { xshm_frame_t *frame; xshm_driver_t *this = (xshm_driver_t *) this_gen; - frame = (xshm_frame_t *) xine_xmalloc (sizeof (xshm_frame_t)); + frame = (xshm_frame_t *) calloc(1, sizeof(xshm_frame_t)); if (!frame) return NULL; @@ -1083,7 +1083,7 @@ static vo_driver_t *xshm_open_plugin_2 (video_driver_class_t *class_gen, const v int cpu_byte_order; XColor dummy; - this = (xshm_driver_t *) xine_xmalloc (sizeof (xshm_driver_t)); + this = (xshm_driver_t *) calloc(1, sizeof(xshm_driver_t)); if (!this) return NULL; @@ -1310,7 +1310,7 @@ static void xshm_dispose_class (video_driver_class_t *this_gen) { } static void *xshm_init_class (xine_t *xine, void *visual_gen) { - xshm_class_t *this = (xshm_class_t *) xine_xmalloc (sizeof (xshm_class_t)); + xshm_class_t *this = (xshm_class_t *) calloc(1, sizeof(xshm_class_t)); this->driver_class.open_plugin = xshm_open_plugin_old; this->driver_class.get_identifier = xshm_get_identifier; diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c index 3bb0a93dc..f2c47ef7e 100644 --- a/src/video_out/video_out_xv.c +++ b/src/video_out/video_out_xv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2004, 2008 the xine project * * This file is part of xine, a free video player. * @@ -70,6 +70,7 @@ #include "xineutils.h" #include "vo_scale.h" #include "x11osd.h" +#include "xv_common.h" #define LOCK_DISPLAY(this) {if(this->lock_display) this->lock_display(this->user_data); \ else XLockDisplay(this->display);} @@ -142,6 +143,8 @@ struct xv_driver_s { int use_colorkey; uint32_t colorkey; + int sync_is_vsync; + /* hold initial port attributes values to restore on exit */ xine_list_t *port_attributes; @@ -168,6 +171,10 @@ typedef struct { static int gX11Fail; +VIDEO_DEVICE_XV_DECL_BICUBIC_TYPES; +VIDEO_DEVICE_XV_DECL_PREFER_TYPES; +VIDEO_DEVICE_XV_DECL_SYNC_ATOMS; + static uint32_t xv_get_capabilities (vo_driver_t *this_gen) { xv_driver_t *this = (xv_driver_t *) this_gen; @@ -208,7 +215,7 @@ static vo_frame_t *xv_alloc_frame (vo_driver_t *this_gen) { /* xv_driver_t *this = (xv_driver_t *) this_gen; */ xv_frame_t *frame ; - frame = (xv_frame_t *) xine_xmalloc (sizeof (xv_frame_t)); + frame = (xv_frame_t *) calloc(1, sizeof(xv_frame_t)); if (!frame) return NULL; @@ -521,7 +528,7 @@ static void xv_deinterlace_frame (xv_driver_t *this) { for( i = 0; i < VO_NUM_RECENT_FRAMES; i++ ) if( this->recent_frames[i] && this->recent_frames[i]->width == frame->width && this->recent_frames[i]->height == frame->height ) - recent_bitmaps[i] = this->recent_frames[i]->image->data + frame->width*frame->height; + recent_bitmaps[i] = this->recent_frames[i]->image->data + this->deinterlace_frame.image->width*frame->height; else recent_bitmaps[i] = NULL; @@ -851,8 +858,8 @@ static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { if( factor > 1 ) { - lprintf( "%s PutImage %dX interval (%fs)\n", - log_line_prefix(), factor, elapse_time ); + lprintf( "%s PutImage %dX interval (%fs)\n", + LOG_MODULE, factor, elapse_time ); } } @@ -1090,7 +1097,7 @@ static int xv_gui_data_exchange (vo_driver_t *this_gen, return 0; } -static void xv_store_port_attribute(xv_driver_t *this, char *name) { +static void xv_store_port_attribute(xv_driver_t *this, const char *name) { Atom atom; xv_portattribute_t *attr; @@ -1190,14 +1197,13 @@ static int xv_check_yv12 (Display *display, XvPortID port) { /* called xlocked */ static void xv_check_capability (xv_driver_t *this, - int property, XvAttribute attr, - int base_id, + int property, XvAttribute attr, int base_id, char *config_name, char *config_desc, char *config_help) { int int_default; cfg_entry_t *entry; - char *str_prop = attr.name; + const char *str_prop = attr.name; /* * some Xv drivers (Gatos ATI) report some ~0 as max values, this is confusing. @@ -1267,36 +1273,38 @@ static void xv_update_deinterlace(void *this_gen, xine_cfg_entry_t *entry) { this->deinterlace_method = entry->num_value; } -static void xv_update_XV_FILTER(void *this_gen, xine_cfg_entry_t *entry) { +static void xv_update_attr (void *this_gen, xine_cfg_entry_t *entry, + const char *atomstr, const char *debugstr) +{ xv_driver_t *this = (xv_driver_t *) this_gen; Atom atom; - int xv_filter; - - xv_filter = entry->num_value; LOCK_DISPLAY(this); - atom = XInternAtom (this->display, "XV_FILTER", False); - XvSetPortAttribute (this->display, this->xv_port, atom, xv_filter); + atom = XInternAtom (this->display, atomstr, False); + XvSetPortAttribute (this->display, this->xv_port, atom, entry->num_value); UNLOCK_DISPLAY(this); xprintf(this->xine, XINE_VERBOSITY_DEBUG, - "video_out_xv: bilinear scaling mode (XV_FILTER) = %d\n",xv_filter); + LOG_MODULE ": %s = %d\n", debugstr, entry->num_value); } -static void xv_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry) { - xv_driver_t *this = (xv_driver_t *) this_gen; - Atom atom; - int xv_double_buffer; +static void xv_update_XV_FILTER(void *this_gen, xine_cfg_entry_t *entry) { + xv_update_attr (this_gen, entry, "XV_FILTER", "bilinear scaling mode"); +} - xv_double_buffer = entry->num_value; +static void xv_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry) { + xv_update_attr (this_gen, entry, "XV_DOUBLE_BUFFER", "double buffering mode"); +} - LOCK_DISPLAY(this); - atom = XInternAtom (this->display, "XV_DOUBLE_BUFFER", False); - XvSetPortAttribute (this->display, this->xv_port, atom, xv_double_buffer); - UNLOCK_DISPLAY(this); +static void xv_update_XV_SYNC_TO_VBLANK(void *this_gen, xine_cfg_entry_t *entry) { + xv_update_attr (this_gen, entry, + sync_atoms[((xv_driver_t *)this_gen)->sync_is_vsync], + "sync to vblank"); +} - xprintf(this->xine, XINE_VERBOSITY_DEBUG, - "video_out_xv: double buffering mode = %d\n", xv_double_buffer); +static void xv_update_XV_BICUBIC(void *this_gen, xine_cfg_entry_t *entry) +{ + xv_update_attr (this_gen, entry, "XV_BICUBIC", "bicubic filtering mode"); } static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) { @@ -1305,6 +1313,52 @@ static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry this->use_pitch_alignment = entry->num_value; } +static int xv_open_port (xv_driver_t *this, XvPortID port) { + int ret; + x11_InstallXErrorHandler (this); + ret = ! xv_check_yv12(this->display, port) + && XvGrabPort(this->display, port, 0) == Success; + x11_DeInstallXErrorHandler (this); + return ret; +} + +static unsigned int +xv_find_adaptor_by_port (int port, unsigned int adaptors, + XvAdaptorInfo *adaptor_info) +{ + unsigned int an; + for (an = 0; an < adaptors; an++) + if (adaptor_info[an].type & XvImageMask) + if (port >= adaptor_info[an].base_id && + port < adaptor_info[an].base_id + adaptor_info[an].num_ports) + return an; + return 0; /* shouldn't happen */ +} + +static XvPortID xv_autodetect_port(xv_driver_t *this, + unsigned int adaptors, + XvAdaptorInfo *adaptor_info, + unsigned int *adaptor_num, + XvPortID base, + xv_prefertype prefer_type) +{ + unsigned int an, j; + + for (an = 0; an < adaptors; an++) + if (adaptor_info[an].type & XvImageMask && + (prefer_type == xv_prefer_none || + strcasestr (adaptor_info[an].name, prefer_substrings[prefer_type]))) + for (j = 0; j < adaptor_info[an].num_ports; j++) { + XvPortID port = adaptor_info[an].base_id + j; + if (port >= base && xv_open_port(this, port)) { + *adaptor_num = an; + return port; + } + } + + return 0; +} + /* expects XINE_VISUAL_TYPE_X11_2 with configurable locking */ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void *visual_gen) { xv_class_t *class = (xv_class_t *) class_gen; @@ -1317,14 +1371,15 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void * x11_visual_t *visual = (x11_visual_t *) visual_gen; XColor dummy; XvImage *myimage; - unsigned int adaptors, j; + unsigned int adaptors; unsigned int ver,rel,req,ev,err; XShmSegmentInfo myshminfo; XvPortID xv_port; XvAdaptorInfo *adaptor_info; unsigned int adaptor_num; + xv_prefertype prefer_type; - this = (xv_driver_t *) xine_xmalloc (sizeof (xv_driver_t)); + this = (xv_driver_t *) calloc(1, sizeof(xv_driver_t)); if (!this) return NULL; @@ -1360,24 +1415,31 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void * return NULL; } - xv_port = 0; - - for ( adaptor_num = 0; (adaptor_num < adaptors) && !xv_port; adaptor_num++ ) { - - if (adaptor_info[adaptor_num].type & XvImageMask) { - - for (j = 0; j < adaptor_info[adaptor_num].num_ports && !xv_port; j++) - if (( !(xv_check_yv12 (this->display, - adaptor_info[adaptor_num].base_id + j))) - && (XvGrabPort (this->display, - adaptor_info[adaptor_num].base_id + j, - 0) == Success)) { - xv_port = adaptor_info[adaptor_num].base_id + j; - } - - if( xv_port ) - break; - } + xv_port = config->register_num (config, "video.device.xv_port", 0, + VIDEO_DEVICE_XV_PORT_HELP, + 20, NULL, NULL); + prefer_type = config->register_enum (config, "video.device.xv_preferred_method", 0, + prefer_labels, VIDEO_DEVICE_XV_PREFER_TYPE_HELP, + 10, NULL, NULL); + + if (xv_port != 0) { + if (! xv_open_port(this, xv_port)) { + xprintf(class->xine, XINE_VERBOSITY_NONE, + _("%s: could not open Xv port %"PRId32" - autodetecting\n"), + LOG_MODULE, xv_port); + xv_port = xv_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, xv_port, prefer_type); + } else + adaptor_num = xv_find_adaptor_by_port (xv_port, adaptors, adaptor_info); + } + if (!xv_port) + xv_port = xv_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, 0, prefer_type); + if (!xv_port) + { + if (prefer_type) + xprintf(class->xine, XINE_VERBOSITY_NONE, + _("%s: no available ports of type \"%s\", defaulting...\n"), + LOG_MODULE, prefer_labels[prefer_type]); + xv_port = xv_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, 0, xv_prefer_none); } if (!xv_port) { @@ -1469,10 +1531,11 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void * for(k = 0; k < nattr; k++) { if((attr[k].flags & XvSettable) && (attr[k].flags & XvGettable)) { + const char *const name = attr[k].name; /* store initial port attribute value */ - xv_store_port_attribute(this, attr[k].name); + xv_store_port_attribute(this, name); - if(!strcmp(attr[k].name, "XV_HUE")) { + if(!strcmp(name, "XV_HUE")) { if (!strncmp(adaptor_info[adaptor_num].name, "NV", 2)) { xprintf (this->xine, XINE_VERBOSITY_NONE, "video_out_xv: ignoring broken XV_HUE settings on NVidia cards\n"); } else { @@ -1480,64 +1543,61 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void * adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); } - } else if(!strcmp(attr[k].name, "XV_SATURATION")) { + } else if(!strcmp(name, "XV_SATURATION")) { xv_check_capability (this, VO_PROP_SATURATION, attr[k], adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - - } else if(!strcmp(attr[k].name, "XV_BRIGHTNESS")) { + } else if(!strcmp(name, "XV_BRIGHTNESS")) { xv_check_capability (this, VO_PROP_BRIGHTNESS, attr[k], adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - - } else if(!strcmp(attr[k].name, "XV_CONTRAST")) { + } else if(!strcmp(name, "XV_CONTRAST")) { xv_check_capability (this, VO_PROP_CONTRAST, attr[k], adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - - } else if(!strcmp(attr[k].name, "XV_COLORKEY")) { + } else if(!strcmp(name, "XV_COLORKEY")) { xv_check_capability (this, VO_PROP_COLORKEY, attr[k], adaptor_info[adaptor_num].base_id, "video.device.xv_colorkey", - _("video overlay colour key"), - _("The colour key is used to tell the graphics card where to " - "overlay the video image. Try different values, if you experience " - "windows becoming transparent.")); - - } else if(!strcmp(attr[k].name, "XV_AUTOPAINT_COLORKEY")) { + VIDEO_DEVICE_XV_COLORKEY_HELP); + } else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) { xv_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k], adaptor_info[adaptor_num].base_id, "video.device.xv_autopaint_colorkey", - _("autopaint colour key"), - _("Make Xv autopaint its colour key.")); - - } else if(!strcmp(attr[k].name, "XV_FILTER")) { + VIDEO_DEVICE_XV_AUTOPAINT_COLORKEY_HELP); + } else if(!strcmp(name, "XV_FILTER")) { int xv_filter; /* This setting is specific to Permedia 2/3 cards. */ xv_filter = config->register_range (config, "video.device.xv_filter", 0, attr[k].min_value, attr[k].max_value, - _("bilinear scaling mode"), - _("Selects the bilinear scaling mode for Permedia cards. " - "The individual values are:\n\n" - "Permedia 2\n" - "0 - disable bilinear filtering\n" - "1 - enable bilinear filtering\n\n" - "Permedia 3\n" - "0 - disable bilinear filtering\n" - "1 - horizontal linear filtering\n" - "2 - enable full bilinear filtering"), + VIDEO_DEVICE_XV_FILTER_HELP, 20, xv_update_XV_FILTER, this); config->update_num(config,"video.device.xv_filter",xv_filter); - } else if(!strcmp(attr[k].name, "XV_DOUBLE_BUFFER")) { - int xv_double_buffer; - xv_double_buffer = + } else if(!strcmp(name, "XV_DOUBLE_BUFFER")) { + int xv_double_buffer = config->register_bool (config, "video.device.xv_double_buffer", 1, - _("enable double buffering"), - _("Double buffering will synchronize the update of the video image to the " - "repainting of the entire screen (\"vertical retrace\"). This eliminates " - "flickering and tearing artifacts, but will use more graphics memory."), - 20, xv_update_XV_DOUBLE_BUFFER, this); + VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP, + 20, xv_update_XV_DOUBLE_BUFFER, this); config->update_num(config,"video.device.xv_double_buffer",xv_double_buffer); + } else if(((this->sync_is_vsync = 0), !strcmp(name, sync_atoms[0])) || + ((this->sync_is_vsync = 1), !strcmp(name, sync_atoms[1]))) { + int xv_sync_to_vblank; + xv_sync_to_vblank = + config->register_bool (config, "video.device.xv_sync_to_vblank", 1, + _("enable vblank sync"), + _("This option will synchronize the update of the video image to the " + "repainting of the entire screen (\"vertical retrace\"). This eliminates " + "flickering and tearing artifacts. On nvidia cards one may also " + "need to run \"nvidia-settings\" and choose which display device to " + "sync to under the XVideo Settings tab"), + 20, xv_update_XV_SYNC_TO_VBLANK, this); + config->update_num(config,"video.device.xv_sync_to_vblank",xv_sync_to_vblank); + } else if(!strcmp(name, "XV_BICUBIC")) { + int xv_bicubic = + config->register_enum (config, "video.device.xv_bicubic", 2, + bicubic_types, VIDEO_DEVICE_XV_BICUBIC_HELP, + 20, xv_update_XV_BICUBIC, this); + config->update_num(config,"video.device.xv_bicubic",xv_bicubic); } } } @@ -1593,8 +1653,7 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void * this->use_pitch_alignment = config->register_bool (config, "video.device.xv_pitch_alignment", 0, - _("pitch alignment workaround"), - _("Some buggy video drivers need a workaround to function properly."), + VIDEO_DEVICE_XV_PITCH_ALIGNMENT_HELP, 10, xv_update_xv_pitch_alignment, this); this->deinterlace_method = @@ -1684,7 +1743,7 @@ static void dispose_class (video_driver_class_t *this_gen) { } static void *init_class (xine_t *xine, void *visual_gen) { - xv_class_t *this = (xv_class_t *) xine_xmalloc (sizeof (xv_class_t)); + xv_class_t *this = (xv_class_t *) calloc(1, sizeof(xv_class_t)); this->driver_class.open_plugin = open_plugin_old; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/video_out_xvmc.c b/src/video_out/video_out_xvmc.c index a17e4d6a0..c2560ccc0 100644 --- a/src/video_out/video_out_xvmc.c +++ b/src/video_out/video_out_xvmc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2004, 2008 the xine project * * This file is part of xine, a free video player. * @@ -75,6 +75,7 @@ #include "xineutils.h" #include "vo_scale.h" +#include "xv_common.h" /* #define LOG1 */ /* #define DLOG */ @@ -225,8 +226,6 @@ typedef struct { Display *display; config_values_t *config; XvPortID xv_port; - XvAdaptorInfo *adaptor_info; - unsigned int adaptor_num; int surface_type_id; unsigned int max_surface_width; @@ -556,7 +555,7 @@ static vo_frame_t *xvmc_alloc_frame (vo_driver_t *this_gen) { lprintf ("xvmc_alloc_frame\n"); - frame = (xvmc_frame_t *) xine_xmalloc (sizeof (xvmc_frame_t)); + frame = calloc(1, sizeof (xvmc_frame_t)); if (!frame) return NULL; @@ -595,8 +594,8 @@ static cxid_t *xvmc_set_context (xvmc_driver_t *this, /* initialize block & macro block pointers first time */ if(macroblocks->blocks == NULL || macroblocks->macro_blocks == NULL) { - macroblocks->blocks = xine_xmalloc(sizeof(XvMCBlockArray)); - macroblocks->macro_blocks = xine_xmalloc(sizeof(XvMCMacroBlockArray)); + macroblocks->blocks = calloc(1, sizeof(XvMCBlockArray)); + macroblocks->macro_blocks = calloc(1, sizeof(XvMCMacroBlockArray)); lprintf("macroblocks->blocks %lx ->macro_blocks %lx\n", macroblocks->blocks,macroblocks->macro_blocks); @@ -700,6 +699,7 @@ static cxid_t *xvmc_set_context (xvmc_driver_t *this, return NULL; } +#if 0 static XvImage *create_ximage (xvmc_driver_t *this, XShmSegmentInfo *shminfo, int width, int height, int format) { unsigned int xvmc_format; @@ -755,6 +755,7 @@ static void dispose_ximage (xvmc_driver_t *this, lprintf ("dispose_ximage\n"); XFree(myimage); } +#endif static void xvmc_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, @@ -1252,13 +1253,13 @@ static void xvmc_dispose (vo_driver_t *this_gen) { /* called xlocked */ static void xvmc_check_capability (xvmc_driver_t *this, - int property, XvAttribute attr, - int base_id, char *str_prop, - char *config_name, - char *config_desc, - char *config_help) { + int property, XvAttribute attr, int base_id, + const char *config_name, + const char *config_desc, + const char *config_help) { int int_default; cfg_entry_t *entry; + const char *str_prop = attr.name; /* * some Xv drivers (Gatos ATI) report some ~0 as max values, this is confusing. @@ -1281,13 +1282,13 @@ static void xvmc_check_capability (xvmc_driver_t *this, if ((attr.min_value == 0) && (attr.max_value == 1)) { this->config->register_bool (this->config, config_name, int_default, config_desc, - NULL, 20, xvmc_property_callback, &this->props[property]); + config_help, 20, xvmc_property_callback, &this->props[property]); } else { this->config->register_range (this->config, config_name, int_default, this->props[property].min, this->props[property].max, config_desc, - NULL, 20, xvmc_property_callback, &this->props[property]); + config_help, 20, xvmc_property_callback, &this->props[property]); } entry = this->config->lookup_entry (this->config, config_name); @@ -1333,7 +1334,6 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi xvmc_class_t *class = (xvmc_class_t *) class_gen; config_values_t *config = class->config; xvmc_driver_t *this = NULL; - Display *display = NULL; unsigned int i, formats; XvPortID xv_port = class->xv_port; XvAttribute *attr; @@ -1341,14 +1341,13 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi int nattr; x11_visual_t *visual = (x11_visual_t *) visual_gen; XColor dummy; + XvAdaptorInfo *adaptor_info; + unsigned int adaptor_num; /* XvImage *myimage; */ lprintf ("open_plugin\n"); - display = visual->display; - - /* TODO ??? */ - this = (xvmc_driver_t *) xine_xmalloc (sizeof (xvmc_driver_t)); + this = calloc(1, sizeof (xvmc_driver_t)); if (!this) return NULL; @@ -1430,56 +1429,47 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi this->capabilities |= VO_CAP_XVMC_IDCT; XLockDisplay(this->display); - attr = XvQueryPortAttributes(display, xv_port, &nattr); + attr = XvQueryPortAttributes(this->display, xv_port, &nattr); if(attr && nattr) { int k; for(k = 0; k < nattr; k++) { if((attr[k].flags & XvSettable) && (attr[k].flags & XvGettable)) { - if(!strcmp(attr[k].name, "XV_HUE")) { - xvmc_check_capability (this, VO_PROP_HUE, attr[k], - class->adaptor_info[class->adaptor_num].base_id, "XV_HUE", - NULL, NULL, NULL); - - } else if(!strcmp(attr[k].name, "XV_SATURATION")) { + const char *const name = attr[k].name; + if(!strcmp(name, "XV_HUE")) { + if (!strncmp(adaptor_info[adaptor_num].name, "NV", 2)) { + xprintf (this->xine, XINE_VERBOSITY_NONE, LOG_MODULE ": ignoring broken XV_HUE settings on NVidia cards\n"); + } else { + xvmc_check_capability (this, VO_PROP_HUE, attr[k], + adaptor_info[adaptor_num].base_id, + NULL, NULL, NULL); + } + } else if(!strcmp(name, "XV_SATURATION")) { xvmc_check_capability (this, VO_PROP_SATURATION, attr[k], - class->adaptor_info[class->adaptor_num].base_id, "XV_SATURATION", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - } else if(!strcmp(attr[k].name, "XV_BRIGHTNESS")) { xvmc_check_capability (this, VO_PROP_BRIGHTNESS, attr[k], - class->adaptor_info[class->adaptor_num].base_id, "XV_BRIGHTNESS", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - - } else if(!strcmp(attr[k].name, "XV_CONTRAST")) { + } else if(!strcmp(name, "XV_CONTRAST")) { xvmc_check_capability (this, VO_PROP_CONTRAST, attr[k], - class->adaptor_info[class->adaptor_num].base_id, "XV_CONTRAST", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - - } else if(!strcmp(attr[k].name, "XV_COLORKEY")) { + } else if(!strcmp(name, "XV_COLORKEY")) { xvmc_check_capability (this, VO_PROP_COLORKEY, attr[k], - class->adaptor_info[class->adaptor_num].base_id, "XV_COLORKEY", + adaptor_info[adaptor_num].base_id, "video.device.xv_colorkey", - _("video overlay colour key"), - _("The colour key is used to tell the graphics card where to " - "overlay the video image. Try different values, if you experience " - "windows becoming transparent.")); - - } else if(!strcmp(attr[k].name, "XV_AUTOPAINT_COLORKEY")) { + VIDEO_DEVICE_XV_COLORKEY_HELP); + } else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) { xvmc_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k], - class->adaptor_info[class->adaptor_num].base_id, "XV_AUTOPAINT_COLORKEY", + adaptor_info[adaptor_num].base_id, "video.device.xv_autopaint_colorkey", - _("autopaint colour key"), - _("Make Xv autopaint its colour key.")); - - } else if(!strcmp(attr[k].name, "XV_DOUBLE_BUFFER")) { - int xvmc_double_buffer; - xvmc_double_buffer = config->register_bool (config, "video.device.xv_double_buffer", 1, - _("enable double buffering"), - _("Double buffering will synchronize the update of the video image to the " - "repainting of the entire screen (\"vertical retrace\"). This eliminates " - "flickering and tearing artifacts, but will use more graphics memory."), - 20, xvmc_update_XV_DOUBLE_BUFFER, this); + VIDEO_DEVICE_XV_AUTOPAINT_COLORKEY_HELP); + } else if(!strcmp(name, "XV_DOUBLE_BUFFER")) { + int xvmc_double_buffer = config->register_bool (config, "video.device.xv_double_buffer", 1, + VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP, + 20, xvmc_update_XV_DOUBLE_BUFFER, this); config->update_num(config,"video.device.xv_double_buffer",xvmc_double_buffer); } } @@ -1494,7 +1484,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi /* * check supported image formats */ - fo = XvListImageFormats(display, this->xv_port, (int*)&formats); + fo = XvListImageFormats(this->display, this->xv_port, (int*)&formats); XUnlockDisplay(this->display); this->xvmc_format_yv12 = 0; @@ -1613,10 +1603,6 @@ static char* get_description (video_driver_class_t *this_gen) { static void dispose_class (video_driver_class_t *this_gen) { xvmc_class_t *this = (xvmc_class_t *) this_gen; - XLockDisplay(this->display); - XvFreeAdaptorInfo (this->adaptor_info); - XUnlockDisplay(this->display); - free (this); } @@ -1789,8 +1775,6 @@ static void *init_class (xine_t *xine, void *visual_gen) { this->display = display; this->config = xine->config; this->xv_port = xv_port; - this->adaptor_info = adaptor_info; - this->adaptor_num = adaptor_num; this->surface_type_id = surface_type; this->max_surface_width = max_width; this->max_surface_height = max_height; diff --git a/src/video_out/video_out_xxmc.c b/src/video_out/video_out_xxmc.c index 28679e95d..61e0139e3 100644 --- a/src/video_out/video_out_xxmc.c +++ b/src/video_out/video_out_xxmc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2004, 2008 the xine project * Copyright (C) 2004 the Unichrome project * * This file is part of xine, a free video player. @@ -34,9 +34,9 @@ */ - #include "xxmc.h" #include <unistd.h> +#include "xv_common.h" static int gX11Fail; @@ -45,6 +45,8 @@ static void xxmc_frame_updates(xxmc_driver_t *driver, xxmc_frame_t *frame, static void dispose_ximage (xxmc_driver_t *this, XShmSegmentInfo *shminfo, XvImage *myimage); +VIDEO_DEVICE_XV_DECL_BICUBIC_TYPES; +VIDEO_DEVICE_XV_DECL_PREFER_TYPES; /* * Acceleration level priority. Static for now. It may well turn out that IDCT @@ -158,18 +160,13 @@ static void xxmc_xvmc_dump_subpictures(xxmc_driver_t *this) static void xxmc_xvmc_surface_handler_construct(xxmc_driver_t *this) { - int i; xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; pthread_mutex_init(&handler->mutex,NULL); - for (i=0; i<XVMC_MAX_SURFACES; ++i) { - handler->surfInUse[i] = 0; - handler->surfValid[i] = 0; - } - for (i=0; i<XVMC_MAX_SUBPICTURES; ++i) { - handler->subInUse[i] = 0; - handler->subValid[i] = 0; - } + memset(handler->surfInUse, 0, sizeof(handler->surfInUse)); + memset(handler->surfValid, 0, sizeof(handler->surfValid)); + memset(handler->subInUse, 0, sizeof(handler->subInUse)); + memset(handler->subValid, 0, sizeof(handler->subValid)); } static void xxmc_xvmc_destroy_surfaces(xxmc_driver_t *this) @@ -550,7 +547,7 @@ static vo_frame_t *xxmc_alloc_frame (vo_driver_t *this_gen) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; xxmc_frame_t *frame ; - frame = (xxmc_frame_t *) xine_xmalloc (sizeof (xxmc_frame_t)); + frame = calloc(1, sizeof (xxmc_frame_t)); if (!frame) return NULL; @@ -1611,8 +1608,8 @@ static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) * other than 100 %, so let's disable deinterlacing at all for this frame */ if (this->deinterlace_enabled && this->bob) { - disable_deinterlace = this->disable_bob_for_progressive_frames && frame->vo_frame.progressive_frame - || this->disable_bob_for_scaled_osd && this->scaled_osd_active + disable_deinterlace = (this->disable_bob_for_progressive_frames && frame->vo_frame.progressive_frame) + || (this->disable_bob_for_scaled_osd && this->scaled_osd_active) || !frame->vo_frame.stream || xine_get_param(frame->vo_frame.stream, XINE_PARAM_FINE_SPEED) != XINE_FINE_SPEED_NORMAL; if (!disable_deinterlace) { @@ -2065,13 +2062,13 @@ static int xxmc_check_yv12 (Display *display, XvPortID port) { /* called xlocked */ static void xxmc_check_capability (xxmc_driver_t *this, - int property, XvAttribute attr, - int base_id, char *str_prop, - char *config_name, - char *config_desc, - char *config_help) { + int property, XvAttribute attr, int base_id, + const char *config_name, + const char *config_desc, + const char *config_help) { int int_default; cfg_entry_t *entry; + const char *str_prop = attr.name; if (VO_PROP_COLORKEY && (attr.max_value == ~0)) attr.max_value = 2147483615; @@ -2133,36 +2130,32 @@ static void xxmc_check_capability (xxmc_driver_t *this, this->props[property].value = int_default; } -static void xxmc_update_XV_FILTER(void *this_gen, xine_cfg_entry_t *entry) { +static void xxmc_update_attr (void *this_gen, xine_cfg_entry_t *entry, + const char *atomstr, const char *debugstr) +{ xxmc_driver_t *this = (xxmc_driver_t *) this_gen; Atom atom; - int xv_filter; - - xv_filter = entry->num_value; XLockDisplay(this->display); - atom = XInternAtom (this->display, "XV_FILTER", False); - XvSetPortAttribute (this->display, this->xv_port, atom, xv_filter); + atom = XInternAtom (this->display, atomstr, False); + XvSetPortAttribute (this->display, this->xv_port, atom, entry->num_value); XUnlockDisplay(this->display); xprintf(this->xine, XINE_VERBOSITY_DEBUG, - "video_out_xxmc: bilinear scaling mode (XV_FILTER) = %d\n",xv_filter); + LOG_MODULE ": %s = %d\n", debugstr, entry->num_value); } -static void xxmc_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry) { - xxmc_driver_t *this = (xxmc_driver_t *) this_gen; - Atom atom; - int xv_double_buffer; - - xv_double_buffer = entry->num_value; +static void xxmc_update_XV_FILTER(void *this_gen, xine_cfg_entry_t *entry) { + xxmc_update_attr (this_gen, entry, "XV_FILTER", "bilinear scaling mode"); +} - XLockDisplay(this->display); - atom = XInternAtom (this->display, "XV_DOUBLE_BUFFER", False); - XvSetPortAttribute (this->display, this->xv_port, atom, xv_double_buffer); - XUnlockDisplay(this->display); +static void xxmc_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry) { + xxmc_update_attr (this_gen, entry, "XV_DOUBLE_BUFFER", "double buffering mode"); +} - xprintf(this->xine, XINE_VERBOSITY_DEBUG, - "video_out_xxmc: double buffering mode = %d\n", xv_double_buffer); +static void xxmc_update_XV_BICUBIC(void *this_gen, xine_cfg_entry_t *entry) +{ + xxmc_update_attr (this_gen, entry, "XV_BICUBIC", "bicubic filtering mode"); } static void xxmc_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) { @@ -2201,6 +2194,52 @@ static void xxmc_update_disable_bob_for_scaled_osd(void *this_gen, xine_cfg_entr this->disable_bob_for_scaled_osd = entry->num_value; } +static int xxmc_open_port (xxmc_driver_t *this, XvPortID port) { + int ret; + x11_InstallXErrorHandler (this); + ret = ! xxmc_check_yv12(this->display, port) + && XvGrabPort(this->display, port, 0) == Success; + x11_DeInstallXErrorHandler (this); + return ret; +} + +static unsigned int +xxmc_find_adaptor_by_port (int port, unsigned int adaptors, + XvAdaptorInfo *adaptor_info) +{ + unsigned int an; + for (an = 0; an < adaptors; an++) + if (adaptor_info[an].type & XvImageMask) + if (port >= adaptor_info[an].base_id && + port < adaptor_info[an].base_id + adaptor_info[an].num_ports) + return an; + return 0; /* shouldn't happen */ +} + +static XvPortID xxmc_autodetect_port(xxmc_driver_t *this, + unsigned int adaptors, + XvAdaptorInfo *adaptor_info, + unsigned int *adaptor_num, + XvPortID base, + xv_prefertype prefer_type) +{ + unsigned int an, j; + + for (an = 0; an < adaptors; an++) + if (adaptor_info[an].type & XvImageMask && + (prefer_type == xv_prefer_none || + strcasestr (adaptor_info[an].name, prefer_substrings[prefer_type]))) + for (j = 0; j < adaptor_info[an].num_ports; j++) { + XvPortID port = adaptor_info[an].base_id + j; + if (port >= base && xxmc_open_port(this, port)) { + *adaptor_num = an; + return port; + } + } + + return 0; +} + static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) { @@ -2363,17 +2402,18 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi x11_visual_t *visual = (x11_visual_t *) visual_gen; XColor dummy; XvImage *myimage; - unsigned int adaptors, j; + unsigned int adaptors; unsigned int ver,rel,req,ev,err; XShmSegmentInfo myshminfo; XvPortID xv_port; XvAdaptorInfo *adaptor_info; unsigned int adaptor_num; + xv_prefertype prefer_type; cfg_entry_t *entry; int use_more_frames; int use_unscaled; - this = (xxmc_driver_t *) xine_xmalloc (sizeof (xxmc_driver_t)); + this = calloc(1, sizeof (xxmc_driver_t)); if (!this) return NULL; @@ -2404,24 +2444,31 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi return NULL; } - xv_port = 0; - - for ( adaptor_num = 0; (adaptor_num < adaptors) && !xv_port; adaptor_num++ ) { - - if (adaptor_info[adaptor_num].type & XvImageMask) { - - for (j = 0; j < adaptor_info[adaptor_num].num_ports && !xv_port; j++) - if (( !(xxmc_check_yv12 (this->display, - adaptor_info[adaptor_num].base_id + j))) - && (XvGrabPort (this->display, - adaptor_info[adaptor_num].base_id + j, - 0) == Success)) { - xv_port = adaptor_info[adaptor_num].base_id + j; - } - - if( xv_port ) - break; - } + xv_port = config->register_num (config, "video.device.xv_port", 0, + VIDEO_DEVICE_XV_PORT_HELP, + 20, NULL, NULL); + prefer_type = config->register_enum (config, "video.device.xv_preferred_method", 0, + prefer_labels, VIDEO_DEVICE_XV_PREFER_TYPE_HELP, + 10, NULL, NULL); + + if (xv_port != 0) { + if (! xxmc_open_port(this, xv_port)) { + xprintf(class->xine, XINE_VERBOSITY_NONE, + _("%s: could not open Xv port %d - autodetecting\n"), + LOG_MODULE, xv_port); + xv_port = xxmc_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, xv_port, prefer_type); + } else + adaptor_num = xxmc_find_adaptor_by_port (xv_port, adaptors, adaptor_info); + } + if (!xv_port) + xv_port = xxmc_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, 0, prefer_type); + if (!xv_port) + { + if (prefer_type) + xprintf(class->xine, XINE_VERBOSITY_NONE, + _("%s: no available ports of type \"%s\", defaulting...\n"), + LOG_MODULE, prefer_labels[prefer_type]); + xv_port = xxmc_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, 0, xv_prefer_none); } if (!xv_port) { @@ -2510,72 +2557,60 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi for(k = 0; k < nattr; k++) { if((attr[k].flags & XvSettable) && (attr[k].flags & XvGettable)) { - if(!strcmp(attr[k].name, "XV_HUE")) { + const char *const name = attr[k].name; + if(!strcmp(name, "XV_HUE")) { if (!strncmp(adaptor_info[adaptor_num].name, "NV", 2)) { xprintf (this->xine, XINE_VERBOSITY_NONE, "video_out_xxmc: ignoring broken XV_HUE settings on NVidia cards\n"); } else { xxmc_check_capability (this, VO_PROP_HUE, attr[k], - adaptor_info[adaptor_num].base_id, "XV_HUE", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); } - } else if(!strcmp(attr[k].name, "XV_SATURATION")) { + } else if(!strcmp(name, "XV_SATURATION")) { xxmc_check_capability (this, VO_PROP_SATURATION, attr[k], - adaptor_info[adaptor_num].base_id, "XV_SATURATION", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - } else if(!strcmp(attr[k].name, "XV_BRIGHTNESS")) { + } else if(!strcmp(name, "XV_BRIGHTNESS")) { xxmc_check_capability (this, VO_PROP_BRIGHTNESS, attr[k], - adaptor_info[adaptor_num].base_id, "XV_BRIGHTNESS", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - } else if(!strcmp(attr[k].name, "XV_CONTRAST")) { + } else if(!strcmp(name, "XV_CONTRAST")) { xxmc_check_capability (this, VO_PROP_CONTRAST, attr[k], - adaptor_info[adaptor_num].base_id, "XV_CONTRAST", + adaptor_info[adaptor_num].base_id, NULL, NULL, NULL); - } else if(!strcmp(attr[k].name, "XV_COLORKEY")) { + } else if(!strcmp(name, "XV_COLORKEY")) { xxmc_check_capability (this, VO_PROP_COLORKEY, attr[k], - adaptor_info[adaptor_num].base_id, "XV_COLORKEY", + adaptor_info[adaptor_num].base_id, "video.device.xv_colorkey", - _("video overlay colour key"), - _("The colour key is used to tell the graphics card where to " - "overlay the video image. Try different values, if you experience " - "windows becoming transparent.")); - - } else if(!strcmp(attr[k].name, "XV_AUTOPAINT_COLORKEY")) { + VIDEO_DEVICE_XV_COLORKEY_HELP); + } else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) { xxmc_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k], - adaptor_info[adaptor_num].base_id, "XV_AUTOPAINT_COLORKEY", + adaptor_info[adaptor_num].base_id, "video.device.xv_autopaint_colorkey", - _("autopaint colour key"), - _("Make Xv autopaint its colour key.")); - - } else if(!strcmp(attr[k].name, "XV_FILTER")) { + VIDEO_DEVICE_XV_AUTOPAINT_COLORKEY_HELP); + } else if(!strcmp(name, "XV_FILTER")) { int xv_filter; /* This setting is specific to Permedia 2/3 cards. */ xv_filter = config->register_range (config, "video.device.xv_filter", 0, attr[k].min_value, attr[k].max_value, - _("bilinear scaling mode"), - _("Selects the bilinear scaling mode for Permedia cards. " - "The individual values are:\n\n" - "Permedia 2\n" - "0 - disable bilinear filtering\n" - "1 - enable bilinear filtering\n\n" - "Permedia 3\n" - "0 - disable bilinear filtering\n" - "1 - horizontal linear filtering\n" - "2 - enable full bilinear filtering"), + VIDEO_DEVICE_XV_FILTER_HELP, 20, xxmc_update_XV_FILTER, this); config->update_num(config,"video.device.xv_filter",xv_filter); - } else if(!strcmp(attr[k].name, "XV_DOUBLE_BUFFER")) { - int xv_double_buffer; - xv_double_buffer = + } else if(!strcmp(name, "XV_DOUBLE_BUFFER")) { + int xv_double_buffer = config->register_bool (config, "video.device.xv_double_buffer", 1, - _("enable double buffering"), - _("Double buffering will synchronize the update of the video image to the " - "repainting of the entire screen (\"vertical retrace\"). This eliminates " - "flickering and tearing artifacts, but will use more graphics memory."), + VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP, 20, xxmc_update_XV_DOUBLE_BUFFER, this); config->update_num(config,"video.device.xv_double_buffer",xv_double_buffer); + } else if(!strcmp(name, "XV_BICUBIC")) { + int xv_bicubic = + config->register_enum (config, "video.device.xv_bicubic", 2, + bicubic_types, VIDEO_DEVICE_XV_BICUBIC_HELP, + 20, xxmc_update_XV_BICUBIC, this); + config->update_num(config,"video.device.xv_bicubic",xv_bicubic); } } } @@ -2639,8 +2674,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi this->use_pitch_alignment = config->register_bool (config, "video.device.xv_pitch_alignment", 0, - _("pitch alignment workaround"), - _("Some buggy video drivers need a workaround to function properly."), + VIDEO_DEVICE_XV_PITCH_ALIGNMENT_HELP, 10, xxmc_update_xv_pitch_alignment, this); use_more_frames= @@ -2744,7 +2778,7 @@ static void dispose_class (video_driver_class_t *this_gen) { } static void *init_class (xine_t *xine, void *visual_gen) { - xxmc_class_t *this = (xxmc_class_t *) xine_xmalloc (sizeof (xxmc_class_t)); + xxmc_class_t *this = calloc(1, sizeof (xxmc_class_t)); this->driver_class.open_plugin = open_plugin; this->driver_class.get_identifier = get_identifier; diff --git a/src/video_out/x11osd.c b/src/video_out/x11osd.c index e0cb6f1f6..4d0e46287 100644 --- a/src/video_out/x11osd.c +++ b/src/video_out/x11osd.c @@ -245,7 +245,7 @@ x11osd_create (xine_t *xine, Display *display, int screen, Window window, enum x XSetWindowAttributes attr; XWindowAttributes getattr; - osd = xine_xmalloc (sizeof (x11osd)); + osd = calloc(1, sizeof(x11osd)); if (!osd) return NULL; diff --git a/src/video_out/xcbosd.c b/src/video_out/xcbosd.c index 4bb2b60af..d8cf119a2 100644 --- a/src/video_out/xcbosd.c +++ b/src/video_out/xcbosd.c @@ -238,7 +238,7 @@ xcbosd *xcbosd_create(xine_t *xine, xcb_connection_t *connection, xcb_screen_t * xcb_void_cookie_t generic_cookie; xcb_generic_error_t *generic_error; - osd = xine_xmalloc (sizeof (xcbosd)); + osd = calloc(1, sizeof(xcbosd)); if (!osd) return NULL; diff --git a/src/video_out/xv_common.h b/src/video_out/xv_common.h new file mode 100644 index 000000000..ff49286f0 --- /dev/null +++ b/src/video_out/xv_common.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2008 the xine project + * + * This file is part of xine, a free video player. + * + * xine 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. + * + * xine 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, USA + * + * xv_common.h: X11 Xv common bits + */ + +#define VIDEO_DEVICE_XV_COLORKEY_HELP \ + _("video overlay colour key"), \ + _("The colour key is used to tell the graphics card where to " \ + "overlay the video image. Try different values, if you "\ + "experience windows becoming transparent.") + +#define VIDEO_DEVICE_XV_AUTOPAINT_COLORKEY_HELP \ + _("autopaint colour key"), \ + _("Make Xv autopaint its colour key.") + +#define VIDEO_DEVICE_XV_FILTER_HELP \ + _("bilinear scaling mode"), \ + _("Selects the bilinear scaling mode for Permedia cards. " \ + "The individual values are:\n\n" \ + "Permedia 2\n" \ + "0 - disable bilinear filtering\n" \ + "1 - enable bilinear filtering\n\n" \ + "Permedia 3\n" \ + "0 - disable bilinear filtering\n" \ + "1 - horizontal linear filtering\n" \ + "2 - enable full bilinear filtering") + +#define VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP \ + _("enable double buffering"), \ + _("Double buffering will synchronize the update of the video " \ + "image to the repainting of the entire screen (\"vertical " \ + "retrace\"). This eliminates flickering and tearing artifacts, " \ + "but will use more graphics memory.") + +#define VIDEO_DEVICE_XV_PORT_HELP \ + _("Xv port number"), \ + _("Selects the Xv port number to use (0 to autodetect).") + +#define VIDEO_DEVICE_XV_PITCH_ALIGNMENT_HELP \ + _("pitch alignment workaround"), \ + _("Some buggy video drivers need a workaround to function properly.") + +#define VIDEO_DEVICE_XV_DECL_SYNC_ATOMS \ + static const char *const sync_atoms[] = \ + { "XV_SYNC_TO_VBLANK", "XV_VSYNC" }; + +#define VIDEO_DEVICE_XV_DECL_PREFER_TYPES \ + typedef enum { \ + xv_prefer_none, xv_prefer_overlay, xv_prefer_textured, xv_prefer_blitter, \ + } xv_prefertype; \ + static const char *const prefer_labels[] = \ + { "Any", "Overlay", "Textured Video", "Blitter", NULL }; \ + static const char prefer_substrings[][8] = \ + { "", "Overlay", "Texture", "Blitter" }; +#define VIDEO_DEVICE_XV_PREFER_TYPE_HELP \ + _("video display method preference"), \ + _("Selects which video output method is preferred. " \ + "Detection is done using the reported Xv adaptor names.\n" \ + "(Only applies when auto-detecting which Xv port to use.)") + +#define VIDEO_DEVICE_XV_DECL_BICUBIC_TYPES \ + static const char *const bicubic_types[] = { "Off", "On", "Auto", NULL }; +#define VIDEO_DEVICE_XV_BICUBIC_HELP \ + _("bicubic filtering"), \ + _("This option controls bicubic filtering of the video image. " \ + "It may be used instead of, or as well as, xine's deinterlacers.") diff --git a/src/video_out/xxmc.h b/src/video_out/xxmc.h index 1c24991be..03b12c15b 100644 --- a/src/video_out/xxmc.h +++ b/src/video_out/xxmc.h @@ -37,6 +37,14 @@ #define XVMC_THREAD_SAFE +/* + * some implementations are not aware of the display having been locked + * already before calling the xvmc function and may therefore deadlock. + */ +/* +#define XVMC_LOCKDISPLAY_SAFE +*/ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -171,7 +179,7 @@ typedef struct context_lock_s { return; \ } -#ifdef XVMC_THREAD_SAFE +#if defined(XVMC_THREAD_SAFE) && defined(XVMC_LOCKDISPLAY_SAFE) #define XVMCLOCKDISPLAY(display) #define XVMCUNLOCKDISPLAY(display) #else diff --git a/src/video_out/yuv2rgb.c b/src/video_out/yuv2rgb.c index c98dd518f..fb2d63e6c 100644 --- a/src/video_out/yuv2rgb.c +++ b/src/video_out/yuv2rgb.c @@ -3144,7 +3144,7 @@ static void yuy22rgb_c_init (yuv2rgb_factory_t *this) static yuv2rgb_t *yuv2rgb_create_converter (yuv2rgb_factory_t *factory) { - yuv2rgb_t *this = xine_xmalloc (sizeof (yuv2rgb_t)); + yuv2rgb_t *this = calloc(1, sizeof(yuv2rgb_t)); this->swapped = factory->swapped; this->cmap = factory->cmap; diff --git a/src/video_out/yuv2rgb_mlib.c b/src/video_out/yuv2rgb_mlib.c index 8635526ed..22e67efa8 100644 --- a/src/video_out/yuv2rgb_mlib.c +++ b/src/video_out/yuv2rgb_mlib.c @@ -38,8 +38,6 @@ #include "xineutils.h" #include "yuv2rgb.h" -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) - static void mlib_yuv420_rgb24(yuv2rgb_t *this, uint8_t * image, uint8_t * py, uint8_t * pu, uint8_t * pv) diff --git a/src/xine-engine/alphablend.c b/src/xine-engine/alphablend.c index a7ab33cf8..a9b015209 100644 --- a/src/xine-engine/alphablend.c +++ b/src/xine-engine/alphablend.c @@ -23,6 +23,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* #define LOG_BLEND_YUV #define LOG_BLEND_RGB16 @@ -1110,12 +1114,12 @@ static uint8_t *(*blend_yuv_grow_extra_data(alphablend_t *extra_data, int osd_wi uint8_t *data[ 3 ][ 2 ]; } *header = (struct header_s *)extra_data->buffer; - int needed_buffer_size = sizeof (*header) + osd_width * sizeof (uint8_t[ 3 ][ 2 ]); + size_t needed_buffer_size = sizeof (*header) + osd_width * sizeof (uint8_t[ 3 ][ 2 ]); if (extra_data->buffer_size < needed_buffer_size) { free(extra_data->buffer); - header = xine_xmalloc(needed_buffer_size); + header = calloc(1, needed_buffer_size); if (!header) { extra_data->buffer_size = 0; return 0; @@ -1552,12 +1556,12 @@ static uint8_t *(*blend_yuy2_grow_extra_data(alphablend_t *extra_data, int osd_w uint8_t *data[ 3 ]; } *header = (struct header_s *)extra_data->buffer; - int needed_buffer_size = sizeof (*header) + osd_width * sizeof (uint8_t[ 3 ]); + size_t needed_buffer_size = sizeof (*header) + osd_width * sizeof (uint8_t[ 3 ]); if (extra_data->buffer_size < needed_buffer_size) { free(extra_data->buffer); - header = xine_xmalloc(needed_buffer_size); + header = calloc(1, needed_buffer_size); if (!header) { extra_data->buffer_size = 0; return 0; diff --git a/src/xine-engine/alphablend.h b/src/xine-engine/alphablend.h index 3c9a693d9..7aa63b306 100644 --- a/src/xine-engine/alphablend.h +++ b/src/xine-engine/alphablend.h @@ -39,22 +39,7 @@ typedef struct { void _x_alphablend_init(alphablend_t *extra_data, xine_t *xine) XINE_PROTECTED; void _x_alphablend_free(alphablend_t *extra_data) XINE_PROTECTED; -/* _MSC_VER port changes */ -#undef ATTRIBUTE_PACKED -#undef PRAGMA_PACK_BEGIN -#undef PRAGMA_PACK_END - -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) || defined(__ICC) -#define ATTRIBUTE_PACKED __attribute__ ((packed)) -#define PRAGMA_PACK 0 -#endif - -#if !defined(ATTRIBUTE_PACKED) -#define ATTRIBUTE_PACKED -#define PRAGMA_PACK 1 -#endif - -#if PRAGMA_PACK +#if !SUPPORT_ATTRIBUTE_PACKED #pragma pack(8) #endif @@ -63,10 +48,10 @@ typedef struct { /* CLUT == Color LookUp Table */ uint8_t cr; uint8_t y; uint8_t foo; -} ATTRIBUTE_PACKED clut_t; +} XINE_PACKED clut_t; -#if PRAGMA_PACK +#if !SUPPORT_ATTRIBUTE_PACKED #pragma pack() #endif diff --git a/src/xine-engine/audio_decoder.c b/src/xine-engine/audio_decoder.c index 5476262d9..855dee372 100644 --- a/src/xine-engine/audio_decoder.c +++ b/src/xine-engine/audio_decoder.c @@ -89,16 +89,18 @@ static void *audio_decoder_loop (void *stream_gen) { if (stream->audio_decoder_plugin) { lprintf ("close old decoder\n"); - + + stream->keep_ao_driver_open = !!(buf->decoder_flags & BUF_FLAG_GAPLESS_SW); _x_free_audio_decoder (stream, stream->audio_decoder_plugin); stream->audio_decoder_plugin = NULL; stream->audio_track_map_entries = 0; stream->audio_type = 0; + stream->keep_ao_driver_open = 0; } running_ticket->release(running_ticket, 0); - if( !stream->gapless_switch ) + if( !(buf->decoder_flags & BUF_FLAG_GAPLESS_SW) ) stream->metronom->handle_audio_discontinuity (stream->metronom, DISC_STREAMSTART, 0); buftype_unknown = 0; diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c index 7fe92d9fe..a6f83dc9d 100644 --- a/src/xine-engine/audio_out.c +++ b/src/xine-engine/audio_out.c @@ -215,6 +215,7 @@ typedef struct { int num_driver_actions; /* number of threads, that wish to call * functions needing driver_lock */ pthread_mutex_t driver_action_lock; /* protects num_driver_actions */ + pthread_cond_t driver_action_cond; /* informs about num_driver_actions-- */ metronom_clock_t *clock; xine_t *xine; @@ -243,6 +244,7 @@ typedef struct { audio_fifo_t *free_fifo; audio_fifo_t *out_fifo; int64_t last_audio_vpts; + pthread_mutex_t current_speed_lock; uint32_t current_speed; /* the current playback speed */ /* FIXME: replace all this->clock->speed with this->current_speed. we should make * sure nobody will change speed without going through xine.c:set_speed_internal */ @@ -287,13 +289,14 @@ struct audio_fifo_s { int num_buffers; }; +static int ao_get_property (xine_audio_port_t *this_gen, int property); static int ao_set_property (xine_audio_port_t *this_gen, int property, int value); -static audio_fifo_t *fifo_new (xine_t *xine) { +static audio_fifo_t *XINE_MALLOC fifo_new (xine_t *xine) { audio_fifo_t *fifo; - fifo = (audio_fifo_t *) xine_xmalloc (sizeof (audio_fifo_t)); + fifo = (audio_fifo_t *) calloc(1, sizeof(audio_fifo_t)); if (!fifo) return NULL; @@ -1039,6 +1042,7 @@ static void *ao_loop (void *this_gen) { * we must process/free buffers otherwise the entire engine will stop. */ + pthread_mutex_lock(&this->current_speed_lock); if ( this->audio_loop_running && (this->clock->speed == XINE_SPEED_PAUSE || (this->clock->speed != XINE_FINE_SPEED_NORMAL && @@ -1054,6 +1058,7 @@ static void *ao_loop (void *this_gen) { _x_refcounter_dec(in_buf->stream->refcounter); fifo_append (this->free_fifo, in_buf); in_buf = NULL; + pthread_mutex_unlock(&this->current_speed_lock); continue; } @@ -1064,6 +1069,7 @@ static void *ao_loop (void *this_gen) { } lprintf ("loop:pause: I feel sleepy (%d buffers).\n", this->out_fifo->num_buffers); + pthread_mutex_unlock(&this->current_speed_lock); xine_usec_sleep (10000); lprintf ("loop:pause: I wake up.\n"); continue; @@ -1273,12 +1279,20 @@ static void *ao_loop (void *this_gen) { fifo_append (this->free_fifo, in_buf); in_buf = NULL; } + pthread_mutex_unlock(&this->current_speed_lock); /* Give other threads a chance to use functions which require this->driver_lock to * be available. This is needed when using NPTL on Linux (and probably PThreads * on Solaris as well). */ - if (this->num_driver_actions > 0) - sched_yield(); + if (this->num_driver_actions > 0) { + /* calling sched_yield() is not sufficient on multicore systems */ + /* sched_yield(); */ + /* instead wait for the other thread to acquire this->driver_lock */ + pthread_mutex_lock(&this->driver_action_lock); + if (this->num_driver_actions > 0) + pthread_cond_wait(&this->driver_action_cond, &this->driver_action_lock); + pthread_mutex_unlock(&this->driver_action_lock); + } } if (in_buf) { @@ -1469,6 +1483,8 @@ static inline void dec_num_driver_actions(aos_t *this) { pthread_mutex_lock(&this->driver_action_lock); this->num_driver_actions--; + /* indicate the change to ao_loop() */ + pthread_cond_broadcast(&this->driver_action_cond); pthread_mutex_unlock(&this->driver_action_lock); } @@ -1608,17 +1624,21 @@ static void ao_close(xine_audio_port_t *this_gen, xine_stream_t *stream) { pthread_mutex_unlock(&this->streams_lock); /* close driver if no streams left */ - if (!ite && !this->grab_only && !stream->gapless_switch) { + if (!ite && !this->grab_only && !stream->keep_ao_driver_open) { xprintf (this->xine, XINE_VERBOSITY_DEBUG, "audio_out: no streams left, closing driver\n"); if (this->audio_loop_running) { + /* make sure there are no more buffers on queue */ if (this->clock->speed == XINE_SPEED_PAUSE || (this->clock->speed != XINE_FINE_SPEED_NORMAL && !this->slow_fast_audio)) { - /* discard buffers, otherwise we'll wait forever */ + int discard = ao_get_property(this_gen, AO_PROP_DISCARD_BUFFERS); + /* discard buffers while waiting, otherwise we'll wait forever */ ao_set_property(this_gen, AO_PROP_DISCARD_BUFFERS, 1); + fifo_wait_empty(this->out_fifo); + ao_set_property(this_gen, AO_PROP_DISCARD_BUFFERS, discard); } - /* make sure there are no more buffers on queue */ - fifo_wait_empty(this->out_fifo); + else + fifo_wait_empty(this->out_fifo); } pthread_mutex_lock( &this->driver_lock ); @@ -1667,6 +1687,7 @@ static void ao_exit(xine_audio_port_t *this_gen) { } pthread_mutex_destroy(&this->driver_lock); + pthread_cond_destroy(&this->driver_action_cond); pthread_mutex_destroy(&this->driver_action_lock); pthread_mutex_destroy(&this->streams_lock); xine_list_delete(this->streams); @@ -1679,6 +1700,7 @@ static void ao_exit(xine_audio_port_t *this_gen) { free (this->frame_buf[1]); free (this->zero_space); + pthread_mutex_destroy(&this->current_speed_lock); pthread_mutex_destroy(&this->flush_audio_driver_lock); pthread_cond_destroy(&this->flush_audio_driver_reached); @@ -1905,8 +1927,15 @@ static int ao_set_property (xine_audio_port_t *this_gen, int property, int value if (value != XINE_FINE_SPEED_NORMAL && value != XINE_SPEED_PAUSE && !this->slow_fast_audio ) this->ao.control(&this->ao, AO_CTRL_FLUSH_BUFFERS, NULL); - this->ao.control(&this->ao, - (value == XINE_SPEED_PAUSE) ? AO_CTRL_PLAY_PAUSE : AO_CTRL_PLAY_RESUME, NULL); + if( value == XINE_SPEED_PAUSE ) { + /* current_speed_lock is here to make sure the ao_loop will pause in a safe place. + * that is, we cannot pause writing to device, filling gaps etc. */ + pthread_mutex_lock(&this->current_speed_lock); + this->ao.control(&this->ao, AO_CTRL_PLAY_PAUSE, NULL); + pthread_mutex_unlock(&this->current_speed_lock); + } else { + this->ao.control(&this->ao, AO_CTRL_PLAY_RESUME, NULL); + } this->current_speed = value; if( this->slow_fast_audio ) ao_update_resample_factor(this); @@ -2046,11 +2075,12 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, static const char* resample_modes[] = {"auto", "off", "on", NULL}; static const char* av_sync_methods[] = {"metronom feedback", "resample", NULL}; - this = xine_xmalloc (sizeof (aos_t)) ; + this = calloc(1, sizeof(aos_t)) ; this->driver = driver; this->xine = xine; this->clock = xine->clock; + this->current_speed = xine->clock->speed; this->streams = xine_list_new(); /* warning: driver_lock is a recursive mutex. it must NOT be @@ -2062,6 +2092,7 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, pthread_mutex_init( &this->streams_lock, NULL ); pthread_mutex_init( &this->driver_lock, &attr ); pthread_mutex_init( &this->driver_action_lock, NULL ); + pthread_cond_init( &this->driver_action_cond, NULL ); this->ao.open = ao_open; this->ao.get_buffer = ao_get_buffer; @@ -2080,8 +2111,9 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, this->grab_only = grab_only; this->flush_audio_driver = 0; this->discard_buffers = 0; - this->zero_space = xine_xmalloc (ZERO_BUF_SIZE * 4 * 6); /* MAX as 32bit, 6 channels. */ + this->zero_space = calloc (1, ZERO_BUF_SIZE * 4 * 6); /* MAX as 32bit, 6 channels. */ + pthread_mutex_init( &this->current_speed_lock, NULL ); pthread_mutex_init( &this->flush_audio_driver_lock, NULL ); pthread_cond_init( &this->flush_audio_driver_reached, NULL ); @@ -2191,8 +2223,8 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, audio_buffer_t *buf; - buf = (audio_buffer_t *) xine_xmalloc (sizeof (audio_buffer_t)); - buf->mem = xine_xmalloc (AUDIO_BUF_SIZE); + buf = (audio_buffer_t *) calloc(1, sizeof(audio_buffer_t)); + buf->mem = calloc (1, AUDIO_BUF_SIZE); buf->mem_size = AUDIO_BUF_SIZE; buf->extra_info = malloc(sizeof(extra_info_t)); @@ -2206,8 +2238,8 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, audio_buffer_t *buf; - buf = (audio_buffer_t *) xine_xmalloc (sizeof (audio_buffer_t)); - buf->mem = xine_xmalloc (4*AUDIO_BUF_SIZE); + buf = (audio_buffer_t *) calloc(1, sizeof(audio_buffer_t)); + buf->mem = calloc(4, AUDIO_BUF_SIZE); buf->mem_size = 4*AUDIO_BUF_SIZE; buf->extra_info = malloc(sizeof(extra_info_t)); diff --git a/src/xine-engine/audio_out.h b/src/xine-engine/audio_out.h index c4581ec24..5f4420363 100644 --- a/src/xine-engine/audio_out.h +++ b/src/xine-engine/audio_out.h @@ -259,7 +259,7 @@ struct audio_driver_class_s { * this initiates the audio_out sync routines * found in ./src/xine-engine/audio_out.c */ -xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, int grab_only) XINE_PROTECTED; +xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, int grab_only) XINE_MALLOC XINE_PROTECTED; /* * audio output modes + capabilities diff --git a/src/xine-engine/broadcaster.c b/src/xine-engine/broadcaster.c index 1d2f01366..81711de49 100644 --- a/src/xine-engine/broadcaster.c +++ b/src/xine-engine/broadcaster.c @@ -32,6 +32,10 @@ * 'xine -V none -A none' */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -323,7 +327,7 @@ broadcaster_t *_x_init_broadcaster(xine_stream_t *stream, int port) signal( SIGPIPE, SIG_IGN ); - this = xine_xmalloc(sizeof(broadcaster_t)); + this = calloc(1, sizeof(broadcaster_t)); this->port = port; this->stream = stream; this->msock = msock; diff --git a/src/xine-engine/broadcaster.h b/src/xine-engine/broadcaster.h index 093fb4af0..b59d33349 100644 --- a/src/xine-engine/broadcaster.h +++ b/src/xine-engine/broadcaster.h @@ -27,13 +27,9 @@ extern "C" { #endif -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - typedef struct broadcaster_s broadcaster_t; -broadcaster_t *_x_init_broadcaster(xine_stream_t *stream, int port) XINE_PROTECTED; +broadcaster_t *_x_init_broadcaster(xine_stream_t *stream, int port) XINE_MALLOC XINE_PROTECTED; void _x_close_broadcaster(broadcaster_t *this) XINE_PROTECTED; int _x_get_broadcaster_port(broadcaster_t *this) XINE_PROTECTED; diff --git a/src/xine-engine/buffer.c b/src/xine-engine/buffer.c index 93ad75ba0..417fee745 100644 --- a/src/xine-engine/buffer.c +++ b/src/xine-engine/buffer.c @@ -500,7 +500,7 @@ fifo_buffer_t *_x_fifo_buffer_new (int num_buffers, uint32_t buf_size) { int alignment = 2048; unsigned char *multi_buffer = NULL; - this = xine_xmalloc (sizeof (fifo_buffer_t)); + this = calloc(1, sizeof(fifo_buffer_t)); this->first = NULL; this->last = NULL; @@ -551,7 +551,7 @@ fifo_buffer_t *_x_fifo_buffer_new (int num_buffers, uint32_t buf_size) { for (i = 0; i<num_buffers; i++) { buf_element_t *buf; - buf = xine_xmalloc (sizeof (buf_element_t)); + buf = calloc(1, sizeof(buf_element_t)); buf->mem = multi_buffer; multi_buffer += buf_size; diff --git a/src/xine-engine/buffer.h b/src/xine-engine/buffer.h index 3a3f06e9b..6928ebd96 100644 --- a/src/xine-engine/buffer.h +++ b/src/xine-engine/buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -35,10 +35,7 @@ extern "C" { #endif -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - +#include <string.h> #include <stdio.h> #include <pthread.h> #include <sys/types.h> @@ -191,6 +188,7 @@ extern "C" { #define BUF_VIDEO_THEORA_RAW 0x02640000 #define BUF_VIDEO_VC1 0x02650000 #define BUF_VIDEO_VMNC 0x02660000 +#define BUF_VIDEO_SNOW 0x02670000 /* audio buffer types: (please keep in sync with buffer_types.c) */ @@ -258,6 +256,9 @@ extern "C" { #define BUF_AUDIO_SMACKER 0x033B0000 #define BUF_AUDIO_FLVADPCM 0x033C0000 #define BUF_AUDIO_WAVPACK 0x033D0000 +#define BUF_AUDIO_MP3ADU 0x033E0000 +#define BUF_AUDIO_AMR_NB 0x033F0000 +#define BUF_AUDIO_AMR_WB 0x03400000 /* spu buffer types: */ @@ -373,13 +374,16 @@ struct buf_element_s { * decoder_info[2] carries denominator for display aspect ratio */ #define BUF_FLAG_ASPECT 0x0800 +/* represent the state of gapless_switch at the time buf was enqueued */ +#define BUF_FLAG_GAPLESS_SW 0x1000 + /* Amount of audio padding added by encoder (mp3, aac). These empty * audio frames are causing a gap when switching between mp3 files. * decoder_info[1] carries amount of audio frames padded at the * beginning of the buffer * decoder_info[2] carries amount of audio frames padded at the end of * the buffer */ -#define BUF_FLAG_AUDIO_PADDING 0x1000 +#define BUF_FLAG_AUDIO_PADDING 0x2000 /* Special buffer types: * Sometimes there is a need to relay special information from a demuxer @@ -613,8 +617,8 @@ struct fifo_buffer_s * allocate num_buffers of buf_size bytes each */ -fifo_buffer_t *_x_fifo_buffer_new (int num_buffers, uint32_t buf_size) XINE_PROTECTED; -fifo_buffer_t *_x_dummy_fifo_buffer_new (int num_buffers, uint32_t buf_size) XINE_PROTECTED; +fifo_buffer_t *_x_fifo_buffer_new (int num_buffers, uint32_t buf_size) XINE_MALLOC XINE_PROTECTED; +fifo_buffer_t *_x_dummy_fifo_buffer_new (int num_buffers, uint32_t buf_size) XINE_MALLOC XINE_PROTECTED; /* return BUF_VIDEO_xxx given the fourcc @@ -624,16 +628,16 @@ fifo_buffer_t *_x_dummy_fifo_buffer_new (int num_buffers, uint32_t buf_size) XIN uint32_t _x_fourcc_to_buf_video( uint32_t fourcc_int ) XINE_PROTECTED; /* return codec name given BUF_VIDEO_xxx */ -char * _x_buf_video_name( uint32_t buf_type ) XINE_PROTECTED; +const char * _x_buf_video_name( uint32_t buf_type ) XINE_PROTECTED; /* return BUF_AUDIO_xxx given the formattag */ uint32_t _x_formattag_to_buf_audio( uint32_t formattag ) XINE_PROTECTED; /* return codec name given BUF_AUDIO_xxx */ -char * _x_buf_audio_name( uint32_t buf_type ) XINE_PROTECTED; +const char * _x_buf_audio_name( uint32_t buf_type ) XINE_PROTECTED; -#ifndef ATTRIBUTE_PACKED +#ifndef SUPPORT_ATTRIBUTE_PACKED /* no attribute packed? let's try with pragma pack as a last resort */ #pragma pack(2) #endif @@ -642,7 +646,7 @@ char * _x_buf_audio_name( uint32_t buf_type ) XINE_PROTECTED; * - will always use machine endian format, so demuxers reading * stuff from win32 formats must use the function below. */ -typedef struct __attribute__((__packed__)) { +typedef struct XINE_PACKED { int32_t biSize; int32_t biWidth; int32_t biHeight; @@ -659,7 +663,7 @@ typedef struct __attribute__((__packed__)) { /* this is xine version of WAVEFORMATEX * (the same comments from xine_bmiheader) */ -typedef struct __attribute__((__packed__)) { +typedef struct XINE_PACKED { int16_t wFormatTag; int16_t nChannels; int32_t nSamplesPerSec; @@ -668,7 +672,7 @@ typedef struct __attribute__((__packed__)) { int16_t wBitsPerSample; int16_t cbSize; } xine_waveformatex; -#ifndef ATTRIBUTE_PACKED +#ifndef SUPPORT_ATTRIBUTE_PACKED #pragma pack() #endif @@ -678,6 +682,10 @@ void _x_bmiheader_le2me( xine_bmiheader *bih ) XINE_PROTECTED; /* convert xine_waveformatex struct from little endian */ void _x_waveformatex_le2me( xine_waveformatex *wavex ) XINE_PROTECTED; +static __inline int _x_is_fourcc(void *ptr, void *tag) { + return memcmp(ptr, tag, 4) == 0; +} + #ifdef __cplusplus } #endif diff --git a/src/xine-engine/buffer_types.c b/src/xine-engine/buffer_types.c index 7242738e1..b7571d1d7 100644 --- a/src/xine-engine/buffer_types.c +++ b/src/xine-engine/buffer_types.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2005 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -659,6 +659,8 @@ static const video_db_t video_db[] = { ME_FOURCC('a','v','c','1'), ME_FOURCC('h','2','6','4'), ME_FOURCC('H','2','6','4'), + ME_FOURCC('x','2','6','4'), + ME_FOURCC('X','2','6','4'), 0 }, BUF_VIDEO_H264, @@ -779,6 +781,14 @@ static const video_db_t video_db[] = { BUF_VIDEO_VMNC, "VMware Screen Codec" }, +{ + { + ME_FOURCC('S','N','O','W'), + 0 + }, + BUF_VIDEO_SNOW, + "Snow" +}, { { 0 }, 0, "last entry" } }; @@ -806,6 +816,14 @@ static const audio_db_t audio_db[] = { }, { { + ME_FOURCC('a', 'd', 'u', 0x55), + 0 + }, + BUF_AUDIO_MP3ADU, + "MPEG layer-3 adu" +}, +{ + { ME_FOURCC('t','w','o','s'), ME_FOURCC('i','n','2','4'), 0 @@ -1132,11 +1150,32 @@ static const audio_db_t audio_db[] = { }, { { - 0 + ME_FOURCC('W', 'V', 'P', 'K'), }, BUF_AUDIO_WAVPACK, "Wavpack" }, +{ + { + ME_FOURCC('s', 'a', 'm', 'r'), + }, + BUF_AUDIO_AMR_NB, + "AMR narrow band" +}, +{ + { + ME_FOURCC('s', 'a', 'w', 'b'), + }, + BUF_AUDIO_AMR_WB, + "AMR wide band" +}, +{ + { + ME_FOURCC('T', 'T', 'A', '1'), + }, + BUF_AUDIO_TTA, + "True Audio Lossless" +}, { { 0 }, 0, "last entry" } }; @@ -1161,7 +1200,7 @@ static uint32_t cached_buf_type=0; return 0; } -char * _x_buf_video_name( uint32_t buf_type ) { +const char * _x_buf_video_name( uint32_t buf_type ) { int i; buf_type &= 0xffff0000; @@ -1195,7 +1234,7 @@ static uint32_t cached_buf_type=0; return 0; } -char * _x_buf_audio_name( uint32_t buf_type ) { +const char * _x_buf_audio_name( uint32_t buf_type ) { int i; buf_type &= 0xffff0000; diff --git a/src/xine-engine/configfile.c b/src/xine-engine/configfile.c index 2dc89f0af..81acab348 100644 --- a/src/xine-engine/configfile.c +++ b/src/xine-engine/configfile.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -319,11 +319,11 @@ static void config_insert(config_values_t *this, cfg_entry_t *new_entry) { this->first = new_entry; } -static cfg_entry_t *config_add (config_values_t *this, const char *key, int exp_level) { +static cfg_entry_t *XINE_MALLOC config_add (config_values_t *this, const char *key, int exp_level) { cfg_entry_t *entry; - entry = (cfg_entry_t *) xine_xmalloc (sizeof (cfg_entry_t)); + entry = calloc (1, sizeof (cfg_entry_t)); entry->config = this; entry->key = strdup(key); entry->type = XINE_CONFIG_TYPE_UNKNOWN; @@ -356,22 +356,22 @@ static const char *config_xlate_internal (const char *key, const xine_config_ent return NULL; } -static const char *config_translate_key (const char *key) { +static const char *config_translate_key (const char *key, char **tmp) { /* Returns translated key or, if no translation found, NULL. * Translated key may be in a static buffer allocated within this function. * NOT re-entrant; assumes that config_lock is held. */ unsigned trans; - static char *newkey = NULL; + const char *newkey = NULL; /* first, special-case the decoder entries (so that new ones can be added * without requiring modification of the translation table) */ + *tmp = NULL; if (!strncmp (key, "decoder.", 8) && !strcmp (key + (trans = strlen (key)) - 9, "_priority")) { - newkey = realloc (newkey, trans + 27 - 17); /* diff. in string lengths */ - sprintf (newkey, "engine.decoder_priorities.%.*s", trans - 17, key + 8); - return newkey; + asprintf (tmp, "engine.decoder_priorities.%.*s", trans - 17, key + 8); + return *tmp; } /* search the translation table... */ @@ -386,6 +386,7 @@ static void config_lookup_entry_int (config_values_t *this, const char *key, cfg_entry_t **entry, cfg_entry_t **prev) { int trans; + char *tmp = NULL; /* try twice at most (second time with translation from old key name) */ for (trans = 2; trans; --trans) { @@ -397,14 +398,18 @@ static void config_lookup_entry_int (config_values_t *this, const char *key, *entry = (*entry)->next; } - if (*entry) + if (*entry) { + free(tmp); return; + } /* we did not find a match, maybe this is an old config entry name * trying to translate */ - key = config_translate_key(key); - if (!key) + key = config_translate_key(key, &tmp); + if (!key) { + free(tmp); return; + } } } @@ -748,7 +753,7 @@ static int config_register_enum (config_values_t *this, entry->type = XINE_CONFIG_TYPE_ENUM; if (entry->unknown_value) - entry->num_value = config_parse_enum (entry->unknown_value, values); + entry->num_value = config_parse_enum (entry->unknown_value, (const char **)values); else entry->num_value = def_value; @@ -756,14 +761,14 @@ static int config_register_enum (config_values_t *this, entry->num_default = def_value; /* allocate and copy the enum values */ - value_src = values; + value_src = (const char **)values; value_count = 0; while (*value_src) { value_src++; value_count++; } entry->enum_values = malloc (sizeof(char*) * (value_count + 1)); - value_src = values; + value_src = (const char **)values; value_dest = entry->enum_values; while (*value_src) { *value_dest = strdup(*value_src); @@ -862,7 +867,7 @@ static void config_update_string (config_values_t *this, /* if an enum is updated with a string, we convert the string to * its index and use update number */ if (entry->type == XINE_CONFIG_TYPE_ENUM) { - config_update_num(this, key, config_parse_enum(value, entry->enum_values)); + config_update_num(this, key, config_parse_enum(value, (const char **)entry->enum_values)); return; } @@ -944,15 +949,17 @@ void xine_config_load (xine_t *xine, const char *filename) { if (!(entry = config_lookup_entry(this, line))) { const char *key = line; + char *tmp = NULL; pthread_mutex_lock(&this->config_lock); if (this->current_version < CONFIG_FILE_VERSION) { /* old config file -> let's see if we have to rename this one */ - key = config_translate_key(key); + key = config_translate_key(key, &tmp); if (!key) key = line; /* no translation? fall back on untranslated key */ } entry = config_add (this, key, 50); entry->unknown_value = strdup(value); + free(tmp); pthread_mutex_unlock(&this->config_lock); } else { switch (entry->type) { @@ -1005,7 +1012,7 @@ void xine_config_save (xine_t *xine, const char *filename) { char *buf = NULL; size_t rlen; - buf = (char *) xine_xmalloc(config_stat.st_size + 1); + buf = (char *) malloc(config_stat.st_size + 1); if((rlen = fread(buf, 1, config_stat.st_size, f_config)) && ((off_t)rlen == config_stat.st_size)) { (void) fwrite(buf, 1, rlen, f_backup); } @@ -1204,7 +1211,7 @@ config_values_t *_x_config_init (void) { config_values_t *this; pthread_mutexattr_t attr; - if (!(this = xine_xmalloc(sizeof(config_values_t)))) { + if (!(this = calloc(1, sizeof(config_values_t)))) { printf ("configfile: could not allocate config object\n"); _x_abort(); diff --git a/src/xine-engine/configfile.h b/src/xine-engine/configfile.h index e21b08db0..e1dca7b18 100644 --- a/src/xine-engine/configfile.h +++ b/src/xine-engine/configfile.h @@ -200,7 +200,7 @@ struct config_values_s { /* * allocate and init a new xine config object */ -config_values_t *_x_config_init (void) XINE_PROTECTED; +config_values_t *_x_config_init (void) XINE_MALLOC XINE_PROTECTED; /* * interpret stream_setup part of mrls for config value changes diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c index f33397256..698b44988 100644 --- a/src/xine-engine/demux.c +++ b/src/xine-engine/demux.c @@ -21,6 +21,9 @@ * hide some xine engine details from demuxers and reduce code duplication */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include <stdio.h> #include <string.h> @@ -47,11 +50,6 @@ #include <winsock.h> #endif -#ifdef MIN -#undef MIN -#endif -#define MIN(a,b) ( (a) < (b) ) ? (a) : (b) - /* * Flush audio and video buffers. It is called from demuxers on * seek/stop, and may be useful when user input changes a stream and @@ -122,6 +120,16 @@ void _x_demux_flush_engine (xine_stream_t *stream) { } +static struct timespec _x_compute_interval(unsigned int millisecs) { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + uint64_t ttimer = (uint64_t)ts.tv_sec*1000 + ts.tv_nsec/1000000 + millisecs; + ts.tv_sec = ttimer/1000; + ts.tv_nsec = (ttimer%1000)*1000000; + return ts; +} + + void _x_demux_control_newpts( xine_stream_t *stream, int64_t pts, uint32_t flags ) { buf_element_t *buf; @@ -143,6 +151,29 @@ void _x_demux_control_newpts( xine_stream_t *stream, int64_t pts, uint32_t flags pthread_mutex_unlock(&stream->demux_mutex); } +/* avoid ao_loop being stuck in a pthread_cond_wait, waiting for data; + * return 1 if the stream is stopped + * (better fix wanted!) + */ +static int demux_unstick_ao_loop (xine_stream_t *stream) +{ +/* if (!stream->audio_thread_created) + return 0; +*/ + int status = xine_get_status (stream); + if (status != XINE_STATUS_QUIT && status != XINE_STATUS_STOP && stream->demux_plugin->get_status(stream->demux_plugin) != DEMUX_FINISHED) + return 0; +#if 0 + /* right, stream is stopped... */ + audio_buffer_t *buf = stream->audio_out->get_buffer (stream->audio_out); + buf->num_frames = 0; + buf->stream = NULL; + stream->audio_out->put_buffer (stream->audio_out, buf, stream); +#endif + lprintf("stuck\n"); + return 1; +} + /* sync with decoder fifos, making sure everything gets processed */ void _x_demux_control_headers_done (xine_stream_t *stream) { @@ -180,24 +211,31 @@ void _x_demux_control_headers_done (xine_stream_t *stream) { stream->audio_fifo->put (stream->audio_fifo, buf_audio); pthread_mutex_unlock(&stream->demux_mutex); + unsigned int max_iterations = 0; while ((stream->header_count_audio < header_count_audio) || (stream->header_count_video < header_count_video)) { - struct timeval tv; - struct timespec ts; lprintf ("waiting for headers. v:%d %d a:%d %d\n", stream->header_count_video, header_count_video, stream->header_count_audio, header_count_audio); + + struct timespec ts = _x_compute_interval(1000); + int ret_wait; - gettimeofday(&tv, NULL); - ts.tv_sec = tv.tv_sec + 1; - ts.tv_nsec = tv.tv_usec * 1000; /* use timedwait to workaround buggy pthread broadcast implementations */ - pthread_cond_timedwait (&stream->counter_changed, &stream->counter_lock, &ts); + ret_wait = pthread_cond_timedwait (&stream->counter_changed, &stream->counter_lock, &ts); + + if (ret_wait == ETIMEDOUT && demux_unstick_ao_loop (stream) && ++max_iterations > 4) { + xine_log(stream->xine, + XINE_LOG_MSG,_("Stuck in _x_demux_control_headers_done(). Taking the emergency exit\n")); + stream->emergency_brake = 1; + break; + } } stream->demux_action_pending = 0; + pthread_cond_signal(&stream->demux_resume); lprintf ("headers processed.\n"); @@ -207,15 +245,18 @@ void _x_demux_control_headers_done (xine_stream_t *stream) { void _x_demux_control_start( xine_stream_t *stream ) { buf_element_t *buf; + uint32_t flags = (stream->gapless_switch) ? BUF_FLAG_GAPLESS_SW : 0; pthread_mutex_lock(&stream->demux_mutex); buf = stream->video_fifo->buffer_pool_alloc (stream->video_fifo); buf->type = BUF_CONTROL_START; + buf->decoder_flags = flags; stream->video_fifo->put (stream->video_fifo, buf); buf = stream->audio_fifo->buffer_pool_alloc (stream->audio_fifo); buf->type = BUF_CONTROL_START; + buf->decoder_flags = flags; stream->audio_fifo->put (stream->audio_fifo, buf); pthread_mutex_unlock(&stream->demux_mutex); @@ -284,12 +325,14 @@ static void *demux_loop (void *stream_gen) { /* someone may want to interrupt us */ if( stream->demux_action_pending ) { - pthread_mutex_unlock( &stream->demux_lock ); - - lprintf ("sched_yield\n"); + struct timeval tv; + struct timespec ts; - sched_yield(); - pthread_mutex_lock( &stream->demux_lock ); + gettimeofday(&tv, NULL); + ts.tv_sec = tv.tv_sec; + ts.tv_nsec = (tv.tv_usec + 100000) * 1000; + + pthread_cond_timedwait (&stream->demux_resume, &stream->demux_lock, &ts); } } @@ -345,10 +388,21 @@ static void *demux_loop (void *stream_gen) { pthread_mutex_unlock( &stream->demux_lock ); pthread_mutex_lock (&stream->counter_lock); + struct timespec ts; + unsigned int max_iterations = 0; + int ret_wait; while ((stream->finished_count_audio < finished_count_audio) || (stream->finished_count_video < finished_count_video)) { lprintf ("waiting for finisheds.\n"); - pthread_cond_wait (&stream->counter_changed, &stream->counter_lock); + ts = _x_compute_interval(1000); + ret_wait = pthread_cond_timedwait (&stream->counter_changed, &stream->counter_lock, &ts); + + if (ret_wait == ETIMEDOUT && demux_unstick_ao_loop (stream) && ++max_iterations > 4) { + xine_log(stream->xine, + XINE_LOG_MSG,_("Stuck in demux_loop(). Taking the emergency exit\n")); + stream->emergency_brake = 1; + break; + } } pthread_mutex_unlock (&stream->counter_lock); @@ -365,6 +419,7 @@ int _x_demux_start_thread (xine_stream_t *stream) { stream->demux_action_pending = 1; pthread_mutex_lock( &stream->demux_lock ); stream->demux_action_pending = 0; + pthread_cond_signal(&stream->demux_resume); if( !stream->demux_thread_running ) { @@ -396,6 +451,7 @@ int _x_demux_stop_thread (xine_stream_t *stream) { pthread_mutex_lock( &stream->demux_lock ); stream->demux_thread_running = 0; stream->demux_action_pending = 0; + pthread_cond_signal(&stream->demux_resume); /* At that point, the demuxer has sent the last audio/video buffer, * so it's a safe place to flush the engine. @@ -435,7 +491,7 @@ int _x_demux_read_header( input_plugin_t *input, unsigned char *buffer, off_t si read_size = input->read(input, buffer, size); input->seek(input, 0, SEEK_SET); } else if (input->get_capabilities(input) & INPUT_CAP_PREVIEW) { - buf = xine_xmalloc(MAX_PREVIEW_SIZE); + buf = malloc(MAX_PREVIEW_SIZE); read_size = input->get_optional_data(input, buf, INPUT_OPTIONAL_DATA_PREVIEW); read_size = MIN (read_size, size); memcpy(buffer, buf, read_size); @@ -652,7 +708,7 @@ void _x_demux_send_mrl_reference (xine_stream_t *stream, int alternative, xine_mrl_reference_data_ext_t *e; xine_mrl_reference_data_t *b; } data; - int mrl_len = strlen (mrl); + const size_t mrl_len = strlen (mrl); if (!title) title = ""; diff --git a/src/xine-engine/info_helper.c b/src/xine-engine/info_helper.c index 1ac4ed982..6ce9bcd38 100644 --- a/src/xine-engine/info_helper.c +++ b/src/xine-engine/info_helper.c @@ -131,7 +131,7 @@ uint32_t _x_stream_info_get_public(xine_stream_t *stream, int info) { * at the end of the string */ static void meta_info_chomp(char *str) { - int i, len; + ssize_t i, len; len = strlen(str); if (!len) @@ -251,7 +251,15 @@ static void meta_info_set_unlocked_encoding(xine_stream_t *stream, int info, con size_t inbytesleft, outbytesleft; inbuf = (ICONV_CONST char *)value; - inbytesleft = strlen(value); + if (!strncmp (enc, "UTF-16", 6) || !strncmp (enc, "UCS-2", 5)) + { + /* strlen() won't work with UTF-16* or UCS-2* */ + inbytesleft = 0; + while (value[inbytesleft] || value[inbytesleft + 1]) + inbytesleft += 2; + } /* ... do we need to handle UCS-4? Probably not. */ + else + inbytesleft = strlen(value); outbytesleft = 4 * inbytesleft; /* estimative (max) */ outbuf = utf8_value = malloc(outbytesleft+1); @@ -340,11 +348,10 @@ void _x_meta_info_set_utf8(xine_stream_t *stream, int info, const char *str) { void _x_meta_info_n_set(xine_stream_t *stream, int info, const char *buf, int len) { pthread_mutex_lock(&stream->meta_mutex); if(meta_valid(info) && len) { - char *str = xine_xmalloc(len + 1); + char *str = strndup(buf, len); - snprintf(str, len + 1 , "%s", buf); - meta_info_set_unlocked(stream, info, (const char *) &str[0]); - free(str); + meta_info_set_unlocked(stream, info, str); + free(str); } pthread_mutex_unlock(&stream->meta_mutex); } @@ -359,7 +366,7 @@ void _x_meta_info_set_multi(xine_stream_t *stream, int info, ...) { va_list ap; char *args[1025]; char *buf; - int n, len; + size_t n, len; len = n = 0; @@ -376,7 +383,7 @@ void _x_meta_info_set_multi(xine_stream_t *stream, int info, ...) { if(len) { char *p, *meta; - p = meta = (char *) xine_xmalloc(len + 1); + p = meta = (char *) malloc(len + 1); n = 0; while(args[n]) { diff --git a/src/xine-engine/input_cache.c b/src/xine-engine/input_cache.c index 30b1ba4aa..4eb524af6 100644 --- a/src/xine-engine/input_cache.c +++ b/src/xine-engine/input_cache.c @@ -356,7 +356,7 @@ input_plugin_t *_x_cache_plugin_get_instance (xine_stream_t *stream, int readahe lprintf("mrl: %s\n", main_plugin->get_mrl(main_plugin)); - this = (cache_input_plugin_t *)xine_xmalloc(sizeof(cache_input_plugin_t)); + this = calloc(1, sizeof(cache_input_plugin_t)); if (!this) return NULL; @@ -386,7 +386,7 @@ input_plugin_t *_x_cache_plugin_get_instance (xine_stream_t *stream, int readahe this->buf_size = DEFAULT_BUFFER_SIZE; } - this->buf = (char *)xine_xmalloc(this->buf_size); + this->buf = calloc(1, this->buf_size); if (!this->buf) { free (this); return NULL; diff --git a/src/xine-engine/input_rip.c b/src/xine-engine/input_rip.c index 0c185aa1b..8db7eaaf5 100644 --- a/src/xine-engine/input_rip.c +++ b/src/xine-engine/input_rip.c @@ -517,10 +517,9 @@ static void rip_plugin_dispose(input_plugin_t *this_gen) { * returns non-zero, if there was enough space */ static int dir_file_concat(char *target, size_t maxlen, const char *dir, const char *name) { - size_t len_dir, len_name, pos_name = 0; - - len_name = strlen(name); - len_dir = strlen(dir); + size_t len_name = strlen(name); + size_t len_dir = strlen(dir); + size_t pos_name = 0; /* remove slashes */ if (dir[len_dir - 1] == '/') len_dir--; @@ -585,7 +584,7 @@ input_plugin_t *_x_rip_plugin_get_instance (xine_stream_t *stream, const char *f return NULL; } - this = (rip_input_plugin_t *)xine_xmalloc(sizeof(rip_input_plugin_t)); + this = calloc(1, sizeof(rip_input_plugin_t)); this->main_input_plugin = main_plugin; this->stream = stream; this->curpos = 0; diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c index 71cb19d3b..5128644da 100644 --- a/src/xine-engine/load_plugins.c +++ b/src/xine-engine/load_plugins.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2006 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -313,7 +313,6 @@ static void _insert_node (xine_t *this, const input_info_t *input_old; uint32_t *types; char key[80]; - char desc[100]; int i; _x_assert(list); @@ -325,8 +324,8 @@ static void _insert_node (xine_t *this, return; } - entry = xine_xmalloc(sizeof(plugin_node_t)); - entry->info = xine_xmalloc(sizeof(plugin_info_t)); + entry = calloc(1, sizeof(plugin_node_t)); + entry->info = calloc(1, sizeof(plugin_info_t)); *(entry->info) = *info; entry->info->id = strdup(info->id); entry->info->init = info->init; @@ -339,7 +338,7 @@ static void _insert_node (xine_t *this, case PLUGIN_VIDEO_OUT: vo_old = info->special_info; - vo_new = xine_xmalloc(sizeof(vo_info_t)); + vo_new = calloc(1, sizeof(vo_info_t)); entry->priority = vo_new->priority = vo_old->priority; vo_new->visual_type = vo_old->visual_type; entry->info->special_info = vo_new; @@ -347,7 +346,7 @@ static void _insert_node (xine_t *this, case PLUGIN_AUDIO_OUT: ao_old = info->special_info; - ao_new = xine_xmalloc(sizeof(ao_info_t)); + ao_new = calloc(1, sizeof(ao_info_t)); entry->priority = ao_new->priority = ao_old->priority; entry->info->special_info = ao_new; break; @@ -356,7 +355,7 @@ static void _insert_node (xine_t *this, case PLUGIN_VIDEO_DECODER: case PLUGIN_SPU_DECODER: decoder_old = info->special_info; - decoder_new = xine_xmalloc(sizeof(decoder_info_t)); + decoder_new = calloc(1, sizeof(decoder_info_t)); if (decoder_old == NULL) { if (file) xprintf (this, XINE_VERBOSITY_DEBUG, @@ -368,22 +367,21 @@ static void _insert_node (xine_t *this, info->id); _x_abort(); } - for (i=0; decoder_old->supported_types[i] != 0; ++i); - types = xine_xmalloc((i+1)*sizeof(uint32_t)); - for (i=0; decoder_old->supported_types[i] != 0; ++i){ - types[i] = decoder_old->supported_types[i]; + { + size_t supported_types_size; + for (supported_types_size=0; decoder_old->supported_types[supported_types_size] != 0; ++supported_types_size); + types = calloc((supported_types_size+1), sizeof(uint32_t)); + memcpy(types, decoder_old->supported_types, supported_types_size*sizeof(uint32_t)); + decoder_new->supported_types = types; } - decoder_new->supported_types = types; entry->priority = decoder_new->priority = decoder_old->priority; snprintf(key, sizeof(key), "engine.decoder_priorities.%s", info->id); - snprintf(desc, sizeof(desc), _("priority for %s decoder"), info->id); /* write the description on the heap because the config system * does not strdup() it, so we have to provide a different pointer * for each decoder */ for (i = 0; catalog->prio_desc[i]; i++); - catalog->prio_desc[i] = malloc(strlen(desc) + 1); - strcpy(catalog->prio_desc[i], desc); + asprintf(&catalog->prio_desc[i], _("priority for %s decoder"), info->id); this->config->register_num (this->config, key, 0, @@ -402,14 +400,14 @@ static void _insert_node (xine_t *this, case PLUGIN_POST: post_old = info->special_info; - post_new = xine_xmalloc(sizeof(post_info_t)); + post_new = calloc(1, sizeof(post_info_t)); post_new->type = post_old->type; entry->info->special_info = post_new; break; case PLUGIN_DEMUX: demux_old = info->special_info; - demux_new = xine_xmalloc(sizeof(demuxer_info_t)); + demux_new = calloc(1, sizeof(demuxer_info_t)); if (demux_old) { entry->priority = demux_new->priority = demux_old->priority; @@ -426,7 +424,7 @@ static void _insert_node (xine_t *this, case PLUGIN_INPUT: input_old = info->special_info; - input_new = xine_xmalloc(sizeof(input_info_t)); + input_new = calloc(1, sizeof(input_info_t)); if (input_old) { entry->priority = input_new->priority = input_old->priority; @@ -463,12 +461,12 @@ static int _plugin_node_comparator(void *a, void *b) { } } -static plugin_catalog_t *_new_catalog(void){ +static plugin_catalog_t *XINE_MALLOC _new_catalog(void){ plugin_catalog_t *catalog; int i; - catalog = xine_xmalloc(sizeof(plugin_catalog_t)); + catalog = calloc(1, sizeof(plugin_catalog_t)); for (i = 0; i < PLUGIN_TYPE_MAX; i++) { catalog->plugin_lists[i] = xine_sarray_new(0, _plugin_node_comparator); @@ -487,7 +485,7 @@ static void _register_plugins_internal(xine_t *this, plugin_file_t *file, plugin while ( info && info->type != PLUGIN_NONE ) { - if (file) + if (file && file->filename) xine_log (this, XINE_LOG_PLUGIN, _("load_plugins: plugin %s found\n"), file->filename); else @@ -556,25 +554,20 @@ static void collect_plugins(xine_t *this, char *path){ dir = opendir(path); if (dir) { struct dirent *pEntry; - size_t path_len, str_size; - char *str = NULL; - path_len = strlen(path); - str_size = path_len * 2 + 2; /* +2 for '/' and '\0' */ - str = malloc(str_size); - xine_fast_memcpy(str, path, path_len); - str[path_len] = '/'; - str[path_len + 1] = '\0'; + size_t path_len = strlen(path); + size_t str_size = path_len * 2 + 2; /* +2 for '/' and '\0' */ + char *str = malloc(str_size); + sprintf(str, "%s/", path); while ((pEntry = readdir (dir)) != NULL) { - size_t new_str_size, d_len; void *lib = NULL; plugin_info_t *info = NULL; struct stat statbuffer; - d_len = strlen(pEntry->d_name); - new_str_size = path_len + d_len + 2; + size_t d_len = strlen(pEntry->d_name); + size_t new_str_size = path_len + d_len + 2; if (str_size < new_str_size) { str_size = new_str_size + new_str_size / 2; str = realloc(str, str_size); @@ -599,7 +592,7 @@ static void collect_plugins(xine_t *this, char *path){ #if defined(__hpux) if(!strstr(str, ".sl") #elif defined(__CYGWIN__) || defined(WIN32) - if(!strstr(str, ".dll") + if(!strstr(str, ".dll") || strstr(str, ".dll.a") #else if(!strstr(str, ".so") #endif @@ -941,11 +934,11 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) { if( node ) { xine_sarray_add (plugins, node); } - node = xine_xmalloc(sizeof(plugin_node_t)); - file = xine_xmalloc(sizeof(plugin_file_t)); + node = calloc(1, sizeof(plugin_node_t)); + file = calloc(1, sizeof(plugin_file_t)); node->file = file; file->filename = strdup(line+1); - node->info = xine_xmalloc(2*sizeof(plugin_info_t)); + node->info = calloc(2, sizeof(plugin_info_t)); node->info[1].type = PLUGIN_NONE; decoder_info = NULL; vo_info = NULL; @@ -981,34 +974,34 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) { case PLUGIN_VIDEO_OUT: node->info->special_info = vo_info = - xine_xmalloc(sizeof(vo_info_t)); + calloc(1, sizeof(vo_info_t)); break; case PLUGIN_AUDIO_OUT: node->info->special_info = ao_info = - xine_xmalloc(sizeof(ao_info_t)); + calloc(1, sizeof(ao_info_t)); break; case PLUGIN_DEMUX: node->info->special_info = demuxer_info = - xine_xmalloc(sizeof(demuxer_info_t)); + calloc(1, sizeof(demuxer_info_t)); break; case PLUGIN_INPUT: node->info->special_info = input_info = - xine_xmalloc(sizeof(input_info_t)); + calloc(1, sizeof(input_info_t)); break; case PLUGIN_AUDIO_DECODER: case PLUGIN_VIDEO_DECODER: case PLUGIN_SPU_DECODER: node->info->special_info = decoder_info = - xine_xmalloc(sizeof(decoder_info_t)); + calloc(1, sizeof(decoder_info_t)); break; case PLUGIN_POST: node->info->special_info = post_info = - xine_xmalloc(sizeof(post_info_t)); + calloc(1, sizeof(post_info_t)); break; } @@ -1029,7 +1022,7 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) { for( s = value, i = 0; s && sscanf(s," %lu",&lu) > 0; i++ ) { s = strchr(s+1, ' '); } - decoder_info->supported_types = xine_xmalloc((i+1)*sizeof(uint32_t)); + decoder_info->supported_types = calloc((i+1), sizeof(uint32_t)); for( s = value, i = 0; s && sscanf(s," %lu",&lu) > 0; i++ ) { decoder_info->supported_types[i] = lu; s = strchr(s+1, ' '); @@ -1069,22 +1062,21 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) { static void save_catalog (xine_t *this) { FILE *fp; - char *cachefile, *dirfile; + char *cachefile, *cachefile_new, *dirfile; const char *relname = CACHE_CATALOG_FILE; const char *dirname = CACHE_CATALOG_DIR; + + const char *const homedir = xine_get_homedir(); - cachefile = (char *) xine_xmalloc(strlen(xine_get_homedir()) + - strlen(relname) + 2); - sprintf(cachefile, "%s/%s", xine_get_homedir(), relname); + asprintf(&cachefile, "%s/%s", homedir, relname); + asprintf(&cachefile_new, "%s.new", cachefile); /* make sure homedir (~/.xine) exists */ - dirfile = (char *) xine_xmalloc(strlen(xine_get_homedir()) + - strlen(dirname) + 2); - sprintf(dirfile, "%s/%s", xine_get_homedir(), dirname); + asprintf(&dirfile, "%s/%s", homedir, dirname); mkdir (dirfile, 0755); free (dirfile); - if( (fp = fopen(cachefile,"w")) != NULL ) { + if( (fp = fopen(cachefile_new,"w")) != NULL ) { int i; fprintf(fp, "# this file is automatically created by xine, do not edit.\n\n"); @@ -1093,9 +1085,29 @@ static void save_catalog (xine_t *this) { for (i = 0; i < PLUGIN_TYPE_MAX; i++) { save_plugin_list (fp, this->plugin_catalog->plugin_lists[i]); } - fclose(fp); + if (fclose(fp)) + { + const char *err = strerror (errno); + xine_log (this, XINE_LOG_MSG, + _("failed to save catalogue cache: %s\n"), err); + goto do_unlink; + } + else if (rename (cachefile_new, cachefile)) + { + const char *err = strerror (errno); + xine_log (this, XINE_LOG_MSG, + _("failed to replace catalogue cache: %s\n"), err); + do_unlink: + if (unlink (cachefile_new) && errno != ENOENT) + { + err = strerror (errno); + xine_log (this, XINE_LOG_MSG, + _("failed to remove new catalogue cache: %s\n"), err); + } + } } free(cachefile); + free(cachefile_new); } /* @@ -1107,9 +1119,7 @@ static void load_cached_catalog (xine_t *this) { char *cachefile; const char *relname = CACHE_CATALOG_FILE; - cachefile = (char *) xine_xmalloc(strlen(xine_get_homedir()) + - strlen(relname) + 2); - sprintf(cachefile, "%s/%s", xine_get_homedir(), relname); + asprintf(&cachefile, "%s/%s", xine_get_homedir(), relname); if( (fp = fopen(cachefile,"r")) != NULL ) { load_plugin_list (fp, this->plugin_catalog->cache_list); @@ -1119,14 +1129,24 @@ static void load_cached_catalog (xine_t *this) { } +/* helper function for _x_scan_plugins */ +static void push_if_dir (xine_list_t *plugindirs, void *path) +{ + struct stat st; + if (!stat (path, &st) && S_ISDIR (st.st_mode)) + xine_list_push_back (plugindirs, path); + else + free (path); +} + /* * initialize catalog, load all plugins into new catalog */ void _x_scan_plugins (xine_t *this) { - - char *homedir, *plugindir, *pluginpath; - int i,j; - int lenpluginpath; + + char *homedir, *pluginpath; + xine_list_t *plugindirs = xine_list_new (); + xine_list_iterator_t iter; lprintf("_x_scan_plugins()\n"); @@ -1140,41 +1160,45 @@ void _x_scan_plugins (xine_t *this) { this->plugin_catalog = _new_catalog(); load_cached_catalog (this); - if ((pluginpath = getenv("XINE_PLUGIN_PATH")) != NULL) { - pluginpath = strdup(pluginpath); + if ((pluginpath = getenv("XINE_PLUGIN_PATH")) != NULL && *pluginpath) { + char *p = pluginpath; + while (p && p[0]) + { + size_t len; + char *dir, *q; + + q = p; + p = strchr (p, XINE_PATH_SEPARATOR_CHAR); + if (p) { + p++; + len = p - q; + } else + len = strlen(q); + if (q[0] == '~' && q[1] == '/') + asprintf (&dir, "%s%.*s", homedir, (int)(len - 1), q + 1); + else + dir = strndup (q, len); + push_if_dir (plugindirs, dir); /* store or free it */ + } } else { - const char *str1, *str2; - int len; - - str1 = "~/.xine/plugins"; - str2 = XINE_PLUGINDIR; - len = strlen(str1) + strlen(str2) + 2; - pluginpath = xine_xmalloc(len); - snprintf(pluginpath, len, "%s" XINE_PATH_SEPARATOR_STRING "%s", str1, str2); - } - plugindir = xine_xmalloc(strlen(pluginpath)+strlen(homedir)+2); - j=0; - lenpluginpath = strlen(pluginpath); - for (i=0; i <= lenpluginpath; ++i){ - switch (pluginpath[i]){ - case XINE_PATH_SEPARATOR_CHAR: - case '\0': - plugindir[j] = '\0'; - collect_plugins(this, plugindir); - j = 0; - break; - case '~': - if (j == 0){ - strcpy(plugindir, homedir); - j = strlen(plugindir); - break; - } - default: - plugindir[j++] = pluginpath[i]; + char *dir; + int i; + asprintf (&dir, "%s/.xine/plugins", homedir); + push_if_dir (plugindirs, dir); + for (i = 0; i <= XINE_LT_AGE; ++i) + { + asprintf (&dir, "%s.%d", XINE_PLUGINROOT, XINE_LT_AGE - i); + push_if_dir (plugindirs, dir); } } - free(plugindir); - free(pluginpath); + for (iter = xine_list_front (plugindirs); iter; + iter = xine_list_next (plugindirs, iter)) + { + char *dir = xine_list_get_value (plugindirs, iter); + collect_plugins(this, dir); + free (dir); + } + xine_list_delete (plugindirs); free(homedir); save_catalog (this); @@ -1229,6 +1253,26 @@ void _x_free_input_plugin (xine_stream_t *stream, input_plugin_t *input) { } } +static int probe_mime_type (xine_t *self, plugin_node_t *node, const char *mime_type) +{ + /* catalog->lock is expected to be locked */ + if (node->plugin_class || _load_plugin_class(self, node, NULL)) + { + const unsigned int mime_type_len = strlen (mime_type); + demux_class_t *cls = (demux_class_t *)node->plugin_class; + const char *mime = cls->get_mimetypes (cls); + while (mime) + { + while (*mime == ';' || isspace (*mime)) + ++mime; + if (!strncasecmp (mime, mime_type, mime_type_len) && + (!mime[mime_type_len] || mime[mime_type_len] == ':' || mime[mime_type_len] == ';')) + return 1; + mime = strchr (mime, ';'); + } + } + return 0; +} static demux_plugin_t *probe_demux (xine_stream_t *stream, int method1, int method2, input_plugin_t *input) { @@ -1251,8 +1295,6 @@ static demux_plugin_t *probe_demux (xine_stream_t *stream, int method1, int meth while (methods[i] != -1 && !plugin) { int list_id, list_size; - stream->content_detection_method = methods[i]; - pthread_mutex_lock (&catalog->lock); list_size = xine_sarray_size(catalog->plugin_lists[PLUGIN_DEMUX - 1]); @@ -1264,6 +1306,25 @@ static demux_plugin_t *probe_demux (xine_stream_t *stream, int method1, int meth xprintf(stream->xine, XINE_VERBOSITY_DEBUG, "load_plugins: probing demux '%s'\n", node->info->id); if (node->plugin_class || _load_plugin_class(stream->xine, node, NULL)) { + const char *mime_type; + + /* If detecting by MRL, try the MIME type first (but not text/plain)... */ + stream->content_detection_method = METHOD_EXPLICIT; + if (methods[i] == METHOD_BY_EXTENSION && + stream->input_plugin->get_optional_data && + stream->input_plugin->get_optional_data (stream->input_plugin, NULL, INPUT_OPTIONAL_DATA_DEMUX_MIME_TYPE) != INPUT_OPTIONAL_UNSUPPORTED && + stream->input_plugin->get_optional_data (stream->input_plugin, &mime_type, INPUT_OPTIONAL_DATA_MIME_TYPE) != INPUT_OPTIONAL_UNSUPPORTED && + mime_type && strcasecmp (mime_type, "text/plain") && + probe_mime_type (stream->xine, node, mime_type) && + (plugin = ((demux_class_t *)node->plugin_class)->open_plugin (node->plugin_class, stream, input))) + { + inc_node_ref(node); + plugin->node = node; + break; + } + + /* ... then try the extension */ + stream->content_detection_method = methods[i]; if ((plugin = ((demux_class_t *)node->plugin_class)->open_plugin(node->plugin_class, stream, input))) { inc_node_ref(node); plugin->node = node; @@ -1659,6 +1720,36 @@ const char *const *xine_list_video_output_plugins (xine_t *xine) { return catalog->ids; } +const char *const *xine_list_video_output_plugins_typed(xine_t *xine, uint64_t typemask) +{ + plugin_catalog_t *catalog = xine->plugin_catalog; + plugin_node_t *node; + int list_id, list_size, i; + + pthread_mutex_lock (&catalog->lock); + + list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_VIDEO_OUT - 1]); + + for (list_id = i = 0; list_id < list_size; list_id++) + { + node = xine_sarray_get (catalog->plugin_lists[PLUGIN_VIDEO_OUT - 1], list_id); + if (typemask & (1ULL << ((vo_info_t *)node->info->special_info)->visual_type)) + { + const char *id = node->info->id; + int j = i; + while (--j >= 0) + if (!strcmp (catalog->ids[j], id)) + goto ignore; /* already listed */ + catalog->ids[i++] = id; + } + ignore: ; + } + catalog->ids[i] = NULL; + + pthread_mutex_unlock (&catalog->lock); + return catalog->ids; +} + static ao_driver_t *_load_audio_driver (xine_t *this, plugin_node_t *node, void *data) { @@ -2384,6 +2475,31 @@ void xine_post_dispose(xine_t *xine, xine_post_t *post_gen) { * their disposal if they are still in use => post.c handles the counting for us */ } +/** + * @brief Concantenates an array of strings into a single + * string separated with a given string. + * + * @param strings Array of strings to concatenate. + * @param count Number of elements in the @p strings array. + * @param joining String to use to join the various strings together. + * @param final_length The pre-calculated final length of the string. + */ +static char *_x_concatenate_with_string(char const **strings, size_t count, char *joining, size_t final_length) { + size_t i; + char *const result = malloc(final_length+1); /* Better be safe */ + char *str = result; + + for(i = 0; i < count; i++, strings++) { + if ( *strings ) { + int offset = snprintf(str, final_length, "%s%s", *strings, joining); + str += offset; + final_length -= offset; + } + } + + return result; +} + /* get a list of file extensions for file types supported by xine * the list is separated by spaces * @@ -2391,66 +2507,35 @@ void xine_post_dispose(xine_t *xine, xine_post_t *post_gen) { char *xine_get_file_extensions (xine_t *self) { plugin_catalog_t *catalog = self->plugin_catalog; - int len, pos; - plugin_node_t *node; - char *str; - int list_id, list_size; + int list_id; pthread_mutex_lock (&catalog->lock); - /* calc length of output */ - - len = 0; - list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); - for (list_id = 0; list_id < list_size; list_id++) { - demux_class_t *cls; - const char *exts; - - node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); - if (node->plugin_class || _load_plugin_class(self, node, NULL)) { - - cls = (demux_class_t *)node->plugin_class; - - if((exts = cls->get_extensions(cls)) && *exts) - len += strlen(exts) + 1; - } - } - - /* create output */ - str = malloc (len); /* '\0' space is already counted in the previous loop */ - pos = 0; + /* calc length of output string and create an array of strings to + concatenate */ + size_t len = 0; + const int list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); + const char **extensions = calloc(list_size, sizeof(char*)); - list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); for (list_id = 0; list_id < list_size; list_id++) { - demux_class_t *cls; - const char *e; - int l; - - node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); + plugin_node_t *const node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); if (node->plugin_class || _load_plugin_class(self, node, NULL)) { - - cls = (demux_class_t *)node->plugin_class; - - if((e = cls->get_extensions (cls)) && *e) { - l = strlen(e); - memcpy (&str[pos], e, l); - - pos += l; - - /* Don't add ' ' char at the end of str */ - if((pos + 1) < len) { - str[pos] = ' '; - pos++; - } - } + demux_class_t *const cls = (demux_class_t *)node->plugin_class; + if( (extensions[list_id] = cls->get_extensions(cls)) != NULL ) + len += strlen(extensions[list_id]) +1; } } - str[pos] = 0; + /* create output string */ + char *const result = _x_concatenate_with_string(extensions, list_size, " ", len); + free(extensions); + /* Drop the last whitespace */ + result[len-1] = '\0'; + pthread_mutex_unlock (&catalog->lock); - return str; + return result; } /* get a list of mime types supported by xine @@ -2459,65 +2544,34 @@ char *xine_get_file_extensions (xine_t *self) { char *xine_get_mime_types (xine_t *self) { plugin_catalog_t *catalog = self->plugin_catalog; - int len, pos; - plugin_node_t *node; - char *str; - int list_id, list_size; + int list_id; pthread_mutex_lock (&catalog->lock); /* calc length of output */ - len = 0; - list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); + /* calc length of output string and create an array of strings to + concatenate */ + size_t len = 0; + const int list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); + const char **mimetypes = calloc(list_size, sizeof(char*)); for (list_id = 0; list_id < list_size; list_id++) { - demux_class_t *cls; - const char *s; - - node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); + plugin_node_t *const node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); if (node->plugin_class || _load_plugin_class(self, node, NULL)) { - - cls = (demux_class_t *)node->plugin_class; - - s = cls->get_mimetypes (cls); - if (s) - len += strlen(s); + demux_class_t *const cls = (demux_class_t *)node->plugin_class; + if( (mimetypes[list_id] = cls->get_mimetypes(cls)) != NULL ) + len += strlen(mimetypes[list_id]); } } - /* create output */ - - str = malloc (len+1); - pos = 0; - - list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); - - for (list_id = 0; list_id < list_size; list_id++) { - demux_class_t *cls; - const char *s; - int l; - - node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); - if (node->plugin_class || _load_plugin_class(self, node, NULL)) { + /* create output string */ + char *const result = _x_concatenate_with_string(mimetypes, list_size, "", len); + free(mimetypes); - cls = (demux_class_t *)node->plugin_class; - - s = cls->get_mimetypes (cls); - if (s) { - l = strlen(s); - memcpy (&str[pos], s, l); - - pos += l; - } - } - } - - str[pos] = 0; - pthread_mutex_unlock (&catalog->lock); - return str; + return result; } @@ -2530,47 +2584,24 @@ char *xine_get_demux_for_mime_type (xine_t *self, const char *mime_type) { plugin_catalog_t *catalog = self->plugin_catalog; plugin_node_t *node; char *id = NULL; - char *mime_arg, *mime_demux; - char *s; - const char *mt; int list_id, list_size; - /* create a copy and convert to lower case */ - mime_arg = strdup(mime_type); - for(s=mime_arg; *s; s++) - *s = tolower(*s); - pthread_mutex_lock (&catalog->lock); list_size = xine_sarray_size (catalog->plugin_lists[PLUGIN_DEMUX - 1]); for (list_id = 0; (list_id < list_size) && !id; list_id++) { - demux_class_t *cls; node = xine_sarray_get (catalog->plugin_lists[PLUGIN_DEMUX - 1], list_id); - if (node->plugin_class || _load_plugin_class(self, node, NULL)) { - - cls = (demux_class_t *)node->plugin_class; - - mt = cls->get_mimetypes (cls); - if (mt) { - mime_demux = strdup(mt); - - for(s=mime_demux; *s; s++) - *s = tolower(*s); - - if( strstr(mime_demux, mime_arg) ) - id = strdup(node->info->id); - - free(mime_demux); - } + if (probe_mime_type (self, node, mime_type)) + { + free (id); + id = strdup(node->info->id); } } pthread_mutex_unlock (&catalog->lock); - free(mime_arg); - return id; } diff --git a/src/xine-engine/lrb.c b/src/xine-engine/lrb.c index 6da846a7c..6f8ac8479 100644 --- a/src/xine-engine/lrb.c +++ b/src/xine-engine/lrb.c @@ -30,7 +30,7 @@ lrb_t *lrb_new (int max_num_entries, lrb_t *this; - this = xine_xmalloc (sizeof (lrb_t)); + this = calloc(1, sizeof(lrb_t)); this->max_num_entries = max_num_entries; this->cur_num_entries = 0; diff --git a/src/xine-engine/metronom.c b/src/xine-engine/metronom.c index 73f36d541..eb9abb84a 100644 --- a/src/xine-engine/metronom.c +++ b/src/xine-engine/metronom.c @@ -172,11 +172,10 @@ static void unixscr_exit (scr_plugin_t *scr) { free(this); } -static scr_plugin_t* unixscr_init () { +static scr_plugin_t *XINE_MALLOC unixscr_init () { unixscr_t *this; - this = (unixscr_t *) xine_xmalloc(sizeof(unixscr_t)); - memset(this, 0, sizeof(*this)); + this = calloc(1, sizeof(unixscr_t)); this->scr.interface_version = 3; this->scr.get_priority = unixscr_get_priority; @@ -890,7 +889,7 @@ static void metronom_clock_exit (metronom_clock_t *this) { metronom_t * _x_metronom_init (int have_video, int have_audio, xine_t *xine) { - metronom_t *this = xine_xmalloc (sizeof (metronom_t)); + metronom_t *this = calloc(1, sizeof (metronom_t)); this->set_audio_rate = metronom_set_audio_rate; this->got_video_frame = metronom_got_video_frame; @@ -943,7 +942,7 @@ metronom_t * _x_metronom_init (int have_video, int have_audio, xine_t *xine) { metronom_clock_t *_x_metronom_clock_init(xine_t *xine) { - metronom_clock_t *this = (metronom_clock_t *) xine_xmalloc(sizeof(metronom_clock_t)); + metronom_clock_t *this = calloc(1, sizeof(metronom_clock_t)); int err; this->set_option = metronom_clock_set_option; diff --git a/src/xine-engine/metronom.h b/src/xine-engine/metronom.h index 20e31117c..c7a594d89 100644 --- a/src/xine-engine/metronom.h +++ b/src/xine-engine/metronom.h @@ -223,7 +223,7 @@ struct metronom_s { #define METRONOM_VPTS_OFFSET 6 #define METRONOM_PREBUFFER 7 -metronom_t *_x_metronom_init (int have_video, int have_audio, xine_t *xine) XINE_PROTECTED; +metronom_t *_x_metronom_init (int have_video, int have_audio, xine_t *xine) XINE_MALLOC XINE_PROTECTED; /* FIXME: reorder this structure on the next cleanup to remove the dummies */ struct metronom_clock_s { @@ -319,7 +319,7 @@ struct metronom_clock_s { #endif }; -metronom_clock_t *_x_metronom_clock_init(xine_t *xine) XINE_PROTECTED; +metronom_clock_t *_x_metronom_clock_init(xine_t *xine) XINE_MALLOC XINE_PROTECTED; /* * clock options diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c index ef888e7a4..af8286831 100644 --- a/src/xine-engine/osd.c +++ b/src/xine-engine/osd.c @@ -83,17 +83,6 @@ # define UCS2_ENCODING "UCS-2LE" #endif -#ifdef MAX -#undef MAX -#endif -#define MAX(a,b) ( (a) > (b) ) ? (a) : (b) - -#ifdef MIN -#undef MIN -#endif -#define MIN(a,b) ( (a) < (b) ) ? (a) : (b) - - #if (FREETYPE_MAJOR > 2) || \ (FREETYPE_MAJOR == 2 && FREETYPE_MINOR > 1) || \ (FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 1 && FREETYPE_PATCH >= 3) @@ -132,6 +121,20 @@ struct osd_ft2context_s { FT_Face face; int size; }; + +static void osd_free_ft2 (osd_object_t *osd) +{ + if( osd->ft2 ) { + if ( osd->ft2->face ) + FT_Done_Face (osd->ft2->face); + if ( osd->ft2->library ) + FT_Done_FreeType(osd->ft2->library); + free( osd->ft2 ); + osd->ft2 = NULL; + } +} +#else +static inline void osd_free_ft2 (osd_object_t *osd __attr_unused) {} #endif /* @@ -143,20 +146,20 @@ struct osd_ft2context_s { * for the sake of simplicity) */ -static osd_object_t *osd_new_object (osd_renderer_t *this, int width, int height) { +static osd_object_t *XINE_MALLOC osd_new_object (osd_renderer_t *this, int width, int height) { osd_object_t *osd; pthread_mutex_lock (&this->osd_mutex); - osd = xine_xmalloc( sizeof(osd_object_t) ); + osd = calloc(1, sizeof(osd_object_t)); osd->renderer = this; osd->next = this->osds; this->osds = osd; osd->width = width; osd->height = height; - osd->area = xine_xmalloc( width * height ); + osd->area = calloc(width, height); osd->x1 = width; osd->y1 = height; @@ -670,7 +673,7 @@ static int osd_renderer_load_font(osd_renderer_t *this, char *filename) { /* fixme: check for all read errors... */ if( (fp = gzopen(filename,"rb")) != NULL ) { - font = xine_xmalloc( sizeof(osd_font_t) ); + font = calloc(1, sizeof(osd_font_t)); gzread(fp, font->name, sizeof(font->name) ); font->version = gzread_i16(fp); @@ -818,7 +821,7 @@ static int osd_renderer_unload_font(osd_renderer_t *this, char *fontname ) { #ifdef HAVE_FT2 static int osd_set_font_freetype2( osd_object_t *osd, const char *fontname, int size ) { if (!osd->ft2) { - osd->ft2 = xine_xmalloc(sizeof(osd_ft2context_t)); + osd->ft2 = calloc(1, sizeof(osd_ft2context_t)); if(FT_Init_FreeType( &osd->ft2->library )) { xprintf(osd->renderer->stream->xine, XINE_VERBOSITY_LOG, _("osd: cannot initialize ft2 library\n")); @@ -827,6 +830,11 @@ static int osd_set_font_freetype2( osd_object_t *osd, const char *fontname, int return 0; } } + + if (osd->ft2->face) { + FT_Done_Face (osd->ft2->face); + osd->ft2->face = NULL; + } #ifdef HAVE_FONTCONFIG do { @@ -885,16 +893,14 @@ static int osd_set_font_freetype2( osd_object_t *osd, const char *fontname, int _("osd: error loading font %s with ft2\n"), fontname); } - free(osd->ft2); - osd->ft2 = NULL; + osd_free_ft2 (osd); return 0; end: if (FT_Set_Pixel_Sizes(osd->ft2->face, 0, size)) { xprintf(osd->renderer->stream->xine, XINE_VERBOSITY_LOG, _("osd: error setting font size (no scalable font?)\n")); - free(osd->ft2); - osd->ft2 = NULL; + osd_free_ft2 (osd); return 0; } @@ -1410,10 +1416,9 @@ static void osd_preload_fonts (osd_renderer_t *this, char *path) { if( p ) { osd_font_t *font; - char *pathname; *p++ = '\0'; - font = xine_xmalloc( sizeof(osd_font_t) ); + font = calloc(1, sizeof(osd_font_t) ); strncpy(font->name, s, sizeof(font->name)); font->size = atoi(p); @@ -1421,9 +1426,7 @@ static void osd_preload_fonts (osd_renderer_t *this, char *path) { lprintf("font '%s' size %d is preloaded\n", font->name, font->size); - pathname = (char *) xine_xmalloc(strlen(path) + strlen(entry->d_name) + 2); - sprintf (pathname, "%s/%s", path, entry->d_name); - font->filename = pathname; + asprintf (&font->filename, "%s/%s", path, entry->d_name); font->next = this->fonts; this->fonts = font; @@ -1472,15 +1475,7 @@ static void osd_free_object (osd_object_t *osd_to_close) { if ( osd == osd_to_close ) { free( osd->area ); -#ifdef HAVE_FT2 - if( osd->ft2 ) { - if ( osd->ft2->library ) - FT_Done_FreeType(osd->ft2->library); - - free( osd->ft2 ); - } -#endif - + osd_free_ft2 (osd); osd_free_encoding(osd); if( last ) @@ -1579,9 +1574,9 @@ osd_renderer_t *_x_osd_renderer_init( xine_stream_t *stream ) { osd_renderer_t *this; char str[1024]; - this = xine_xmalloc(sizeof(osd_renderer_t)); + this = calloc(1, sizeof(osd_renderer_t)); this->stream = stream; - this->event.object.overlay = xine_xmalloc( sizeof(vo_overlay_t) ); + this->event.object.overlay = calloc(1, sizeof(vo_overlay_t)); pthread_mutex_init (&this->osd_mutex, NULL); diff --git a/src/xine-engine/osd.h b/src/xine-engine/osd.h index 38b5d1fdd..70193a2ea 100644 --- a/src/xine-engine/osd.h +++ b/src/xine-engine/osd.h @@ -226,7 +226,7 @@ struct osd_renderer_s { /* * initialize the osd rendering engine */ -osd_renderer_t *_x_osd_renderer_init( xine_stream_t *stream ); +osd_renderer_t *_x_osd_renderer_init( xine_stream_t *stream ) XINE_MALLOC; /* diff --git a/src/xine-engine/post.c b/src/xine-engine/post.c index 5d8d67037..aa182d627 100644 --- a/src/xine-engine/post.c +++ b/src/xine-engine/post.c @@ -30,13 +30,10 @@ void _x_post_init(post_plugin_t *post, int num_audio_inputs, int num_video_inputs) { - int audio_inputs_size = (num_audio_inputs + 1) * sizeof(xine_audio_port_t *); - int video_inputs_size = (num_video_inputs + 1) * sizeof(xine_video_port_t *); - post->input = xine_list_new(); post->output = xine_list_new(); - post->xine_post.audio_input = (xine_audio_port_t **)xine_xmalloc(audio_inputs_size); - post->xine_post.video_input = (xine_video_port_t **)xine_xmalloc(video_inputs_size); + post->xine_post.audio_input = calloc(num_audio_inputs + 1, sizeof(xine_audio_port_t *)); + post->xine_post.video_input = calloc(num_video_inputs + 1, sizeof(xine_video_port_t *)); } @@ -207,7 +204,7 @@ static int post_video_rewire(xine_post_out_t *output_gen, void *data) { post_video_port_t *_x_post_intercept_video_port(post_plugin_t *post, xine_video_port_t *original, post_in_t **input, post_out_t **output) { - post_video_port_t *port = (post_video_port_t *)xine_xmalloc(sizeof(post_video_port_t)); + post_video_port_t *port = calloc(1, sizeof(post_video_port_t)); if (!port) return NULL; @@ -235,7 +232,7 @@ post_video_port_t *_x_post_intercept_video_port(post_plugin_t *post, xine_video_ pthread_mutex_init(&port->free_frames_lock, NULL); if (input) { - *input = (post_in_t *)xine_xmalloc(sizeof(post_in_t)); + *input = calloc(1, sizeof(post_in_t)); if (!*input) return port; (*input)->xine_in.name = "video in"; (*input)->xine_in.type = XINE_POST_DATA_VIDEO; @@ -245,7 +242,7 @@ post_video_port_t *_x_post_intercept_video_port(post_plugin_t *post, xine_video_ } if (output) { - *output = (post_out_t *)xine_xmalloc(sizeof(post_out_t)); + *output = calloc(1, sizeof(post_out_t)); if (!*output) return port; (*output)->xine_out.name = "video out"; (*output)->xine_out.type = XINE_POST_DATA_VIDEO; @@ -353,7 +350,7 @@ vo_frame_t *_x_post_intercept_video_frame(vo_frame_t *frame, post_video_port_t * new_frame = port->free_frame_slots; port->free_frame_slots = new_frame->next; } else { - new_frame = (vo_frame_t *)xine_xmalloc(sizeof(vo_frame_t)); + new_frame = calloc(1, sizeof(vo_frame_t)); } pthread_mutex_unlock(&port->free_frames_lock); @@ -716,7 +713,7 @@ static int post_audio_rewire(xine_post_out_t *output_gen, void *data) { post_audio_port_t *_x_post_intercept_audio_port(post_plugin_t *post, xine_audio_port_t *original, post_in_t **input, post_out_t **output) { - post_audio_port_t *port = (post_audio_port_t *)xine_xmalloc(sizeof(post_audio_port_t)); + post_audio_port_t *port = calloc(1, sizeof(post_audio_port_t)); if (!port) return NULL; @@ -739,7 +736,7 @@ post_audio_port_t *_x_post_intercept_audio_port(post_plugin_t *post, xine_audio_ pthread_mutex_init(&port->usage_lock, NULL); if (input) { - *input = (post_in_t *)xine_xmalloc(sizeof(post_in_t)); + *input = calloc(1, sizeof(post_in_t)); if (!*input) return port; (*input)->xine_in.name = "audio in"; (*input)->xine_in.type = XINE_POST_DATA_AUDIO; @@ -749,7 +746,7 @@ post_audio_port_t *_x_post_intercept_audio_port(post_plugin_t *post, xine_audio_ } if (output) { - *output = (post_out_t *)xine_xmalloc(sizeof(post_out_t)); + *output = calloc(1, sizeof(post_out_t)); if (!*output) return port; (*output)->xine_out.name = "audio out"; (*output)->xine_out.type = XINE_POST_DATA_AUDIO; diff --git a/src/xine-engine/refcounter.c b/src/xine-engine/refcounter.c index 539abf3ed..384bdf5ed 100644 --- a/src/xine-engine/refcounter.c +++ b/src/xine-engine/refcounter.c @@ -17,6 +17,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #define LOG_MODULE "refcounter" #define LOG_VERBOSE /* @@ -30,7 +35,7 @@ refcounter_t* _x_new_refcounter(void *object, void (*destructor)(void *)) { refcounter_t *new_refcounter; - new_refcounter = (refcounter_t *) xine_xmalloc (sizeof (refcounter_t)); + new_refcounter = (refcounter_t *) calloc(1, sizeof(refcounter_t)); new_refcounter->count = 1; new_refcounter->object = object; new_refcounter->destructor = destructor; diff --git a/src/xine-engine/refcounter.h b/src/xine-engine/refcounter.h index 87abd6321..b3ddd71fc 100644 --- a/src/xine-engine/refcounter.h +++ b/src/xine-engine/refcounter.h @@ -20,10 +20,6 @@ #ifndef HAVE_REFCOUNTER_H #define HAVE_REFCOUNTER_H -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include <pthread.h> typedef struct { @@ -35,7 +31,7 @@ typedef struct { typedef void (*refcounter_destructor)(void*); -refcounter_t* _x_new_refcounter(void *object, refcounter_destructor destructor) XINE_PROTECTED; +refcounter_t* _x_new_refcounter(void *object, refcounter_destructor destructor) XINE_MALLOC XINE_PROTECTED; int _x_refcounter_inc(refcounter_t *refcounter) XINE_PROTECTED; diff --git a/src/xine-engine/scratch.c b/src/xine-engine/scratch.c index 38b606b84..696e99ffb 100644 --- a/src/xine-engine/scratch.c +++ b/src/xine-engine/scratch.c @@ -50,12 +50,11 @@ static void __attribute__((__format__(__printf__, 2, 0))) localtime_r (&t, &tm); if ( ! this->lines[this->cur] ) - this->lines[this->cur] = xine_xmalloc(SCRATCH_LINE_LEN_MAX+1); + this->lines[this->cur] = malloc(SCRATCH_LINE_LEN_MAX+1); if ( ! this->lines[this->cur] ) return; - strftime (this->lines[this->cur], SCRATCH_LINE_LEN_MAX, "%X: ", &tm); - l = strlen (this->lines[this->cur]); + l = strftime (this->lines[this->cur], SCRATCH_LINE_LEN_MAX, "%X: ", &tm); vsnprintf (this->lines[this->cur] + l, SCRATCH_LINE_LEN_MAX - l, format, argp); lprintf ("printing format %s to line %d\n", format, this->cur); @@ -105,15 +104,11 @@ static void scratch_dispose (scratch_buffer_t *this) { scratch_buffer_t *_x_new_scratch_buffer (int num_lines) { scratch_buffer_t *this; - int i; - this = xine_xmalloc (sizeof (scratch_buffer_t)); + this = calloc(1, sizeof(scratch_buffer_t)); - this->lines = xine_xmalloc (sizeof (char *) * (num_lines + 1)); - this->ordered = xine_xmalloc (sizeof (char *) * (num_lines + 1)); - - for (i = 0; i <= num_lines; i++) - this->lines[i] = this->ordered[i] = NULL; + this->lines = calloc ((num_lines + 1), sizeof(char*)); + this->ordered = calloc ((num_lines + 1), sizeof(char*)); this->scratch_printf = scratch_printf; this->get_content = scratch_get_content; diff --git a/src/xine-engine/scratch.h b/src/xine-engine/scratch.h index c0e591d31..1029276e3 100644 --- a/src/xine-engine/scratch.h +++ b/src/xine-engine/scratch.h @@ -51,6 +51,6 @@ struct scratch_buffer_s { pthread_mutex_t lock; }; -scratch_buffer_t *_x_new_scratch_buffer (int num_lines) XINE_PROTECTED; +scratch_buffer_t *_x_new_scratch_buffer (int num_lines) XINE_MALLOC XINE_PROTECTED; #endif diff --git a/src/xine-engine/video_decoder.c b/src/xine-engine/video_decoder.c index c88e01714..d3c9e0d34 100644 --- a/src/xine-engine/video_decoder.c +++ b/src/xine-engine/video_decoder.c @@ -160,7 +160,7 @@ static void *video_decoder_loop (void *stream_gen) { running_ticket->release(running_ticket, 0); - if( !stream->gapless_switch ) + if( !(buf->decoder_flags & BUF_FLAG_GAPLESS_SW) ) stream->metronom->handle_video_discontinuity (stream->metronom, DISC_STREAMSTART, 0); diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c index a8464ac40..be062cc5d 100644 --- a/src/xine-engine/video_out.c +++ b/src/xine-engine/video_out.c @@ -139,11 +139,11 @@ typedef struct { * frame queue (fifo) util functions */ -static img_buf_fifo_t *vo_new_img_buf_queue () { +static img_buf_fifo_t *XINE_MALLOC vo_new_img_buf_queue () { img_buf_fifo_t *queue; - queue = (img_buf_fifo_t *) xine_xmalloc (sizeof (img_buf_fifo_t)); + queue = (img_buf_fifo_t *) calloc(1, sizeof(img_buf_fifo_t)); if( queue ) { queue->first = NULL; queue->last = NULL; @@ -1771,7 +1771,7 @@ xine_video_port_t *_x_vo_new_port (xine_t *xine, vo_driver_t *driver, int grabon int num_frame_buffers; - this = xine_xmalloc (sizeof (vos_t)) ; + this = calloc(1, sizeof(vos_t)) ; this->xine = xine; this->clock = xine->clock; diff --git a/src/xine-engine/video_out.h b/src/xine-engine/video_out.h index 4d9c80565..9a2ba06c6 100644 --- a/src/xine-engine/video_out.h +++ b/src/xine-engine/video_out.h @@ -36,10 +36,6 @@ extern "C" { #endif -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include <pthread.h> #ifdef XINE_COMPILE @@ -448,7 +444,7 @@ struct video_overlay_manager_s { * build a video_out_port from * a given video driver */ -xine_video_port_t *_x_vo_new_port (xine_t *xine, vo_driver_t *driver, int grabonly) XINE_PROTECTED; +xine_video_port_t *_x_vo_new_port (xine_t *xine, vo_driver_t *driver, int grabonly) XINE_MALLOC XINE_PROTECTED; #ifdef __cplusplus } diff --git a/src/xine-engine/video_overlay.c b/src/xine-engine/video_overlay.c index c189fa56b..b88f10c11 100644 --- a/src/xine-engine/video_overlay.c +++ b/src/xine-engine/video_overlay.c @@ -18,6 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <unistd.h> #include <string.h> @@ -199,7 +203,7 @@ static void video_overlay_reset (video_overlay_t *this) { pthread_mutex_lock (&this->events_mutex); for (i=0; i < MAX_EVENTS; i++) { if (this->events[i].event == NULL) { - this->events[i].event = xine_xmalloc (sizeof(video_overlay_event_t)); + this->events[i].event = calloc(1, sizeof(video_overlay_event_t)); #ifdef LOG_DEBUG printf ("video_overlay: MALLOC2: this->events[%d].event %p, len=%d\n", i, @@ -293,7 +297,7 @@ static int32_t video_overlay_add_event(video_overlay_manager_t *this_gen, void event->object.overlay->hili_trans[i] = OVL_MAX_OPACITY; } - this->events[new_event].event->object.overlay = xine_xmalloc (sizeof(vo_overlay_t)); + this->events[new_event].event->object.overlay = calloc(1, sizeof(vo_overlay_t)); xine_fast_memcpy(this->events[new_event].event->object.overlay, event->object.overlay, sizeof(vo_overlay_t)); @@ -587,7 +591,7 @@ video_overlay_manager_t *_x_video_overlay_new_manager (xine_t *xine) { video_overlay_t *this; - this = (video_overlay_t *) xine_xmalloc (sizeof (video_overlay_t)); + this = (video_overlay_t *) calloc(1, sizeof(video_overlay_t)); this->xine = xine; this->video_overlay.init = video_overlay_init; diff --git a/src/xine-engine/video_overlay.h b/src/xine-engine/video_overlay.h index d580a1e83..01f3a2a3a 100644 --- a/src/xine-engine/video_overlay.h +++ b/src/xine-engine/video_overlay.h @@ -98,6 +98,6 @@ typedef struct video_overlay_event_s { video_overlay_object_t object; /* The image data. */ } video_overlay_event_t; -video_overlay_manager_t *_x_video_overlay_new_manager(xine_t *) XINE_PROTECTED; +video_overlay_manager_t *_x_video_overlay_new_manager(xine_t *) XINE_MALLOC XINE_PROTECTED; #endif diff --git a/src/xine-engine/vo_scale.c b/src/xine-engine/vo_scale.c index ff30c47a6..8d84c32da 100644 --- a/src/xine-engine/vo_scale.c +++ b/src/xine-engine/vo_scale.c @@ -22,6 +22,10 @@ * Takes into account aspect ratio correction and zooming. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdio.h> #include <string.h> #include <math.h> diff --git a/src/xine-engine/vo_scale.h b/src/xine-engine/vo_scale.h index 829405162..eb2607024 100644 --- a/src/xine-engine/vo_scale.h +++ b/src/xine-engine/vo_scale.h @@ -29,10 +29,6 @@ extern "C" { #endif -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #ifdef XINE_COMPILE # include "configfile.h" #else diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c index eae13bec9..aebbffb39 100644 --- a/src/xine-engine/xine.c +++ b/src/xine-engine/xine.c @@ -36,6 +36,7 @@ #include <stdarg.h> #include <stdio.h> #include <ctype.h> +#include <unistd.h> #if defined (__linux__) || defined (__GLIBC__) #include <endian.h> #elif defined (__FreeBSD__) @@ -132,7 +133,7 @@ static int acquire_allowed_to_block(xine_ticket_t *this) { unsigned new_size; for(entry = 0; entry < this->holder_thread_count; ++entry) { - if(this->holder_threads[entry].holder == own_id) { + if(pthread_equal(this->holder_threads[entry].holder, own_id)) { /* This thread may already hold this ticket */ this->holder_threads[entry].count++; return (this->holder_threads[entry].count == 1); @@ -203,7 +204,7 @@ static int release_allowed_to_block(xine_ticket_t *this) { unsigned entry; for(entry = 0; entry < this->holder_thread_count; ++entry) { - if(this->holder_threads[entry].holder == own_id) { + if(pthread_equal(this->holder_threads[entry].holder, own_id)) { this->holder_threads[entry].count--; return this->holder_threads[entry].count == 0; } @@ -303,10 +304,10 @@ static void ticket_dispose(xine_ticket_t *this) { free(this); } -static xine_ticket_t *ticket_init(void) { +static xine_ticket_t *XINE_MALLOC ticket_init(void) { xine_ticket_t *port_ticket; - port_ticket = (xine_ticket_t *) xine_xmalloc(sizeof(xine_ticket_t)); + port_ticket = calloc(1, sizeof(xine_ticket_t)); port_ticket->acquire_nonblocking = ticket_acquire_nonblocking; port_ticket->acquire = ticket_acquire; @@ -329,17 +330,20 @@ static xine_ticket_t *ticket_init(void) { static void set_speed_internal (xine_stream_t *stream, int speed) { xine_t *xine = stream->xine; + int old_speed = xine->clock->speed; - if (xine->clock->speed != XINE_SPEED_PAUSE && speed == XINE_SPEED_PAUSE) + if (old_speed != XINE_SPEED_PAUSE && speed == XINE_SPEED_PAUSE) /* get all decoder and post threads in a state where they agree to be blocked */ xine->port_ticket->revoke(xine->port_ticket, 0); - if (xine->clock->speed == XINE_SPEED_PAUSE && speed != XINE_SPEED_PAUSE) + if (old_speed == XINE_SPEED_PAUSE && speed != XINE_SPEED_PAUSE) /* all decoder and post threads may continue now */ xine->port_ticket->issue(xine->port_ticket, 0); - stream->xine->clock->set_fine_speed (stream->xine->clock, speed); - + if (old_speed != XINE_SPEED_PAUSE && speed == XINE_SPEED_PAUSE) + /* set master clock so audio_out loop can pause in a safe place */ + stream->xine->clock->set_fine_speed (stream->xine->clock, speed); + /* see coment on audio_out loop about audio_paused */ if( stream->audio_out ) { xine->port_ticket->acquire(xine->port_ticket, 1); @@ -349,6 +353,10 @@ static void set_speed_internal (xine_stream_t *stream, int speed) { xine->port_ticket->release(xine->port_ticket, 1); } + + if (old_speed == XINE_SPEED_PAUSE || speed != XINE_SPEED_PAUSE) + /* master clock is set after resuming the audio device (audio_out loop may continue) */ + stream->xine->clock->set_fine_speed (stream->xine->clock, speed); } @@ -418,6 +426,7 @@ void xine_stop (xine_stream_t *stream) { static void close_internal (xine_stream_t *stream) { int i ; + int gapless_switch = stream->gapless_switch; if( stream->slave ) { xine_close( stream->slave ); @@ -428,7 +437,7 @@ static void close_internal (xine_stream_t *stream) { } } - if( !stream->gapless_switch ) { + if( !gapless_switch ) { /* make sure that other threads cannot change the speed, especially pauseing the stream */ pthread_mutex_lock(&stream->speed_change_lock); stream->ignore_speed_change = 1; @@ -444,7 +453,7 @@ static void close_internal (xine_stream_t *stream) { stop_internal( stream ); - if( !stream->gapless_switch ) { + if( !gapless_switch ) { if (stream->video_out) stream->video_out->set_property(stream->video_out, VO_PROP_DISCARD_FRAMES, 0); if (stream->audio_out) @@ -552,7 +561,7 @@ static int stream_rewire_video(xine_post_out_t *output, void *data) return 1; } -void xine_dispose_internal (xine_stream_t *stream); +static void xine_dispose_internal (xine_stream_t *stream); xine_stream_t *xine_stream_new (xine_t *this, xine_audio_port_t *ao, xine_video_port_t *vo) { @@ -569,7 +578,7 @@ xine_stream_t *xine_stream_new (xine_t *this, pthread_mutex_lock (&this->streams_lock); - stream = (xine_stream_t *) xine_xmalloc (sizeof (xine_stream_t)) ; + stream = (xine_stream_t *) calloc (1, sizeof (xine_stream_t)) ; stream->current_extra_info = malloc( sizeof( extra_info_t ) ); stream->audio_decoder_extra_info = malloc( sizeof( extra_info_t ) ); stream->video_decoder_extra_info = malloc( sizeof( extra_info_t ) ); @@ -595,6 +604,7 @@ xine_stream_t *xine_stream_new (xine_t *this, stream->early_finish_event = 0; stream->delay_finish_event = 0; stream->gapless_switch = 0; + stream->keep_ao_driver_open = 0; stream->video_out = vo; if (vo) @@ -628,6 +638,7 @@ xine_stream_t *xine_stream_new (xine_t *this, pthread_mutex_init (&stream->meta_mutex, NULL); pthread_mutex_init (&stream->demux_lock, NULL); pthread_mutex_init (&stream->demux_mutex, NULL); + pthread_cond_init (&stream->demux_resume, NULL); pthread_mutex_init (&stream->event_queues_lock, NULL); pthread_mutex_init (&stream->counter_lock, NULL); pthread_cond_init (&stream->counter_changed, NULL); @@ -733,7 +744,7 @@ xine_stream_t *xine_stream_new (xine_t *this, } void _x_mrl_unescape(char *mrl) { - int i, len = strlen(mrl); + size_t i, len = strlen(mrl); for (i = 0; i < len; i++) { if ((mrl[i]=='%') && (i<(len-2))) { @@ -780,9 +791,23 @@ void _x_flush_events_queues (xine_stream_t *stream) { pthread_mutex_unlock (&stream->event_queues_lock); } -/*static*/ int open_internal (xine_stream_t *stream, const char *mrl) { +static inline int _x_path_looks_like_mrl (const char *path) +{ + if ((*path & 0xDF) < 'A' || (*path & 0xDF) > 'Z') + return 0; + + for (++path; *path; ++path) + if ((*path != '-' && *path < '0') || (*path > '9' && *path < 'A') || + (*path > 'Z' && *path < 'a') || *path > 'z') + break; + + return path[0] == ':' && path[1] == '/'; +} + +static int open_internal (xine_stream_t *stream, const char *mrl) { const char *stream_setup = NULL; + const char *mrl_proto = NULL; int no_cache = 0; if (!mrl) { @@ -806,16 +831,31 @@ void _x_flush_events_queues (xine_stream_t *stream) { /* * look for a stream_setup in MRL and try finding an input plugin */ + stream_setup = strchr (mrl, '#'); if (isalpha (*mrl)) { - stream_setup = mrl + 1; - while (isalnum (*stream_setup) || *stream_setup == '+' || *stream_setup == '-' || *stream_setup == '.') - ++stream_setup; - if (stream_setup[0] == ':' && stream_setup[1] == '/') - stream_setup = strchr (mrl, '#'); - else - stream_setup = NULL; + mrl_proto = mrl + 1; + while (isalnum (*mrl_proto) || *mrl_proto == '+' || *mrl_proto == '-' || *mrl_proto == '.') + ++mrl_proto; + if (!mrl_proto[0] || mrl_proto[0] != ':' || mrl_proto[1] != '/') + mrl_proto = NULL; + } + + /* for raw filenames we must try every '#' checking if it is part of the filename */ + if( !mrl_proto && stream_setup) { + struct stat stat_buf; + int res; + + while( stream_setup ) { + char *raw_filename = strndup (mrl, stream_setup - mrl); + + res = stat(raw_filename, &stat_buf); + free(raw_filename); + if( !res ) + break; + stream_setup = strchr(stream_setup + 1, '#'); + } } { @@ -824,8 +864,10 @@ void _x_flush_events_queues (xine_stream_t *stream) { /* * find an input plugin */ - - if ((stream->input_plugin = _x_find_input_plugin (stream, input_source))) { + stream->input_plugin = _x_find_input_plugin (stream, input_source); + free(input_source); + + if ( stream->input_plugin ) { int res; xine_log (stream->xine, XINE_LOG_MSG, _("xine: found input plugin : %s\n"), @@ -840,7 +882,6 @@ void _x_flush_events_queues (xine_stream_t *stream) { case 1: /* Open successfull */ break; case -1: /* Open unsuccessfull, but correct plugin */ - free(input_source); stream->err = XINE_ERROR_INPUT_FAILED; _x_flush_events_queues (stream); return 0; @@ -851,8 +892,6 @@ void _x_flush_events_queues (xine_stream_t *stream) { stream->err = XINE_ERROR_INPUT_FAILED; } } - - free(input_source); } if (!stream->input_plugin) { @@ -917,6 +956,7 @@ void _x_flush_events_queues (xine_stream_t *stream) { memcpy(filename, tmp, strlen(tmp)); filename[strlen(tmp)] = '\0'; } + _x_mrl_unescape(filename); xine_log(stream->xine, XINE_LOG_MSG, _("xine: join rip input plugin\n")); input_saver = _x_rip_plugin_get_instance (stream, filename); @@ -1091,7 +1131,9 @@ void _x_flush_events_queues (xine_stream_t *stream) { memcpy(subtitle_mrl, tmp, strlen(tmp)); subtitle_mrl[strlen(tmp)] = '\0'; } - _x_mrl_unescape(subtitle_mrl); + /* unescape for xine_open() if the MRL looks like a raw pathname */ + if (!_x_path_looks_like_mrl(subtitle_mrl)) + _x_mrl_unescape(subtitle_mrl); stream->slave = xine_stream_new (stream->xine, NULL, stream->video_out ); stream->slave_affection = XINE_MASTER_SLAVE_PLAY | XINE_MASTER_SLAVE_STOP; if( xine_open( stream->slave, subtitle_mrl ) ) { @@ -1152,6 +1194,27 @@ void _x_flush_events_queues (xine_stream_t *stream) { /* enable buffered input plugin (request optimizer) */ stream->input_plugin = _x_cache_plugin_get_instance(stream, 0); + /* Let the plugin request a specific demuxer (if the user hasn't). + * This overrides find-by-content & find-by-extension. + */ + if (!stream->demux_plugin) + { + char *default_demux = NULL; + stream->input_plugin->get_optional_data (stream->input_plugin, &default_demux, INPUT_OPTIONAL_DATA_DEMUXER); + if (default_demux) + { + stream->demux_plugin = _x_find_demux_plugin_by_name (stream, default_demux, stream->input_plugin); + if (stream->demux_plugin) + { + lprintf ("demux and input plugin found\n"); + _x_meta_info_set_utf8 (stream, XINE_META_INFO_SYSTEMLAYER, + stream->demux_plugin->demux_class->get_identifier (stream->demux_plugin->demux_class)); + } + else + xine_log (stream->xine, XINE_LOG_MSG, _("xine: couldn't load plugin-specified demux %s for >%s<\n"), default_demux, mrl); + } + } + if (!stream->demux_plugin) { /* @@ -1290,6 +1353,7 @@ static int play_internal (xine_stream_t *stream, int start_pos, int start_time) pthread_mutex_lock( &stream->demux_lock ); /* demux_lock taken. now demuxer is suspended */ stream->demux_action_pending = 0; + pthread_cond_signal(&stream->demux_resume); /* set normal speed again (now that demuxer/input pair is suspended) * some input plugin may have changed speed by itself, we must ensure @@ -1403,7 +1467,7 @@ int xine_eject (xine_stream_t *stream) { return status; } -void xine_dispose_internal (xine_stream_t *stream) { +static void xine_dispose_internal (xine_stream_t *stream) { xine_list_iterator_t *ite; @@ -1416,6 +1480,7 @@ void xine_dispose_internal (xine_stream_t *stream) { pthread_mutex_destroy (&stream->current_extra_info_lock); pthread_cond_destroy (&stream->counter_changed); pthread_mutex_destroy (&stream->demux_mutex); + pthread_cond_destroy (&stream->demux_resume); pthread_mutex_destroy (&stream->demux_lock); pthread_mutex_destroy (&stream->first_frame_lock); pthread_cond_destroy (&stream->first_frame_reached); @@ -1510,7 +1575,7 @@ xine_t *xine_new (void) { int i_err; #endif - this = xine_xmalloc (sizeof (xine_t)); + this = calloc(1, sizeof (xine_t)); if (!this) _x_abort(); @@ -1599,8 +1664,7 @@ static void config_save_cb (void *this_gen, xine_cfg_entry_t *entry) { xine_t *this = (xine_t *)this_gen; char *homedir_trail_slash; - homedir_trail_slash = (char *)malloc(strlen(xine_get_homedir()) + 2); - sprintf(homedir_trail_slash, "%s/", xine_get_homedir()); + asprintf(&homedir_trail_slash, "%s/", xine_get_homedir()); if (entry->str_value[0] && (entry->str_value[0] != '/' || strstr(entry->str_value, "/.") || strcmp(entry->str_value, xine_get_homedir()) == 0 || @@ -1627,6 +1691,12 @@ void xine_init (xine_t *this) { static const char *demux_strategies[] = {"default", "reverse", "content", "extension", NULL}; + /* + * locks + */ + pthread_mutex_init (&this->streams_lock, NULL); + pthread_mutex_init (&this->log_lock, NULL); + /* initialize color conversion tables and functions */ init_yuv_conversion(); @@ -1708,12 +1778,6 @@ void xine_init (xine_t *this) { this->streams = xine_list_new(); /* - * locks - */ - pthread_mutex_init (&this->streams_lock, NULL); - pthread_mutex_init (&this->log_lock, NULL); - - /* * start metronom clock */ @@ -1899,50 +1963,98 @@ int xine_get_pos_length (xine_stream_t *stream, int *pos_stream, return 1; } -int xine_get_current_frame (xine_stream_t *stream, int *width, int *height, - int *ratio_code, int *format, - uint8_t *img) { +static int _x_get_current_frame_data (xine_stream_t *stream, + xine_current_frame_data_t *data, + int flags, int img_size_unknown) { vo_frame_t *frame; + size_t required_size; stream->xine->port_ticket->acquire(stream->xine->port_ticket, 0); frame = stream->video_out->get_last_frame (stream->video_out); stream->xine->port_ticket->release(stream->xine->port_ticket, 0); - if (!frame) + if (!frame) { + data->img_size = 0; return 0; + } - *width = frame->width; - *height = frame->height; + data->width = frame->width; + data->height = frame->height; + data->crop_left = frame->crop_left; + data->crop_right = frame->crop_right; + data->crop_top = frame->crop_top; + data->crop_bottom = frame->crop_bottom; - *ratio_code = 10000.0 * frame->ratio; + data->ratio_code = 10000.0 * frame->ratio; /* make ratio_code backward compatible */ #define RATIO_LIKE(a, b) ((b) - 1 <= (a) && (a) <= 1 + (b)) - if (RATIO_LIKE(*ratio_code, 10000)) - *ratio_code = XINE_VO_ASPECT_SQUARE; - else if (RATIO_LIKE(*ratio_code, 13333)) - *ratio_code = XINE_VO_ASPECT_4_3; - else if (RATIO_LIKE(*ratio_code, 17778)) - *ratio_code = XINE_VO_ASPECT_ANAMORPHIC; - else if (RATIO_LIKE(*ratio_code, 21100)) - *ratio_code = XINE_VO_ASPECT_DVB; - - *format = frame->format; - - if (img){ + if (RATIO_LIKE(data->ratio_code, 10000)) + data->ratio_code = XINE_VO_ASPECT_SQUARE; + else if (RATIO_LIKE(data->ratio_code, 13333)) + data->ratio_code = XINE_VO_ASPECT_4_3; + else if (RATIO_LIKE(data->ratio_code, 17778)) + data->ratio_code = XINE_VO_ASPECT_ANAMORPHIC; + else if (RATIO_LIKE(data->ratio_code, 21100)) + data->ratio_code = XINE_VO_ASPECT_DVB; + + data->format = frame->format; + data->interlaced = frame->progressive_frame ? 0 : (2 - frame->top_field_first); + + switch (frame->format) { + + case XINE_IMGFMT_YV12: + required_size = frame->width * frame->height + + ((frame->width + 1) / 2) * ((frame->height + 1) / 2) + + ((frame->width + 1) / 2) * ((frame->height + 1) / 2); + break; + + case XINE_IMGFMT_YUY2: + required_size = frame->width * frame->height + + ((frame->width + 1) / 2) * frame->height + + ((frame->width + 1) / 2) * frame->height; + break; + + default: + if (data->img || (flags & XINE_FRAME_DATA_ALLOCATE_IMG)) { + xprintf (stream->xine, XINE_VERBOSITY_DEBUG, + "xine: error, snapshot function not implemented for format 0x%x\n", frame->format); + _x_abort (); + } + + required_size = 0; + } + + if (flags & XINE_FRAME_DATA_ALLOCATE_IMG) { + /* return allocated buffer size */ + data->img_size = required_size; + /* allocate img or fail */ + if (!(data->img = calloc(1, required_size))) + return 0; + } else { + /* fail if supplied buffer is to small */ + if (data->img && !img_size_unknown && data->img_size < required_size) { + data->img_size = required_size; + return 0; + } + /* return used buffer size */ + data->img_size = required_size; + } + + if (data->img) { switch (frame->format) { case XINE_IMGFMT_YV12: yv12_to_yv12( /* Y */ frame->base[0], frame->pitches[0], - img, frame->width, + data->img, frame->width, /* U */ frame->base[1], frame->pitches[1], - img+frame->width*frame->height, frame->width/2, + data->img+frame->width*frame->height, frame->width/2, /* V */ frame->base[2], frame->pitches[2], - img+frame->width*frame->height+frame->width*frame->height/4, frame->width/2, + data->img+frame->width*frame->height+frame->width*frame->height/4, frame->width/2, /* width x height */ frame->width, frame->height); break; @@ -1952,7 +2064,7 @@ int xine_get_current_frame (xine_stream_t *stream, int *width, int *height, /* src */ frame->base[0], frame->pitches[0], /* dst */ - img, frame->width*2, + data->img, frame->width*2, /* width x height */ frame->width, frame->height); break; @@ -1966,6 +2078,69 @@ int xine_get_current_frame (xine_stream_t *stream, int *width, int *height, return 1; } +int xine_get_current_frame_data (xine_stream_t *stream, + xine_current_frame_data_t *data, + int flags) { + + return _x_get_current_frame_data(stream, data, flags, 0); +} + +int xine_get_current_frame_alloc (xine_stream_t *stream, int *width, int *height, + int *ratio_code, int *format, + uint8_t **img, int *img_size) { + + int result; + xine_current_frame_data_t data; + + memset(&data, 0, sizeof (data)); + + result = _x_get_current_frame_data(stream, &data, img ? XINE_FRAME_DATA_ALLOCATE_IMG : 0, 0); + if (width) *width = data.width; + if (height) *height = data.height; + if (ratio_code) *ratio_code = data.ratio_code; + if (format) *format = data.format; + if (img_size) *img_size = data.img_size; + if (img) *img = data.img; + return result; +} + +int xine_get_current_frame_s (xine_stream_t *stream, int *width, int *height, + int *ratio_code, int *format, + uint8_t *img, int *img_size) { + int result; + xine_current_frame_data_t data; + + memset(&data, 0, sizeof (data)); + data.img = img; + if (img_size) + data.img_size = *img_size; + + result = _x_get_current_frame_data(stream, &data, 0, 0); + if (width) *width = data.width; + if (height) *height = data.height; + if (ratio_code) *ratio_code = data.ratio_code; + if (format) *format = data.format; + if (img_size) *img_size = data.img_size; + return result; +} + +int xine_get_current_frame (xine_stream_t *stream, int *width, int *height, + int *ratio_code, int *format, + uint8_t *img) { + int result; + xine_current_frame_data_t data; + + memset(&data, 0, sizeof (data)); + data.img = img; + + result = _x_get_current_frame_data(stream, &data, 0, 1); + if (width) *width = data.width; + if (height) *height = data.height; + if (ratio_code) *ratio_code = data.ratio_code; + if (format) *format = data.format; + return result; +} + int xine_get_video_frame (xine_stream_t *stream, int timestamp, /* msec */ int *width, int *height, @@ -2084,7 +2259,10 @@ void xine_log (xine_t *this, int buf, const char *format, ...) { vsnprintf(buffer, SCRATCH_LINE_LEN_MAX, format, argp); printf("%s", buffer); va_end (argp); - } + } + + if (this->log_cb) + this->log_cb (this->log_cb_user_data, buf); } void xine_vlog(xine_t *this, int buf, const char *format, @@ -2093,6 +2271,9 @@ void xine_vlog(xine_t *this, int buf, const char *format, check_log_alloc (this, buf); this->log_buffers[buf]->scratch_printf(this->log_buffers[buf], format, args); + + if (this->log_cb) + this->log_cb (this->log_cb_user_data, buf); } char *const *xine_get_log (xine_t *this, int buf) { @@ -2107,12 +2288,10 @@ char *const *xine_get_log (xine_t *this, int buf) { } void xine_register_log_cb (xine_t *this, xine_log_cb_t cb, void *user_data) { - - printf ("xine: xine_register_log_cb: not implemented yet.\n"); - _x_abort(); + this->log_cb = cb; + this->log_cb_user_data = user_data; } - int xine_get_error (xine_stream_t *stream) { return stream->err; } diff --git a/src/xine-engine/xine_interface.c b/src/xine-engine/xine_interface.c index 50d8796e8..0438aedfa 100644 --- a/src/xine-engine/xine_interface.c +++ b/src/xine-engine/xine_interface.c @@ -527,6 +527,9 @@ void xine_set_param (xine_stream_t *stream, int param, int value) { case XINE_PARAM_GAPLESS_SWITCH: stream->gapless_switch = !!value; + if( stream->gapless_switch && !stream->early_finish_event ) { + xprintf (stream->xine, XINE_VERBOSITY_DEBUG, "frontend possibly buggy: gapless_switch without early_finish_event\n"); + } break; default: @@ -739,6 +742,8 @@ uint32_t xine_get_stream_info (xine_stream_t *stream, int info) { case XINE_STREAM_INFO_IGNORE_AUDIO: case XINE_STREAM_INFO_IGNORE_SPU: case XINE_STREAM_INFO_VIDEO_HAS_STILL: + case XINE_STREAM_INFO_SKIPPED_FRAMES: + case XINE_STREAM_INFO_DISCARDED_FRAMES: case XINE_STREAM_INFO_VIDEO_AFD: case XINE_STREAM_INFO_DVD_TITLE_NUMBER: case XINE_STREAM_INFO_DVD_TITLE_COUNT: @@ -945,7 +950,7 @@ int _x_message(xine_stream_t *stream, int type, ...) { xine_ui_message_data_t *data; xine_event_t event; const char *explanation; - int size; + size_t size; int n; va_list ap; char *s, *params; @@ -990,7 +995,7 @@ int _x_message(xine_stream_t *stream, int type, ...) { args[n] = NULL; size += sizeof(xine_ui_message_data_t) + 1; - data = xine_xmalloc( size ); + data = calloc(1, size ); strcpy(data->compatibility.str, "Upgrade your frontend to see the error messages"); data->type = type; diff --git a/src/xine-engine/xine_internal.h b/src/xine-engine/xine_internal.h index 9b69f16f1..945157fc2 100644 --- a/src/xine-engine/xine_internal.h +++ b/src/xine-engine/xine_internal.h @@ -117,6 +117,9 @@ struct xine_s { #ifdef XINE_ENGINE_INTERNAL xine_ticket_t *port_ticket; pthread_mutex_t log_lock; + + xine_log_cb_t log_cb; + void *log_cb_user_data; #endif }; @@ -333,6 +336,7 @@ struct xine_stream_s { int demux_thread_running; pthread_mutex_t demux_lock; int demux_action_pending; + pthread_cond_t demux_resume; pthread_mutex_t demux_mutex; /* used in _x_demux_... functions to synchronize order of pairwise A/V buffer operations */ extra_info_t *current_extra_info; @@ -357,6 +361,7 @@ struct xine_stream_s { int early_finish_event; /* do not wait fifos get empty before sending event */ int gapless_switch; /* next stream switch will be gapless */ int delay_finish_event; /* delay event in 1/10 sec units. 0=>no delay, -1=>forever */ + int keep_ao_driver_open; #endif }; @@ -388,8 +393,8 @@ input_plugin_t *_x_find_input_plugin (xine_stream_t *stream, const char *mrl) XI demux_plugin_t *_x_find_demux_plugin (xine_stream_t *stream, input_plugin_t *input) XINE_PROTECTED; demux_plugin_t *_x_find_demux_plugin_by_name (xine_stream_t *stream, const char *name, input_plugin_t *input) XINE_PROTECTED; demux_plugin_t *_x_find_demux_plugin_last_probe(xine_stream_t *stream, const char *last_demux_name, input_plugin_t *input) XINE_PROTECTED; -input_plugin_t *_x_rip_plugin_get_instance (xine_stream_t *stream, const char *filename) XINE_PROTECTED; -input_plugin_t *_x_cache_plugin_get_instance (xine_stream_t *stream, int readahead_size) XINE_PROTECTED; +input_plugin_t *_x_rip_plugin_get_instance (xine_stream_t *stream, const char *filename) XINE_MALLOC XINE_PROTECTED; +input_plugin_t *_x_cache_plugin_get_instance (xine_stream_t *stream, int readahead_size) XINE_MALLOC XINE_PROTECTED; void _x_free_input_plugin (xine_stream_t *stream, input_plugin_t *input) XINE_PROTECTED; void _x_free_demux_plugin (xine_stream_t *stream, demux_plugin_t *demux) XINE_PROTECTED; diff --git a/src/xine-utils/Makefile.am b/src/xine-utils/Makefile.am index 95de06b9e..501f489fe 100644 --- a/src/xine-utils/Makefile.am +++ b/src/xine-utils/Makefile.am @@ -12,7 +12,7 @@ endif endif AM_CFLAGS = $(X_CFLAGS) $(VISIBILITY_FLAG) -AM_CPPFLAGS=-DXINE_LIBRARY_COMPILE +AM_CPPFLAGS= -DXINE_LIBRARY_COMPILE libxineutils_la_SOURCES = $(pppc_files) \ cpu_accel.c \ @@ -37,6 +37,7 @@ xineinclude_HEADERS = \ compat.h \ xine_buffer.h \ xineutils.h \ + xine_mmx.h \ xmllexer.h \ xmlparser.h \ list.h \ @@ -46,5 +47,5 @@ xineinclude_HEADERS = \ ring_buffer.h -noinst_HEADERS = ppcasm_string.h xine_check.h +noinst_HEADERS = ppcasm_string.h mangle.h diff --git a/src/xine-utils/array.c b/src/xine-utils/array.c index 6c226c7ef..f6989fbb6 100644 --- a/src/xine-utils/array.c +++ b/src/xine-utils/array.c @@ -56,7 +56,7 @@ xine_array_t *xine_array_new(size_t initial_size) { if (initial_size < MIN_CHUNK_SIZE) initial_size = MIN_CHUNK_SIZE; - new_array->chunk = (void**)malloc(sizeof(void*) * initial_size); + new_array->chunk = (void**)calloc(initial_size, sizeof(void*)); if (!new_array->chunk) { free(new_array); return NULL; diff --git a/src/xine-utils/array.h b/src/xine-utils/array.h index ae2093823..44f3c7632 100644 --- a/src/xine-utils/array.h +++ b/src/xine-utils/array.h @@ -27,7 +27,7 @@ typedef struct xine_array_s xine_array_t; /* Constructor */ -xine_array_t *xine_array_new(size_t initial_size) XINE_PROTECTED; +xine_array_t *xine_array_new(size_t initial_size) XINE_MALLOC XINE_PROTECTED; /* Destructor */ void xine_array_delete(xine_array_t *array) XINE_PROTECTED; diff --git a/src/xine-utils/attributes.h b/src/xine-utils/attributes.h index 563832e5c..d7a0e2f1e 100644 --- a/src/xine-utils/attributes.h +++ b/src/xine-utils/attributes.h @@ -1,7 +1,7 @@ /* * attributes.h * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> - * Copyright (C) 2001-2007 xine developers + * Copyright (C) 2001-2008 xine developers * * This file was originally part of mpeg2dec, a free MPEG-2 video stream * decoder. @@ -32,20 +32,29 @@ #define ATTR_ALIGN(align) #endif -/* disable GNU __attribute__ extension, when not compiling with GNU C */ -#if defined(__GNUC__) || defined (__ICC) -#ifndef ATTRIBUTE_PACKED -#define ATTRIBUTE_PACKED 1 -#endif -#else -#undef ATTRIBUTE_PACKED -#ifndef __attribute__ -#define __attribute__(x) /**/ -#endif /* __attribute __*/ -#endif - #ifdef XINE_COMPILE # include "configure.h" +#else +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95 ) +# define SUPPORT_ATTRIBUTE_PACKED 1 +# endif + +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3 ) +# define SUPPORT_ATTRIBUTE_DEPRECATED 1 +# define SUPPORT_ATTRIBUTE_FORMAT 1 +# define SUPPORT_ATTRIBUTE_FORMAT_ARG 1 +# define SUPPORT_ATTRIBUTE_MALLOC 1 +# define SUPPORT_ATTRIBUTE_UNUSED 1 +# define SUPPORT_ATTRIBUTE_CONST 1 +# endif + +# if __GNUC__ >= 4 +# define SUPPORT_ATTRIBUTE_VISIBILITY_DEFAULT 1 +# if __ELF__ +# define SUPPORT_ATTRIBUTE_VISIBILITY_PROTECTED 1 +# endif +# define SUPPORT_ATTRIBUTE_SENTINEL 1 +# endif #endif /* Export protected only for libxine functions */ @@ -63,6 +72,12 @@ # define XINE_SENTINEL #endif +#if defined(SUPPORT_ATTRIBUTE_DEPRECATED) && !defined(XINE_COMPILE) +# define XINE_DEPRECATED __attribute__((__deprecated__)) +#else +# define XINE_DEPRECATED +#endif + #ifndef __attr_unused # ifdef SUPPORT_ATTRIBUTE_UNUSED # define __attr_unused __attribute__((__unused__)) @@ -74,8 +89,10 @@ /* Format attributes */ #ifdef SUPPORT_ATTRIBUTE_FORMAT # define XINE_FORMAT_PRINTF(fmt,var) __attribute__((__format__(__printf__, fmt, var))) +# define XINE_FORMAT_SCANF(fmt,var) __attribute__((__format__(__scanf__, fmt, var))) #else # define XINE_FORMAT_PRINTF(fmt,var) +# define XINE_FORMAT_SCANF(fmt,var) #endif #ifdef SUPPORT_ATTRIBUTE_FORMAT_ARG # define XINE_FORMAT_PRINTF_ARG(fmt) __attribute__((__format_arg__(fmt))) @@ -83,4 +100,22 @@ # define XINE_FORMAT_PRINTF_ARG(fmt) #endif +#ifdef SUPPORT_ATTRIBUTE_MALLOC +# define XINE_MALLOC __attribute__((__malloc__)) +#else +# define XINE_MALLOC +#endif + +#ifdef SUPPORT_ATTRIBUTE_PACKED +# define XINE_PACKED __attribute__((__packed__)) +#else +# define XINE_PACKED +#endif + +#ifdef SUPPORT_ATTRIBUTE_CONST +# define XINE_CONST __attribute__((__const__)) +#else +# define XINE_CONST +#endif + #endif /* ATTRIBUTE_H_ */ diff --git a/src/xine-utils/color.c b/src/xine-utils/color.c index 0b9cf0188..f5ebf6c00 100644 --- a/src/xine-utils/color.c +++ b/src/xine-utils/color.c @@ -159,18 +159,14 @@ void (*yuy2_to_yv12) * and height passed to it. The width must be divisible by 2. */ void init_yuv_planes(yuv_planes_t *yuv_planes, int width, int height) { - - int plane_size; - memset (yuv_planes, 0, sizeof (yuv_planes)); yuv_planes->row_width = width; yuv_planes->row_count = height; - plane_size = yuv_planes->row_width * yuv_planes->row_count; - yuv_planes->y = xine_xmalloc(plane_size); - yuv_planes->u = xine_xmalloc(plane_size); - yuv_planes->v = xine_xmalloc(plane_size); + yuv_planes->y = calloc(width, height); + yuv_planes->u = calloc(width, height); + yuv_planes->v = calloc(width, height); } /* diff --git a/src/xine-utils/cpu_accel.c b/src/xine-utils/cpu_accel.c index c241dd7ef..d6c4bd9a8 100644 --- a/src/xine-utils/cpu_accel.c +++ b/src/xine-utils/cpu_accel.c @@ -40,6 +40,10 @@ #include "xineutils.h" +#if defined(PIC) && ! defined(__PIC__) +#define __PIC__ +#endif + #if defined(ARCH_X86) || defined(ARCH_X86_64) static jmp_buf sigill_return; diff --git a/src/xine-utils/list.c b/src/xine-utils/list.c index 65bdaec26..eb654a3e3 100644 --- a/src/xine-utils/list.c +++ b/src/xine-utils/list.c @@ -67,9 +67,9 @@ struct xine_list_s { /* Allocates a new chunk of n elements * One malloc call is used to allocate the struct and the elements. */ -static xine_list_chunk_t *xine_list_alloc_chunk(size_t size) { +static xine_list_chunk_t *XINE_MALLOC xine_list_alloc_chunk(size_t size) { xine_list_chunk_t *new_chunk; - size_t chunk_mem_size;; + size_t chunk_mem_size; chunk_mem_size = sizeof(xine_list_chunk_t); chunk_mem_size += sizeof(xine_list_elem_t) * size; diff --git a/src/xine-utils/list.h b/src/xine-utils/list.h index e00e30d6c..f05ed2b0e 100644 --- a/src/xine-utils/list.h +++ b/src/xine-utils/list.h @@ -48,7 +48,7 @@ typedef struct xine_list_s xine_list_t; typedef void* xine_list_iterator_t; /* Constructor */ -xine_list_t *xine_list_new(void) XINE_PROTECTED; +xine_list_t *xine_list_new(void) XINE_MALLOC XINE_PROTECTED; /* Destructor */ void xine_list_delete(xine_list_t *list) XINE_PROTECTED; diff --git a/src/xine-utils/mangle.h b/src/xine-utils/mangle.h new file mode 100644 index 000000000..746317fa5 --- /dev/null +++ b/src/xine-utils/mangle.h @@ -0,0 +1,54 @@ +/* + * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> + * copyright (c) 2008 the xine-project + * + * This file is part of FFmpeg. + * + * xine 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. + * + * xine 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, USA + */ + +/** + * @file + * + * @brief MANGLE definition from FFmpeg project, until the code is ported + * not to require this (considered an hack by the FFmpeg project. + */ + +#ifndef _XINE_MANGLE_H +#define _XINE_MANGLE_H + +#if defined(PIC) && ! defined(__PIC__) +#define __PIC__ +#endif + +// Use rip-relative addressing if compiling PIC code on x86-64. +#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__DJGPP__) || \ + defined(__OS2__) || (defined (__OpenBSD__) && !defined(__ELF__)) +# if defined(__x86_64__) && defined(__PIC__) +# define MANGLE(a) "_" #a"(%%rip)" +# else +# define MANGLE(a) "_" #a +# endif +#else +# if defined(__x86_64__) && defined(__PIC__) +# define MANGLE(a) #a"(%%rip)" +# elif defined(__APPLE__) +# define MANGLE(a) "_" #a +# else +# define MANGLE(a) #a +# endif +#endif + +#endif diff --git a/src/xine-utils/monitor.c b/src/xine-utils/monitor.c index fb323055c..650c10f99 100644 --- a/src/xine-utils/monitor.c +++ b/src/xine-utils/monitor.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2003 the xine project + * Copyright (C) 2000-2008 the xine project * * This file is part of xine, a free video player. * @@ -38,13 +38,10 @@ static long profiler_calls[MAX_ID] ; static const char *profiler_label[MAX_ID] ; void xine_profiler_init () { - int i; - for (i=0; i<MAX_ID; i++) { - profiler_times[i] = 0; - profiler_start[i] = 0; - profiler_calls[i] = 0; - profiler_label[i] = NULL; - } + memset(profiler_times, 0, sizeof(profiler_times)); + memset(profiler_start, 0, sizeof(profiler_start)); + memset(profiler_calls, 0, sizeof(profiler_calls)); + memset(profiler_label, 0, sizeof(profiler_label)); } int xine_profiler_allocate_slot (const char *label) { diff --git a/src/xine-utils/pool.c b/src/xine-utils/pool.c index a1fddadd9..1b7fd63f3 100644 --- a/src/xine-utils/pool.c +++ b/src/xine-utils/pool.c @@ -55,7 +55,7 @@ struct xine_pool_s { /* Allocates a new chunk of n elements * One malloc call is used to allocate the struct and the elements. */ -static xine_pool_chunk_t *xine_pool_alloc_chunk(size_t object_size, size_t object_count) { +static xine_pool_chunk_t *XINE_MALLOC xine_pool_alloc_chunk(size_t object_size, size_t object_count) { xine_pool_chunk_t *new_chunk; size_t chunk_mem_size;; diff --git a/src/xine-utils/pool.h b/src/xine-utils/pool.h index 918da82a2..2667b7fdc 100644 --- a/src/xine-utils/pool.h +++ b/src/xine-utils/pool.h @@ -36,7 +36,7 @@ xine_pool_t *xine_pool_new(size_t object_size, void (create_object)(void *object), void (prepare_object)(void *object), void (return_object)(void *object), - void (delete_object)(void *object)) XINE_PROTECTED; + void (delete_object)(void *object)) XINE_MALLOC XINE_PROTECTED; /* Deletes a pool */ void xine_pool_delete(xine_pool_t *pool) XINE_PROTECTED; diff --git a/src/xine-utils/ring_buffer.h b/src/xine-utils/ring_buffer.h index efcffd3b7..5f104dc77 100644 --- a/src/xine-utils/ring_buffer.h +++ b/src/xine-utils/ring_buffer.h @@ -22,7 +22,7 @@ typedef struct xine_ring_buffer_s xine_ring_buffer_t; /* Creates a new ring buffer */ -xine_ring_buffer_t *xine_ring_buffer_new(size_t size) XINE_PROTECTED; +xine_ring_buffer_t *xine_ring_buffer_new(size_t size) XINE_MALLOC XINE_PROTECTED; /* Deletes a ring buffer */ void xine_ring_buffer_delete(xine_ring_buffer_t *ring_buffer) XINE_PROTECTED; diff --git a/src/xine-utils/sorted_array.h b/src/xine-utils/sorted_array.h index a1894eca3..c6fdd1c25 100644 --- a/src/xine-utils/sorted_array.h +++ b/src/xine-utils/sorted_array.h @@ -63,7 +63,7 @@ typedef struct xine_sarray_s xine_sarray_t; typedef int (*xine_sarray_comparator_t)(void*, void*); /* Constructor */ -xine_sarray_t *xine_sarray_new(size_t initial_size, xine_sarray_comparator_t comparator) XINE_PROTECTED; +xine_sarray_t *xine_sarray_new(size_t initial_size, xine_sarray_comparator_t comparator) XINE_MALLOC XINE_PROTECTED; /* Destructor */ void xine_sarray_delete(xine_sarray_t *sarray) XINE_PROTECTED; diff --git a/src/xine-utils/utils.c b/src/xine-utils/utils.c index c5f18a699..689b68502 100644 --- a/src/xine-utils/utils.c +++ b/src/xine-utils/utils.c @@ -236,7 +236,25 @@ static const lang_locale_t lang_locales[] = { { NULL, NULL, NULL, NULL } }; - +/** + * @brief Allocate and clean memory size_t 'size', then return the + * pointer to the allocated memory. + * @param size Size of the memory area to allocate. + * + * @return A pointer to the allocated memory area, or NULL in case of + * error. + * + * The behaviour of this function differs from standard malloc() as + * xine_xmalloc(0) will not return a NULL pointer, but rather a + * pointer to a memory area of size 1 byte. + * + * The NULL value is only ever returned in case of an error in + * malloc(), and is reported to stderr stream. + * + * @deprecated This function has been deprecated, as the behaviour of + * allocating a 1 byte memory area on zero size is almost + * never desired, and the function is thus mostly misused. + */ void *xine_xmalloc(size_t size) { void *ptr; @@ -257,7 +275,7 @@ void *xine_xmalloc_aligned(size_t alignment, size_t size, void **base) { char *ptr; - *base = ptr = xine_xmalloc (size+alignment); + *base = ptr = calloc(1, size+alignment); while ((size_t) ptr % alignment) ptr++; @@ -324,22 +342,18 @@ const char *xine_get_homedir(void) { char *s; int len; - if (!homedir[0]) { - len = xine_strcpy_command(GetCommandLine(), homedir, sizeof(homedir)); - s = strdup(homedir); - GetFullPathName(s, sizeof(homedir), homedir, NULL); - free(s); - if ((s = strrchr(homedir, '\\'))) *s = '\0'; - } + len = xine_strcpy_command(GetCommandLine(), homedir, sizeof(homedir)); + s = strdup(homedir); + GetFullPathName(s, sizeof(homedir), homedir, NULL); + free(s); + if ((s = strrchr(homedir, '\\'))) + *s = '\0'; return homedir; #else struct passwd pwd, *pw = NULL; static char homedir[BUFSIZ] = {0,}; - if(homedir[0]) - return homedir; - #ifdef HAVE_GETPWUID_R if(getpwuid_r(getuid(), &pwd, homedir, sizeof(homedir), &pw) != 0 || pw == NULL) { #else @@ -375,6 +389,17 @@ static void xine_get_rootdir(char *rootdir, size_t maxlen) { if ((s = strrchr(rootdir, XINE_DIRECTORY_SEPARATOR_CHAR))) *s = '\0'; } +const char *xine_get_pluginroot(void) { + static char pluginroot[1024] = {0, }; + + if (!pluginroot[0]) { + xine_get_rootdir(pluginroot, sizeof(pluginroot) - strlen(XINE_REL_PLUGINROOT) - 1); + strcat(pluginroot, XINE_DIRECTORY_SEPARATOR_STRING XINE_REL_PLUGINROOT); + } + + return pluginroot; +} + const char *xine_get_plugindir(void) { static char plugindir[1024] = {0, }; @@ -431,23 +456,22 @@ char *xine_chomp(char *str) { * a thread-safe usecond sleep */ void xine_usec_sleep(unsigned usec) { -#if 0 -#if HAVE_NANOSLEEP +#ifdef WIN32 + /* select does not work on win32 */ + Sleep(usec / 1000); +#else +# if 0 +# if HAVE_NANOSLEEP /* nanosleep is prefered on solaris, because it's mt-safe */ struct timespec ts, remaining; - ts.tv_sec = usec / 1000000; ts.tv_nsec = (usec % 1000000) * 1000; while (nanosleep (&ts, &remaining) == -1 && errno == EINTR) ts = remaining; -#else -# if WIN32 - Sleep(usec / 1000); -# else +# else usleep(usec); -# endif -#endif -#else +# endif +# else if (usec < 10000) { usec = 10000; } @@ -455,6 +479,7 @@ void xine_usec_sleep(unsigned usec) { tm.tv_sec = usec / 1000000; tm.tv_usec = usec % 1000000; select(0, 0, 0, 0, &tm); +# endif #endif } @@ -497,7 +522,7 @@ void xine_hexdump (const char *buf, int length) { static const lang_locale_t *_get_first_lang_locale(const char *lcal) { const lang_locale_t *llocale; - int lang_len; + size_t lang_len; char *mod; if(lcal && *lcal) { @@ -664,3 +689,11 @@ int xine_monotonic_clock(struct timeval *tv, struct timezone *tz) #endif } + +char *xine_strcat_realloc (char **dest, char *append) +{ + char *newstr = realloc (*dest, (*dest ? strlen (*dest) : 0) + strlen (append) + 1); + if (newstr) + strcat (*dest = newstr, append); + return newstr; +} diff --git a/src/xine-utils/xine_buffer.c b/src/xine-utils/xine_buffer.c index 190ab5197..44d0acbab 100644 --- a/src/xine-utils/xine_buffer.c +++ b/src/xine-utils/xine_buffer.c @@ -47,6 +47,10 @@ * (eg during reallocation). The user must respect that. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -117,7 +121,7 @@ typedef struct { */ void *xine_buffer_init(int chunk_size) { - uint8_t *data=xine_xmalloc(chunk_size+XINE_BUFFER_HEADER_SIZE); + uint8_t *data=calloc(1, chunk_size+XINE_BUFFER_HEADER_SIZE); xine_buffer_header_t *header=(xine_buffer_header_t*)data; header->size=chunk_size; @@ -162,7 +166,7 @@ void *xine_buffer_dup(const void *buf) { CHECK_MAGIC(buf); #endif -new=xine_xmalloc(GET_HEADER(buf)->size+XINE_BUFFER_HEADER_SIZE); + new = malloc(GET_HEADER(buf)->size+XINE_BUFFER_HEADER_SIZE); xine_fast_memcpy(new, ((uint8_t*)buf)-XINE_BUFFER_HEADER_SIZE, GET_HEADER(buf)->size+XINE_BUFFER_HEADER_SIZE); diff --git a/src/xine-utils/xine_check.c b/src/xine-utils/xine_check.c index f00a23832..b8465f3f8 100644 --- a/src/xine-utils/xine_check.c +++ b/src/xine-utils/xine_check.c @@ -44,7 +44,6 @@ #include <fcntl.h> #include <unistd.h> -#include "xine_check.h" #include "xineutils.h" #if defined(__linux__) @@ -102,38 +101,7 @@ set_hc_result(xine_health_check_t* hc, int state, const char *format, ...) #if defined(__linux__) -xine_health_check_t* xine_health_check (xine_health_check_t* hc, int check_num) { - - switch(check_num) { - case CHECK_KERNEL: - hc = _x_health_check_kernel (hc); - break; - case CHECK_MTRR: - hc = _x_health_check_mtrr (hc); - break; - case CHECK_CDROM: - hc = _x_health_check_cdrom (hc); - break; - case CHECK_DVDROM: - hc = _x_health_check_dvdrom (hc); - break; - case CHECK_DMA: - hc = _x_health_check_dma (hc); - break; - case CHECK_X: - hc = _x_health_check_x (hc); - break; - case CHECK_XV: - hc = _x_health_check_xv (hc); - break; - default: - hc->status = XINE_HEALTH_CHECK_NO_SUCH_CHECK; - } - - return hc; -} - -xine_health_check_t* _x_health_check_kernel (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_kernel (xine_health_check_t* hc) { struct utsname kernel; hc->title = "Check for kernel version"; @@ -153,7 +121,7 @@ xine_health_check_t* _x_health_check_kernel (xine_health_check_t* hc) { } #if defined(ARCH_X86) || defined(ARCH_X86_64) -xine_health_check_t* _x_health_check_mtrr (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_mtrr (xine_health_check_t* hc) { FILE *fd; hc->title = "Check for MTRR support"; @@ -170,7 +138,7 @@ xine_health_check_t* _x_health_check_mtrr (xine_health_check_t* hc) { return hc; } #else -xine_health_check_t* _x_health_check_mtrr (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_mtrr (xine_health_check_t* hc) { hc->title = "Check for MTRR support"; hc->explanation = "Don't worry about this one"; @@ -181,7 +149,7 @@ xine_health_check_t* _x_health_check_mtrr (xine_health_check_t* hc) { } #endif -xine_health_check_t* _x_health_check_cdrom (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_cdrom (xine_health_check_t* hc) { struct stat cdrom_st; int fd; @@ -217,7 +185,7 @@ xine_health_check_t* _x_health_check_cdrom (xine_health_check_t* hc) { return hc; } -xine_health_check_t* _x_health_check_dvdrom(xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_dvdrom(xine_health_check_t* hc) { struct stat dvdrom_st; int fd; @@ -253,7 +221,7 @@ xine_health_check_t* _x_health_check_dvdrom(xine_health_check_t* hc) { return hc; } -xine_health_check_t* _x_health_check_dma (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_dma (xine_health_check_t* hc) { int is_scsi_dev = 0; int fd = 0; @@ -307,7 +275,7 @@ xine_health_check_t* _x_health_check_dma (xine_health_check_t* hc) { } -xine_health_check_t* _x_health_check_x (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_x (xine_health_check_t* hc) { char* env_display = getenv("DISPLAY"); hc->title = "Check for X11 environment"; @@ -323,7 +291,7 @@ xine_health_check_t* _x_health_check_x (xine_health_check_t* hc) { return hc; } -xine_health_check_t* _x_health_check_xv (xine_health_check_t* hc) { +static xine_health_check_t* _x_health_check_xv (xine_health_check_t* hc) { #ifdef HAVE_X11 #ifdef HAVE_XV @@ -497,6 +465,37 @@ xine_health_check_t* _x_health_check_xv (xine_health_check_t* hc) { #endif /* ! HAVE_X11 */ } +xine_health_check_t* xine_health_check (xine_health_check_t* hc, int check_num) { + + switch(check_num) { + case CHECK_KERNEL: + hc = _x_health_check_kernel (hc); + break; + case CHECK_MTRR: + hc = _x_health_check_mtrr (hc); + break; + case CHECK_CDROM: + hc = _x_health_check_cdrom (hc); + break; + case CHECK_DVDROM: + hc = _x_health_check_dvdrom (hc); + break; + case CHECK_DMA: + hc = _x_health_check_dma (hc); + break; + case CHECK_X: + hc = _x_health_check_x (hc); + break; + case CHECK_XV: + hc = _x_health_check_xv (hc); + break; + default: + hc->status = XINE_HEALTH_CHECK_NO_SUCH_CHECK; + } + + return hc; +} + #else /* !__linux__ */ xine_health_check_t* xine_health_check (xine_health_check_t* hc, int check_num) { hc->title = "xine health check not supported on this platform"; diff --git a/src/xine-utils/xine_check.h b/src/xine-utils/xine_check.h deleted file mode 100644 index 4b21bf74e..000000000 --- a/src/xine-utils/xine_check.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef XINE_CHECK_H -#define XINE_CHECK_H -#include <stdio.h> - -#ifdef XINE_COMPILE -# include "xine.h" -#else -# include <xine.h> -#endif - -/* - * Start checking xine setup here - * - * cdrom_dev = Name of the device link for the cdrom drive (e.g. /dev/cdrom) - * dvd_dev = Name of the device link for the dvd drive (e.g. /dev/dvd) - */ - -/* Get Kernel information */ -xine_health_check_t* _x_health_check_kernel(xine_health_check_t*); - -/* health_check MTRR */ -xine_health_check_t* _x_health_check_mtrr(xine_health_check_t*); - -/* health_check CDROM */ -xine_health_check_t* _x_health_check_cdrom(xine_health_check_t*); - -/* health_check DVDROM */ -xine_health_check_t* _x_health_check_dvdrom(xine_health_check_t*); - -/* health_check DMA settings of DVD drive*/ -xine_health_check_t* _x_health_check_dma(xine_health_check_t*); - -/* health_check X */ -xine_health_check_t* _x_health_check_x(xine_health_check_t*); - -/* health_check Xv extension */ -xine_health_check_t* _x_health_check_xv(xine_health_check_t*); - -#endif diff --git a/src/xine-utils/xine_mmx.h b/src/xine-utils/xine_mmx.h new file mode 100644 index 000000000..440d1efcc --- /dev/null +++ b/src/xine-utils/xine_mmx.h @@ -0,0 +1,490 @@ +/* + * Copyright (C) 2000-2006 the xine project + * + * This file is part of xine, a free video player. + * + * xine 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. + * + * xine 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, USA + */ +#ifndef XINE_MMX_H +#define XINE_MMX_H + +#if defined(ARCH_X86) || defined(ARCH_X86_64) + +typedef union { + int64_t q; /* Quadword (64-bit) value */ + uint64_t uq; /* Unsigned Quadword */ + int d[2]; /* 2 Doubleword (32-bit) values */ + unsigned int ud[2]; /* 2 Unsigned Doubleword */ + short w[4]; /* 4 Word (16-bit) values */ + unsigned short uw[4]; /* 4 Unsigned Word */ + char b[8]; /* 8 Byte (8-bit) values */ + unsigned char ub[8]; /* 8 Unsigned Byte */ + float s[2]; /* Single-precision (32-bit) value */ +} ATTR_ALIGN(8) mmx_t; /* On an 8-byte (64-bit) boundary */ + + + +#define mmx_i2r(op,imm,reg) \ + __asm__ __volatile__ (#op " %0, %%" #reg \ + : /* nothing */ \ + : "i" (imm) ) + +#define mmx_m2r(op,mem,reg) \ + __asm__ __volatile__ (#op " %0, %%" #reg \ + : /* nothing */ \ + : "m" (mem)) + +#define mmx_r2m(op,reg,mem) \ + __asm__ __volatile__ (#op " %%" #reg ", %0" \ + : "=m" (mem) \ + : /* nothing */ ) + +#define mmx_r2r(op,regs,regd) \ + __asm__ __volatile__ (#op " %" #regs ", %" #regd) + + +#define emms() __asm__ __volatile__ ("emms") + +#define movd_m2r(var,reg) mmx_m2r (movd, var, reg) +#define movd_r2m(reg,var) mmx_r2m (movd, reg, var) +#define movd_r2r(regs,regd) mmx_r2r (movd, regs, regd) + +#define movq_m2r(var,reg) mmx_m2r (movq, var, reg) +#define movq_r2m(reg,var) mmx_r2m (movq, reg, var) +#define movq_r2r(regs,regd) mmx_r2r (movq, regs, regd) + +#define packssdw_m2r(var,reg) mmx_m2r (packssdw, var, reg) +#define packssdw_r2r(regs,regd) mmx_r2r (packssdw, regs, regd) +#define packsswb_m2r(var,reg) mmx_m2r (packsswb, var, reg) +#define packsswb_r2r(regs,regd) mmx_r2r (packsswb, regs, regd) + +#define packuswb_m2r(var,reg) mmx_m2r (packuswb, var, reg) +#define packuswb_r2r(regs,regd) mmx_r2r (packuswb, regs, regd) + +#define paddb_m2r(var,reg) mmx_m2r (paddb, var, reg) +#define paddb_r2r(regs,regd) mmx_r2r (paddb, regs, regd) +#define paddd_m2r(var,reg) mmx_m2r (paddd, var, reg) +#define paddd_r2r(regs,regd) mmx_r2r (paddd, regs, regd) +#define paddw_m2r(var,reg) mmx_m2r (paddw, var, reg) +#define paddw_r2r(regs,regd) mmx_r2r (paddw, regs, regd) + +#define paddsb_m2r(var,reg) mmx_m2r (paddsb, var, reg) +#define paddsb_r2r(regs,regd) mmx_r2r (paddsb, regs, regd) +#define paddsw_m2r(var,reg) mmx_m2r (paddsw, var, reg) +#define paddsw_r2r(regs,regd) mmx_r2r (paddsw, regs, regd) + +#define paddusb_m2r(var,reg) mmx_m2r (paddusb, var, reg) +#define paddusb_r2r(regs,regd) mmx_r2r (paddusb, regs, regd) +#define paddusw_m2r(var,reg) mmx_m2r (paddusw, var, reg) +#define paddusw_r2r(regs,regd) mmx_r2r (paddusw, regs, regd) + +#define pand_m2r(var,reg) mmx_m2r (pand, var, reg) +#define pand_r2r(regs,regd) mmx_r2r (pand, regs, regd) + +#define pandn_m2r(var,reg) mmx_m2r (pandn, var, reg) +#define pandn_r2r(regs,regd) mmx_r2r (pandn, regs, regd) + +#define pcmpeqb_m2r(var,reg) mmx_m2r (pcmpeqb, var, reg) +#define pcmpeqb_r2r(regs,regd) mmx_r2r (pcmpeqb, regs, regd) +#define pcmpeqd_m2r(var,reg) mmx_m2r (pcmpeqd, var, reg) +#define pcmpeqd_r2r(regs,regd) mmx_r2r (pcmpeqd, regs, regd) +#define pcmpeqw_m2r(var,reg) mmx_m2r (pcmpeqw, var, reg) +#define pcmpeqw_r2r(regs,regd) mmx_r2r (pcmpeqw, regs, regd) + +#define pcmpgtb_m2r(var,reg) mmx_m2r (pcmpgtb, var, reg) +#define pcmpgtb_r2r(regs,regd) mmx_r2r (pcmpgtb, regs, regd) +#define pcmpgtd_m2r(var,reg) mmx_m2r (pcmpgtd, var, reg) +#define pcmpgtd_r2r(regs,regd) mmx_r2r (pcmpgtd, regs, regd) +#define pcmpgtw_m2r(var,reg) mmx_m2r (pcmpgtw, var, reg) +#define pcmpgtw_r2r(regs,regd) mmx_r2r (pcmpgtw, regs, regd) + +#define pmaddwd_m2r(var,reg) mmx_m2r (pmaddwd, var, reg) +#define pmaddwd_r2r(regs,regd) mmx_r2r (pmaddwd, regs, regd) + +#define pmulhw_m2r(var,reg) mmx_m2r (pmulhw, var, reg) +#define pmulhw_r2r(regs,regd) mmx_r2r (pmulhw, regs, regd) + +#define pmullw_m2r(var,reg) mmx_m2r (pmullw, var, reg) +#define pmullw_r2r(regs,regd) mmx_r2r (pmullw, regs, regd) + +#define por_m2r(var,reg) mmx_m2r (por, var, reg) +#define por_r2r(regs,regd) mmx_r2r (por, regs, regd) + +#define pslld_i2r(imm,reg) mmx_i2r (pslld, imm, reg) +#define pslld_m2r(var,reg) mmx_m2r (pslld, var, reg) +#define pslld_r2r(regs,regd) mmx_r2r (pslld, regs, regd) +#define psllq_i2r(imm,reg) mmx_i2r (psllq, imm, reg) +#define psllq_m2r(var,reg) mmx_m2r (psllq, var, reg) +#define psllq_r2r(regs,regd) mmx_r2r (psllq, regs, regd) +#define psllw_i2r(imm,reg) mmx_i2r (psllw, imm, reg) +#define psllw_m2r(var,reg) mmx_m2r (psllw, var, reg) +#define psllw_r2r(regs,regd) mmx_r2r (psllw, regs, regd) + +#define psrad_i2r(imm,reg) mmx_i2r (psrad, imm, reg) +#define psrad_m2r(var,reg) mmx_m2r (psrad, var, reg) +#define psrad_r2r(regs,regd) mmx_r2r (psrad, regs, regd) +#define psraw_i2r(imm,reg) mmx_i2r (psraw, imm, reg) +#define psraw_m2r(var,reg) mmx_m2r (psraw, var, reg) +#define psraw_r2r(regs,regd) mmx_r2r (psraw, regs, regd) + +#define psrld_i2r(imm,reg) mmx_i2r (psrld, imm, reg) +#define psrld_m2r(var,reg) mmx_m2r (psrld, var, reg) +#define psrld_r2r(regs,regd) mmx_r2r (psrld, regs, regd) +#define psrlq_i2r(imm,reg) mmx_i2r (psrlq, imm, reg) +#define psrlq_m2r(var,reg) mmx_m2r (psrlq, var, reg) +#define psrlq_r2r(regs,regd) mmx_r2r (psrlq, regs, regd) +#define psrlw_i2r(imm,reg) mmx_i2r (psrlw, imm, reg) +#define psrlw_m2r(var,reg) mmx_m2r (psrlw, var, reg) +#define psrlw_r2r(regs,regd) mmx_r2r (psrlw, regs, regd) + +#define psubb_m2r(var,reg) mmx_m2r (psubb, var, reg) +#define psubb_r2r(regs,regd) mmx_r2r (psubb, regs, regd) +#define psubd_m2r(var,reg) mmx_m2r (psubd, var, reg) +#define psubd_r2r(regs,regd) mmx_r2r (psubd, regs, regd) +#define psubw_m2r(var,reg) mmx_m2r (psubw, var, reg) +#define psubw_r2r(regs,regd) mmx_r2r (psubw, regs, regd) + +#define psubsb_m2r(var,reg) mmx_m2r (psubsb, var, reg) +#define psubsb_r2r(regs,regd) mmx_r2r (psubsb, regs, regd) +#define psubsw_m2r(var,reg) mmx_m2r (psubsw, var, reg) +#define psubsw_r2r(regs,regd) mmx_r2r (psubsw, regs, regd) + +#define psubusb_m2r(var,reg) mmx_m2r (psubusb, var, reg) +#define psubusb_r2r(regs,regd) mmx_r2r (psubusb, regs, regd) +#define psubusw_m2r(var,reg) mmx_m2r (psubusw, var, reg) +#define psubusw_r2r(regs,regd) mmx_r2r (psubusw, regs, regd) + +#define punpckhbw_m2r(var,reg) mmx_m2r (punpckhbw, var, reg) +#define punpckhbw_r2r(regs,regd) mmx_r2r (punpckhbw, regs, regd) +#define punpckhdq_m2r(var,reg) mmx_m2r (punpckhdq, var, reg) +#define punpckhdq_r2r(regs,regd) mmx_r2r (punpckhdq, regs, regd) +#define punpckhwd_m2r(var,reg) mmx_m2r (punpckhwd, var, reg) +#define punpckhwd_r2r(regs,regd) mmx_r2r (punpckhwd, regs, regd) + +#define punpcklbw_m2r(var,reg) mmx_m2r (punpcklbw, var, reg) +#define punpcklbw_r2r(regs,regd) mmx_r2r (punpcklbw, regs, regd) +#define punpckldq_m2r(var,reg) mmx_m2r (punpckldq, var, reg) +#define punpckldq_r2r(regs,regd) mmx_r2r (punpckldq, regs, regd) +#define punpcklwd_m2r(var,reg) mmx_m2r (punpcklwd, var, reg) +#define punpcklwd_r2r(regs,regd) mmx_r2r (punpcklwd, regs, regd) + +#define pxor_m2r(var,reg) mmx_m2r (pxor, var, reg) +#define pxor_r2r(regs,regd) mmx_r2r (pxor, regs, regd) + + +/* 3DNOW extensions */ + +#define pavgusb_m2r(var,reg) mmx_m2r (pavgusb, var, reg) +#define pavgusb_r2r(regs,regd) mmx_r2r (pavgusb, regs, regd) + + +/* AMD MMX extensions - also available in intel SSE */ + + +#define mmx_m2ri(op,mem,reg,imm) \ + __asm__ __volatile__ (#op " %1, %0, %%" #reg \ + : /* nothing */ \ + : "X" (mem), "X" (imm)) +#define mmx_r2ri(op,regs,regd,imm) \ + __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \ + : /* nothing */ \ + : "X" (imm) ) + +#define mmx_fetch(mem,hint) \ + __asm__ __volatile__ ("prefetch" #hint " %0" \ + : /* nothing */ \ + : "X" (mem)) + + +#define maskmovq(regs,maskreg) mmx_r2ri (maskmovq, regs, maskreg) + +#define movntq_r2m(mmreg,var) mmx_r2m (movntq, mmreg, var) + +#define pavgb_m2r(var,reg) mmx_m2r (pavgb, var, reg) +#define pavgb_r2r(regs,regd) mmx_r2r (pavgb, regs, regd) +#define pavgw_m2r(var,reg) mmx_m2r (pavgw, var, reg) +#define pavgw_r2r(regs,regd) mmx_r2r (pavgw, regs, regd) + +#define pextrw_r2r(mmreg,reg,imm) mmx_r2ri (pextrw, mmreg, reg, imm) + +#define pinsrw_r2r(reg,mmreg,imm) mmx_r2ri (pinsrw, reg, mmreg, imm) + +#define pmaxsw_m2r(var,reg) mmx_m2r (pmaxsw, var, reg) +#define pmaxsw_r2r(regs,regd) mmx_r2r (pmaxsw, regs, regd) + +#define pmaxub_m2r(var,reg) mmx_m2r (pmaxub, var, reg) +#define pmaxub_r2r(regs,regd) mmx_r2r (pmaxub, regs, regd) + +#define pminsw_m2r(var,reg) mmx_m2r (pminsw, var, reg) +#define pminsw_r2r(regs,regd) mmx_r2r (pminsw, regs, regd) + +#define pminub_m2r(var,reg) mmx_m2r (pminub, var, reg) +#define pminub_r2r(regs,regd) mmx_r2r (pminub, regs, regd) + +#define pmovmskb(mmreg,reg) \ + __asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg) + +#define pmulhuw_m2r(var,reg) mmx_m2r (pmulhuw, var, reg) +#define pmulhuw_r2r(regs,regd) mmx_r2r (pmulhuw, regs, regd) + +#define prefetcht0(mem) mmx_fetch (mem, t0) +#define prefetcht1(mem) mmx_fetch (mem, t1) +#define prefetcht2(mem) mmx_fetch (mem, t2) +#define prefetchnta(mem) mmx_fetch (mem, nta) + +#define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg) +#define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd) + +#define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm) +#define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm) + +#define sfence() __asm__ __volatile__ ("sfence\n\t") + +typedef union { + float sf[4]; /* Single-precision (32-bit) value */ +} ATTR_ALIGN(16) sse_t; /* On a 16 byte (128-bit) boundary */ + + +#define sse_i2r(op, imm, reg) \ + __asm__ __volatile__ (#op " %0, %%" #reg \ + : /* nothing */ \ + : "X" (imm) ) + +#define sse_m2r(op, mem, reg) \ + __asm__ __volatile__ (#op " %0, %%" #reg \ + : /* nothing */ \ + : "X" (mem)) + +#define sse_r2m(op, reg, mem) \ + __asm__ __volatile__ (#op " %%" #reg ", %0" \ + : "=X" (mem) \ + : /* nothing */ ) + +#define sse_r2r(op, regs, regd) \ + __asm__ __volatile__ (#op " %" #regs ", %" #regd) + +#define sse_r2ri(op, regs, regd, imm) \ + __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \ + : /* nothing */ \ + : "X" (imm) ) + +#define sse_m2ri(op, mem, reg, subop) \ + __asm__ __volatile__ (#op " %0, %%" #reg ", " #subop \ + : /* nothing */ \ + : "X" (mem)) + + +#define movaps_m2r(var, reg) sse_m2r(movaps, var, reg) +#define movaps_r2m(reg, var) sse_r2m(movaps, reg, var) +#define movaps_r2r(regs, regd) sse_r2r(movaps, regs, regd) + +#define movntps_r2m(xmmreg, var) sse_r2m(movntps, xmmreg, var) + +#define movups_m2r(var, reg) sse_m2r(movups, var, reg) +#define movups_r2m(reg, var) sse_r2m(movups, reg, var) +#define movups_r2r(regs, regd) sse_r2r(movups, regs, regd) + +#define movhlps_r2r(regs, regd) sse_r2r(movhlps, regs, regd) + +#define movlhps_r2r(regs, regd) sse_r2r(movlhps, regs, regd) + +#define movhps_m2r(var, reg) sse_m2r(movhps, var, reg) +#define movhps_r2m(reg, var) sse_r2m(movhps, reg, var) + +#define movlps_m2r(var, reg) sse_m2r(movlps, var, reg) +#define movlps_r2m(reg, var) sse_r2m(movlps, reg, var) + +#define movss_m2r(var, reg) sse_m2r(movss, var, reg) +#define movss_r2m(reg, var) sse_r2m(movss, reg, var) +#define movss_r2r(regs, regd) sse_r2r(movss, regs, regd) + +#define shufps_m2r(var, reg, index) sse_m2ri(shufps, var, reg, index) +#define shufps_r2r(regs, regd, index) sse_r2ri(shufps, regs, regd, index) + +#define cvtpi2ps_m2r(var, xmmreg) sse_m2r(cvtpi2ps, var, xmmreg) +#define cvtpi2ps_r2r(mmreg, xmmreg) sse_r2r(cvtpi2ps, mmreg, xmmreg) + +#define cvtps2pi_m2r(var, mmreg) sse_m2r(cvtps2pi, var, mmreg) +#define cvtps2pi_r2r(xmmreg, mmreg) sse_r2r(cvtps2pi, mmreg, xmmreg) + +#define cvttps2pi_m2r(var, mmreg) sse_m2r(cvttps2pi, var, mmreg) +#define cvttps2pi_r2r(xmmreg, mmreg) sse_r2r(cvttps2pi, mmreg, xmmreg) + +#define cvtsi2ss_m2r(var, xmmreg) sse_m2r(cvtsi2ss, var, xmmreg) +#define cvtsi2ss_r2r(reg, xmmreg) sse_r2r(cvtsi2ss, reg, xmmreg) + +#define cvtss2si_m2r(var, reg) sse_m2r(cvtss2si, var, reg) +#define cvtss2si_r2r(xmmreg, reg) sse_r2r(cvtss2si, xmmreg, reg) + +#define cvttss2si_m2r(var, reg) sse_m2r(cvtss2si, var, reg) +#define cvttss2si_r2r(xmmreg, reg) sse_r2r(cvtss2si, xmmreg, reg) + +#define movmskps(xmmreg, reg) \ + __asm__ __volatile__ ("movmskps %" #xmmreg ", %" #reg) + +#define addps_m2r(var, reg) sse_m2r(addps, var, reg) +#define addps_r2r(regs, regd) sse_r2r(addps, regs, regd) + +#define addss_m2r(var, reg) sse_m2r(addss, var, reg) +#define addss_r2r(regs, regd) sse_r2r(addss, regs, regd) + +#define subps_m2r(var, reg) sse_m2r(subps, var, reg) +#define subps_r2r(regs, regd) sse_r2r(subps, regs, regd) + +#define subss_m2r(var, reg) sse_m2r(subss, var, reg) +#define subss_r2r(regs, regd) sse_r2r(subss, regs, regd) + +#define mulps_m2r(var, reg) sse_m2r(mulps, var, reg) +#define mulps_r2r(regs, regd) sse_r2r(mulps, regs, regd) + +#define mulss_m2r(var, reg) sse_m2r(mulss, var, reg) +#define mulss_r2r(regs, regd) sse_r2r(mulss, regs, regd) + +#define divps_m2r(var, reg) sse_m2r(divps, var, reg) +#define divps_r2r(regs, regd) sse_r2r(divps, regs, regd) + +#define divss_m2r(var, reg) sse_m2r(divss, var, reg) +#define divss_r2r(regs, regd) sse_r2r(divss, regs, regd) + +#define rcpps_m2r(var, reg) sse_m2r(rcpps, var, reg) +#define rcpps_r2r(regs, regd) sse_r2r(rcpps, regs, regd) + +#define rcpss_m2r(var, reg) sse_m2r(rcpss, var, reg) +#define rcpss_r2r(regs, regd) sse_r2r(rcpss, regs, regd) + +#define rsqrtps_m2r(var, reg) sse_m2r(rsqrtps, var, reg) +#define rsqrtps_r2r(regs, regd) sse_r2r(rsqrtps, regs, regd) + +#define rsqrtss_m2r(var, reg) sse_m2r(rsqrtss, var, reg) +#define rsqrtss_r2r(regs, regd) sse_r2r(rsqrtss, regs, regd) + +#define sqrtps_m2r(var, reg) sse_m2r(sqrtps, var, reg) +#define sqrtps_r2r(regs, regd) sse_r2r(sqrtps, regs, regd) + +#define sqrtss_m2r(var, reg) sse_m2r(sqrtss, var, reg) +#define sqrtss_r2r(regs, regd) sse_r2r(sqrtss, regs, regd) + +#define andps_m2r(var, reg) sse_m2r(andps, var, reg) +#define andps_r2r(regs, regd) sse_r2r(andps, regs, regd) + +#define andnps_m2r(var, reg) sse_m2r(andnps, var, reg) +#define andnps_r2r(regs, regd) sse_r2r(andnps, regs, regd) + +#define orps_m2r(var, reg) sse_m2r(orps, var, reg) +#define orps_r2r(regs, regd) sse_r2r(orps, regs, regd) + +#define xorps_m2r(var, reg) sse_m2r(xorps, var, reg) +#define xorps_r2r(regs, regd) sse_r2r(xorps, regs, regd) + +#define maxps_m2r(var, reg) sse_m2r(maxps, var, reg) +#define maxps_r2r(regs, regd) sse_r2r(maxps, regs, regd) + +#define maxss_m2r(var, reg) sse_m2r(maxss, var, reg) +#define maxss_r2r(regs, regd) sse_r2r(maxss, regs, regd) + +#define minps_m2r(var, reg) sse_m2r(minps, var, reg) +#define minps_r2r(regs, regd) sse_r2r(minps, regs, regd) + +#define minss_m2r(var, reg) sse_m2r(minss, var, reg) +#define minss_r2r(regs, regd) sse_r2r(minss, regs, regd) + +#define cmpps_m2r(var, reg, op) sse_m2ri(cmpps, var, reg, op) +#define cmpps_r2r(regs, regd, op) sse_r2ri(cmpps, regs, regd, op) + +#define cmpeqps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 0) +#define cmpeqps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 0) + +#define cmpltps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 1) +#define cmpltps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 1) + +#define cmpleps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 2) +#define cmpleps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 2) + +#define cmpunordps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 3) +#define cmpunordps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 3) + +#define cmpneqps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 4) +#define cmpneqps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 4) + +#define cmpnltps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 5) +#define cmpnltps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 5) + +#define cmpnleps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 6) +#define cmpnleps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 6) + +#define cmpordps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 7) +#define cmpordps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 7) + +#define cmpss_m2r(var, reg, op) sse_m2ri(cmpss, var, reg, op) +#define cmpss_r2r(regs, regd, op) sse_r2ri(cmpss, regs, regd, op) + +#define cmpeqss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 0) +#define cmpeqss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 0) + +#define cmpltss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 1) +#define cmpltss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 1) + +#define cmpless_m2r(var, reg) sse_m2ri(cmpss, var, reg, 2) +#define cmpless_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 2) + +#define cmpunordss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 3) +#define cmpunordss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 3) + +#define cmpneqss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 4) +#define cmpneqss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 4) + +#define cmpnltss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 5) +#define cmpnltss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 5) + +#define cmpnless_m2r(var, reg) sse_m2ri(cmpss, var, reg, 6) +#define cmpnless_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 6) + +#define cmpordss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 7) +#define cmpordss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 7) + +#define comiss_m2r(var, reg) sse_m2r(comiss, var, reg) +#define comiss_r2r(regs, regd) sse_r2r(comiss, regs, regd) + +#define ucomiss_m2r(var, reg) sse_m2r(ucomiss, var, reg) +#define ucomiss_r2r(regs, regd) sse_r2r(ucomiss, regs, regd) + +#define unpcklps_m2r(var, reg) sse_m2r(unpcklps, var, reg) +#define unpcklps_r2r(regs, regd) sse_r2r(unpcklps, regs, regd) + +#define unpckhps_m2r(var, reg) sse_m2r(unpckhps, var, reg) +#define unpckhps_r2r(regs, regd) sse_r2r(unpckhps, regs, regd) + +#define fxrstor(mem) \ + __asm__ __volatile__ ("fxrstor %0" \ + : /* nothing */ \ + : "X" (mem)) + +#define fxsave(mem) \ + __asm__ __volatile__ ("fxsave %0" \ + : /* nothing */ \ + : "X" (mem)) + +#define stmxcsr(mem) \ + __asm__ __volatile__ ("stmxcsr %0" \ + : /* nothing */ \ + : "X" (mem)) + +#define ldmxcsr(mem) \ + __asm__ __volatile__ ("ldmxcsr %0" \ + : /* nothing */ \ + : "X" (mem)) +#endif /*ARCH_X86 */ + +#endif /*XINE_MMX_H*/ diff --git a/src/xine-utils/xineutils.h b/src/xine-utils/xineutils.h index 120cb3578..581932cee 100644 --- a/src/xine-utils/xineutils.h +++ b/src/xine-utils/xineutils.h @@ -24,10 +24,6 @@ extern "C" { #endif -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include <stdlib.h> #include <string.h> #include <stdarg.h> @@ -43,6 +39,7 @@ extern "C" { # include "list.h" # include "array.h" # include "sorted_array.h" +# include "xine_mmx.h" #else # ifdef WIN32 # include <winsock.h> @@ -58,6 +55,7 @@ extern "C" { # include <xine/list.h> # include <xine/array.h> # include <xine/sorted_array.h> +# include <xine/xine_mmx.h> #endif #include <stdio.h> @@ -125,474 +123,8 @@ extern "C" { #define MM_SSE MM_ACCEL_X86_SSE #define MM_SSE2 MM_ACCEL_X86_SSE2 -uint32_t xine_mm_accel (void) XINE_PROTECTED; - -#if defined(ARCH_X86) || defined(ARCH_X86_64) - -typedef union { - int64_t q; /* Quadword (64-bit) value */ - uint64_t uq; /* Unsigned Quadword */ - int d[2]; /* 2 Doubleword (32-bit) values */ - unsigned int ud[2]; /* 2 Unsigned Doubleword */ - short w[4]; /* 4 Word (16-bit) values */ - unsigned short uw[4]; /* 4 Unsigned Word */ - char b[8]; /* 8 Byte (8-bit) values */ - unsigned char ub[8]; /* 8 Unsigned Byte */ - float s[2]; /* Single-precision (32-bit) value */ -} ATTR_ALIGN(8) mmx_t; /* On an 8-byte (64-bit) boundary */ - - - -#define mmx_i2r(op,imm,reg) \ - __asm__ __volatile__ (#op " %0, %%" #reg \ - : /* nothing */ \ - : "i" (imm) ) - -#define mmx_m2r(op,mem,reg) \ - __asm__ __volatile__ (#op " %0, %%" #reg \ - : /* nothing */ \ - : "m" (mem)) - -#define mmx_r2m(op,reg,mem) \ - __asm__ __volatile__ (#op " %%" #reg ", %0" \ - : "=m" (mem) \ - : /* nothing */ ) - -#define mmx_r2r(op,regs,regd) \ - __asm__ __volatile__ (#op " %" #regs ", %" #regd) - - -#define emms() __asm__ __volatile__ ("emms") - -#define movd_m2r(var,reg) mmx_m2r (movd, var, reg) -#define movd_r2m(reg,var) mmx_r2m (movd, reg, var) -#define movd_r2r(regs,regd) mmx_r2r (movd, regs, regd) - -#define movq_m2r(var,reg) mmx_m2r (movq, var, reg) -#define movq_r2m(reg,var) mmx_r2m (movq, reg, var) -#define movq_r2r(regs,regd) mmx_r2r (movq, regs, regd) - -#define packssdw_m2r(var,reg) mmx_m2r (packssdw, var, reg) -#define packssdw_r2r(regs,regd) mmx_r2r (packssdw, regs, regd) -#define packsswb_m2r(var,reg) mmx_m2r (packsswb, var, reg) -#define packsswb_r2r(regs,regd) mmx_r2r (packsswb, regs, regd) - -#define packuswb_m2r(var,reg) mmx_m2r (packuswb, var, reg) -#define packuswb_r2r(regs,regd) mmx_r2r (packuswb, regs, regd) - -#define paddb_m2r(var,reg) mmx_m2r (paddb, var, reg) -#define paddb_r2r(regs,regd) mmx_r2r (paddb, regs, regd) -#define paddd_m2r(var,reg) mmx_m2r (paddd, var, reg) -#define paddd_r2r(regs,regd) mmx_r2r (paddd, regs, regd) -#define paddw_m2r(var,reg) mmx_m2r (paddw, var, reg) -#define paddw_r2r(regs,regd) mmx_r2r (paddw, regs, regd) - -#define paddsb_m2r(var,reg) mmx_m2r (paddsb, var, reg) -#define paddsb_r2r(regs,regd) mmx_r2r (paddsb, regs, regd) -#define paddsw_m2r(var,reg) mmx_m2r (paddsw, var, reg) -#define paddsw_r2r(regs,regd) mmx_r2r (paddsw, regs, regd) - -#define paddusb_m2r(var,reg) mmx_m2r (paddusb, var, reg) -#define paddusb_r2r(regs,regd) mmx_r2r (paddusb, regs, regd) -#define paddusw_m2r(var,reg) mmx_m2r (paddusw, var, reg) -#define paddusw_r2r(regs,regd) mmx_r2r (paddusw, regs, regd) - -#define pand_m2r(var,reg) mmx_m2r (pand, var, reg) -#define pand_r2r(regs,regd) mmx_r2r (pand, regs, regd) - -#define pandn_m2r(var,reg) mmx_m2r (pandn, var, reg) -#define pandn_r2r(regs,regd) mmx_r2r (pandn, regs, regd) - -#define pcmpeqb_m2r(var,reg) mmx_m2r (pcmpeqb, var, reg) -#define pcmpeqb_r2r(regs,regd) mmx_r2r (pcmpeqb, regs, regd) -#define pcmpeqd_m2r(var,reg) mmx_m2r (pcmpeqd, var, reg) -#define pcmpeqd_r2r(regs,regd) mmx_r2r (pcmpeqd, regs, regd) -#define pcmpeqw_m2r(var,reg) mmx_m2r (pcmpeqw, var, reg) -#define pcmpeqw_r2r(regs,regd) mmx_r2r (pcmpeqw, regs, regd) - -#define pcmpgtb_m2r(var,reg) mmx_m2r (pcmpgtb, var, reg) -#define pcmpgtb_r2r(regs,regd) mmx_r2r (pcmpgtb, regs, regd) -#define pcmpgtd_m2r(var,reg) mmx_m2r (pcmpgtd, var, reg) -#define pcmpgtd_r2r(regs,regd) mmx_r2r (pcmpgtd, regs, regd) -#define pcmpgtw_m2r(var,reg) mmx_m2r (pcmpgtw, var, reg) -#define pcmpgtw_r2r(regs,regd) mmx_r2r (pcmpgtw, regs, regd) - -#define pmaddwd_m2r(var,reg) mmx_m2r (pmaddwd, var, reg) -#define pmaddwd_r2r(regs,regd) mmx_r2r (pmaddwd, regs, regd) - -#define pmulhw_m2r(var,reg) mmx_m2r (pmulhw, var, reg) -#define pmulhw_r2r(regs,regd) mmx_r2r (pmulhw, regs, regd) - -#define pmullw_m2r(var,reg) mmx_m2r (pmullw, var, reg) -#define pmullw_r2r(regs,regd) mmx_r2r (pmullw, regs, regd) - -#define por_m2r(var,reg) mmx_m2r (por, var, reg) -#define por_r2r(regs,regd) mmx_r2r (por, regs, regd) - -#define pslld_i2r(imm,reg) mmx_i2r (pslld, imm, reg) -#define pslld_m2r(var,reg) mmx_m2r (pslld, var, reg) -#define pslld_r2r(regs,regd) mmx_r2r (pslld, regs, regd) -#define psllq_i2r(imm,reg) mmx_i2r (psllq, imm, reg) -#define psllq_m2r(var,reg) mmx_m2r (psllq, var, reg) -#define psllq_r2r(regs,regd) mmx_r2r (psllq, regs, regd) -#define psllw_i2r(imm,reg) mmx_i2r (psllw, imm, reg) -#define psllw_m2r(var,reg) mmx_m2r (psllw, var, reg) -#define psllw_r2r(regs,regd) mmx_r2r (psllw, regs, regd) - -#define psrad_i2r(imm,reg) mmx_i2r (psrad, imm, reg) -#define psrad_m2r(var,reg) mmx_m2r (psrad, var, reg) -#define psrad_r2r(regs,regd) mmx_r2r (psrad, regs, regd) -#define psraw_i2r(imm,reg) mmx_i2r (psraw, imm, reg) -#define psraw_m2r(var,reg) mmx_m2r (psraw, var, reg) -#define psraw_r2r(regs,regd) mmx_r2r (psraw, regs, regd) - -#define psrld_i2r(imm,reg) mmx_i2r (psrld, imm, reg) -#define psrld_m2r(var,reg) mmx_m2r (psrld, var, reg) -#define psrld_r2r(regs,regd) mmx_r2r (psrld, regs, regd) -#define psrlq_i2r(imm,reg) mmx_i2r (psrlq, imm, reg) -#define psrlq_m2r(var,reg) mmx_m2r (psrlq, var, reg) -#define psrlq_r2r(regs,regd) mmx_r2r (psrlq, regs, regd) -#define psrlw_i2r(imm,reg) mmx_i2r (psrlw, imm, reg) -#define psrlw_m2r(var,reg) mmx_m2r (psrlw, var, reg) -#define psrlw_r2r(regs,regd) mmx_r2r (psrlw, regs, regd) - -#define psubb_m2r(var,reg) mmx_m2r (psubb, var, reg) -#define psubb_r2r(regs,regd) mmx_r2r (psubb, regs, regd) -#define psubd_m2r(var,reg) mmx_m2r (psubd, var, reg) -#define psubd_r2r(regs,regd) mmx_r2r (psubd, regs, regd) -#define psubw_m2r(var,reg) mmx_m2r (psubw, var, reg) -#define psubw_r2r(regs,regd) mmx_r2r (psubw, regs, regd) - -#define psubsb_m2r(var,reg) mmx_m2r (psubsb, var, reg) -#define psubsb_r2r(regs,regd) mmx_r2r (psubsb, regs, regd) -#define psubsw_m2r(var,reg) mmx_m2r (psubsw, var, reg) -#define psubsw_r2r(regs,regd) mmx_r2r (psubsw, regs, regd) - -#define psubusb_m2r(var,reg) mmx_m2r (psubusb, var, reg) -#define psubusb_r2r(regs,regd) mmx_r2r (psubusb, regs, regd) -#define psubusw_m2r(var,reg) mmx_m2r (psubusw, var, reg) -#define psubusw_r2r(regs,regd) mmx_r2r (psubusw, regs, regd) - -#define punpckhbw_m2r(var,reg) mmx_m2r (punpckhbw, var, reg) -#define punpckhbw_r2r(regs,regd) mmx_r2r (punpckhbw, regs, regd) -#define punpckhdq_m2r(var,reg) mmx_m2r (punpckhdq, var, reg) -#define punpckhdq_r2r(regs,regd) mmx_r2r (punpckhdq, regs, regd) -#define punpckhwd_m2r(var,reg) mmx_m2r (punpckhwd, var, reg) -#define punpckhwd_r2r(regs,regd) mmx_r2r (punpckhwd, regs, regd) - -#define punpcklbw_m2r(var,reg) mmx_m2r (punpcklbw, var, reg) -#define punpcklbw_r2r(regs,regd) mmx_r2r (punpcklbw, regs, regd) -#define punpckldq_m2r(var,reg) mmx_m2r (punpckldq, var, reg) -#define punpckldq_r2r(regs,regd) mmx_r2r (punpckldq, regs, regd) -#define punpcklwd_m2r(var,reg) mmx_m2r (punpcklwd, var, reg) -#define punpcklwd_r2r(regs,regd) mmx_r2r (punpcklwd, regs, regd) - -#define pxor_m2r(var,reg) mmx_m2r (pxor, var, reg) -#define pxor_r2r(regs,regd) mmx_r2r (pxor, regs, regd) - - -/* 3DNOW extensions */ - -#define pavgusb_m2r(var,reg) mmx_m2r (pavgusb, var, reg) -#define pavgusb_r2r(regs,regd) mmx_r2r (pavgusb, regs, regd) - - -/* AMD MMX extensions - also available in intel SSE */ - - -#define mmx_m2ri(op,mem,reg,imm) \ - __asm__ __volatile__ (#op " %1, %0, %%" #reg \ - : /* nothing */ \ - : "X" (mem), "X" (imm)) -#define mmx_r2ri(op,regs,regd,imm) \ - __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \ - : /* nothing */ \ - : "X" (imm) ) - -#define mmx_fetch(mem,hint) \ - __asm__ __volatile__ ("prefetch" #hint " %0" \ - : /* nothing */ \ - : "X" (mem)) - - -#define maskmovq(regs,maskreg) mmx_r2ri (maskmovq, regs, maskreg) - -#define movntq_r2m(mmreg,var) mmx_r2m (movntq, mmreg, var) - -#define pavgb_m2r(var,reg) mmx_m2r (pavgb, var, reg) -#define pavgb_r2r(regs,regd) mmx_r2r (pavgb, regs, regd) -#define pavgw_m2r(var,reg) mmx_m2r (pavgw, var, reg) -#define pavgw_r2r(regs,regd) mmx_r2r (pavgw, regs, regd) - -#define pextrw_r2r(mmreg,reg,imm) mmx_r2ri (pextrw, mmreg, reg, imm) - -#define pinsrw_r2r(reg,mmreg,imm) mmx_r2ri (pinsrw, reg, mmreg, imm) - -#define pmaxsw_m2r(var,reg) mmx_m2r (pmaxsw, var, reg) -#define pmaxsw_r2r(regs,regd) mmx_r2r (pmaxsw, regs, regd) - -#define pmaxub_m2r(var,reg) mmx_m2r (pmaxub, var, reg) -#define pmaxub_r2r(regs,regd) mmx_r2r (pmaxub, regs, regd) - -#define pminsw_m2r(var,reg) mmx_m2r (pminsw, var, reg) -#define pminsw_r2r(regs,regd) mmx_r2r (pminsw, regs, regd) - -#define pminub_m2r(var,reg) mmx_m2r (pminub, var, reg) -#define pminub_r2r(regs,regd) mmx_r2r (pminub, regs, regd) - -#define pmovmskb(mmreg,reg) \ - __asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg) - -#define pmulhuw_m2r(var,reg) mmx_m2r (pmulhuw, var, reg) -#define pmulhuw_r2r(regs,regd) mmx_r2r (pmulhuw, regs, regd) - -#define prefetcht0(mem) mmx_fetch (mem, t0) -#define prefetcht1(mem) mmx_fetch (mem, t1) -#define prefetcht2(mem) mmx_fetch (mem, t2) -#define prefetchnta(mem) mmx_fetch (mem, nta) - -#define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg) -#define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd) - -#define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm) -#define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm) - -#define sfence() __asm__ __volatile__ ("sfence\n\t") - -typedef union { - float sf[4]; /* Single-precision (32-bit) value */ -} ATTR_ALIGN(16) sse_t; /* On a 16 byte (128-bit) boundary */ - - -#define sse_i2r(op, imm, reg) \ - __asm__ __volatile__ (#op " %0, %%" #reg \ - : /* nothing */ \ - : "X" (imm) ) - -#define sse_m2r(op, mem, reg) \ - __asm__ __volatile__ (#op " %0, %%" #reg \ - : /* nothing */ \ - : "X" (mem)) - -#define sse_r2m(op, reg, mem) \ - __asm__ __volatile__ (#op " %%" #reg ", %0" \ - : "=X" (mem) \ - : /* nothing */ ) - -#define sse_r2r(op, regs, regd) \ - __asm__ __volatile__ (#op " %" #regs ", %" #regd) - -#define sse_r2ri(op, regs, regd, imm) \ - __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \ - : /* nothing */ \ - : "X" (imm) ) - -#define sse_m2ri(op, mem, reg, subop) \ - __asm__ __volatile__ (#op " %0, %%" #reg ", " #subop \ - : /* nothing */ \ - : "X" (mem)) - - -#define movaps_m2r(var, reg) sse_m2r(movaps, var, reg) -#define movaps_r2m(reg, var) sse_r2m(movaps, reg, var) -#define movaps_r2r(regs, regd) sse_r2r(movaps, regs, regd) - -#define movntps_r2m(xmmreg, var) sse_r2m(movntps, xmmreg, var) - -#define movups_m2r(var, reg) sse_m2r(movups, var, reg) -#define movups_r2m(reg, var) sse_r2m(movups, reg, var) -#define movups_r2r(regs, regd) sse_r2r(movups, regs, regd) - -#define movhlps_r2r(regs, regd) sse_r2r(movhlps, regs, regd) - -#define movlhps_r2r(regs, regd) sse_r2r(movlhps, regs, regd) - -#define movhps_m2r(var, reg) sse_m2r(movhps, var, reg) -#define movhps_r2m(reg, var) sse_r2m(movhps, reg, var) - -#define movlps_m2r(var, reg) sse_m2r(movlps, var, reg) -#define movlps_r2m(reg, var) sse_r2m(movlps, reg, var) - -#define movss_m2r(var, reg) sse_m2r(movss, var, reg) -#define movss_r2m(reg, var) sse_r2m(movss, reg, var) -#define movss_r2r(regs, regd) sse_r2r(movss, regs, regd) - -#define shufps_m2r(var, reg, index) sse_m2ri(shufps, var, reg, index) -#define shufps_r2r(regs, regd, index) sse_r2ri(shufps, regs, regd, index) - -#define cvtpi2ps_m2r(var, xmmreg) sse_m2r(cvtpi2ps, var, xmmreg) -#define cvtpi2ps_r2r(mmreg, xmmreg) sse_r2r(cvtpi2ps, mmreg, xmmreg) - -#define cvtps2pi_m2r(var, mmreg) sse_m2r(cvtps2pi, var, mmreg) -#define cvtps2pi_r2r(xmmreg, mmreg) sse_r2r(cvtps2pi, mmreg, xmmreg) - -#define cvttps2pi_m2r(var, mmreg) sse_m2r(cvttps2pi, var, mmreg) -#define cvttps2pi_r2r(xmmreg, mmreg) sse_r2r(cvttps2pi, mmreg, xmmreg) - -#define cvtsi2ss_m2r(var, xmmreg) sse_m2r(cvtsi2ss, var, xmmreg) -#define cvtsi2ss_r2r(reg, xmmreg) sse_r2r(cvtsi2ss, reg, xmmreg) +uint32_t xine_mm_accel (void) XINE_CONST XINE_PROTECTED; -#define cvtss2si_m2r(var, reg) sse_m2r(cvtss2si, var, reg) -#define cvtss2si_r2r(xmmreg, reg) sse_r2r(cvtss2si, xmmreg, reg) - -#define cvttss2si_m2r(var, reg) sse_m2r(cvtss2si, var, reg) -#define cvttss2si_r2r(xmmreg, reg) sse_r2r(cvtss2si, xmmreg, reg) - -#define movmskps(xmmreg, reg) \ - __asm__ __volatile__ ("movmskps %" #xmmreg ", %" #reg) - -#define addps_m2r(var, reg) sse_m2r(addps, var, reg) -#define addps_r2r(regs, regd) sse_r2r(addps, regs, regd) - -#define addss_m2r(var, reg) sse_m2r(addss, var, reg) -#define addss_r2r(regs, regd) sse_r2r(addss, regs, regd) - -#define subps_m2r(var, reg) sse_m2r(subps, var, reg) -#define subps_r2r(regs, regd) sse_r2r(subps, regs, regd) - -#define subss_m2r(var, reg) sse_m2r(subss, var, reg) -#define subss_r2r(regs, regd) sse_r2r(subss, regs, regd) - -#define mulps_m2r(var, reg) sse_m2r(mulps, var, reg) -#define mulps_r2r(regs, regd) sse_r2r(mulps, regs, regd) - -#define mulss_m2r(var, reg) sse_m2r(mulss, var, reg) -#define mulss_r2r(regs, regd) sse_r2r(mulss, regs, regd) - -#define divps_m2r(var, reg) sse_m2r(divps, var, reg) -#define divps_r2r(regs, regd) sse_r2r(divps, regs, regd) - -#define divss_m2r(var, reg) sse_m2r(divss, var, reg) -#define divss_r2r(regs, regd) sse_r2r(divss, regs, regd) - -#define rcpps_m2r(var, reg) sse_m2r(rcpps, var, reg) -#define rcpps_r2r(regs, regd) sse_r2r(rcpps, regs, regd) - -#define rcpss_m2r(var, reg) sse_m2r(rcpss, var, reg) -#define rcpss_r2r(regs, regd) sse_r2r(rcpss, regs, regd) - -#define rsqrtps_m2r(var, reg) sse_m2r(rsqrtps, var, reg) -#define rsqrtps_r2r(regs, regd) sse_r2r(rsqrtps, regs, regd) - -#define rsqrtss_m2r(var, reg) sse_m2r(rsqrtss, var, reg) -#define rsqrtss_r2r(regs, regd) sse_r2r(rsqrtss, regs, regd) - -#define sqrtps_m2r(var, reg) sse_m2r(sqrtps, var, reg) -#define sqrtps_r2r(regs, regd) sse_r2r(sqrtps, regs, regd) - -#define sqrtss_m2r(var, reg) sse_m2r(sqrtss, var, reg) -#define sqrtss_r2r(regs, regd) sse_r2r(sqrtss, regs, regd) - -#define andps_m2r(var, reg) sse_m2r(andps, var, reg) -#define andps_r2r(regs, regd) sse_r2r(andps, regs, regd) - -#define andnps_m2r(var, reg) sse_m2r(andnps, var, reg) -#define andnps_r2r(regs, regd) sse_r2r(andnps, regs, regd) - -#define orps_m2r(var, reg) sse_m2r(orps, var, reg) -#define orps_r2r(regs, regd) sse_r2r(orps, regs, regd) - -#define xorps_m2r(var, reg) sse_m2r(xorps, var, reg) -#define xorps_r2r(regs, regd) sse_r2r(xorps, regs, regd) - -#define maxps_m2r(var, reg) sse_m2r(maxps, var, reg) -#define maxps_r2r(regs, regd) sse_r2r(maxps, regs, regd) - -#define maxss_m2r(var, reg) sse_m2r(maxss, var, reg) -#define maxss_r2r(regs, regd) sse_r2r(maxss, regs, regd) - -#define minps_m2r(var, reg) sse_m2r(minps, var, reg) -#define minps_r2r(regs, regd) sse_r2r(minps, regs, regd) - -#define minss_m2r(var, reg) sse_m2r(minss, var, reg) -#define minss_r2r(regs, regd) sse_r2r(minss, regs, regd) - -#define cmpps_m2r(var, reg, op) sse_m2ri(cmpps, var, reg, op) -#define cmpps_r2r(regs, regd, op) sse_r2ri(cmpps, regs, regd, op) - -#define cmpeqps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 0) -#define cmpeqps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 0) - -#define cmpltps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 1) -#define cmpltps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 1) - -#define cmpleps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 2) -#define cmpleps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 2) - -#define cmpunordps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 3) -#define cmpunordps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 3) - -#define cmpneqps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 4) -#define cmpneqps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 4) - -#define cmpnltps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 5) -#define cmpnltps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 5) - -#define cmpnleps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 6) -#define cmpnleps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 6) - -#define cmpordps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 7) -#define cmpordps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 7) - -#define cmpss_m2r(var, reg, op) sse_m2ri(cmpss, var, reg, op) -#define cmpss_r2r(regs, regd, op) sse_r2ri(cmpss, regs, regd, op) - -#define cmpeqss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 0) -#define cmpeqss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 0) - -#define cmpltss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 1) -#define cmpltss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 1) - -#define cmpless_m2r(var, reg) sse_m2ri(cmpss, var, reg, 2) -#define cmpless_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 2) - -#define cmpunordss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 3) -#define cmpunordss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 3) - -#define cmpneqss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 4) -#define cmpneqss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 4) - -#define cmpnltss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 5) -#define cmpnltss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 5) - -#define cmpnless_m2r(var, reg) sse_m2ri(cmpss, var, reg, 6) -#define cmpnless_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 6) - -#define cmpordss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 7) -#define cmpordss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 7) - -#define comiss_m2r(var, reg) sse_m2r(comiss, var, reg) -#define comiss_r2r(regs, regd) sse_r2r(comiss, regs, regd) - -#define ucomiss_m2r(var, reg) sse_m2r(ucomiss, var, reg) -#define ucomiss_r2r(regs, regd) sse_r2r(ucomiss, regs, regd) - -#define unpcklps_m2r(var, reg) sse_m2r(unpcklps, var, reg) -#define unpcklps_r2r(regs, regd) sse_r2r(unpcklps, regs, regd) - -#define unpckhps_m2r(var, reg) sse_m2r(unpckhps, var, reg) -#define unpckhps_r2r(regs, regd) sse_r2r(unpckhps, regs, regd) - -#define fxrstor(mem) \ - __asm__ __volatile__ ("fxrstor %0" \ - : /* nothing */ \ - : "X" (mem)) - -#define fxsave(mem) \ - __asm__ __volatile__ ("fxsave %0" \ - : /* nothing */ \ - : "X" (mem)) - -#define stmxcsr(mem) \ - __asm__ __volatile__ ("stmxcsr %0" \ - : /* nothing */ \ - : "X" (mem)) - -#define ldmxcsr(mem) \ - __asm__ __volatile__ ("ldmxcsr %0" \ - : /* nothing */ \ - : "X" (mem)) -#endif /*ARCH_X86 */ /* Optimized/fast memcpy */ @@ -621,11 +153,7 @@ void xine_profiler_print_results (void) XINE_PROTECTED; * Allocate and clean memory size_t 'size', then return the pointer * to the allocated memory. */ -#if !defined(__GNUC__) || __GNUC__ < 3 -void *xine_xmalloc(size_t size) XINE_PROTECTED; -#else -void *xine_xmalloc(size_t size) __attribute__ ((__malloc__)) XINE_PROTECTED; -#endif +void *xine_xmalloc(size_t size) XINE_MALLOC XINE_DEPRECATED XINE_PROTECTED; /* * Same as above, but memory is aligned to 'alignement'. @@ -643,6 +171,7 @@ const char *xine_get_homedir(void) XINE_PROTECTED; /* * Get other xine directories. */ +const char *xine_get_pluginroot(void) XINE_PROTECTED; const char *xine_get_plugindir(void) XINE_PROTECTED; const char *xine_get_fontdir(void) XINE_PROTECTED; const char *xine_get_localedir(void) XINE_PROTECTED; @@ -665,7 +194,7 @@ void xine_usec_sleep(unsigned usec) XINE_PROTECTED; */ -void xine_strdupa(char *dest, char *src) XINE_PROTECTED; +void xine_strdupa(char *dest, char *src) XINE_PROTECTED XINE_DEPRECATED; #define xine_strdupa(d, s) do { \ (d) = NULL; \ if((s) != NULL) { \ @@ -679,6 +208,13 @@ void xine_strdupa(char *dest, char *src) XINE_PROTECTED; #define xine_strsep(STRINGP, DELIM) strsep((STRINGP), (DELIM)) #define xine_setenv(NAME, VAL, XX) setenv((NAME), (VAL), (XX)) +/** + * append to a string, reallocating + * normally, updates & returns *dest + * on error, *dest is unchanged & NULL is returned. + */ +char *xine_strcat_realloc (char **dest, char *append) XINE_PROTECTED; + /* * Color Conversion Utility Functions * The following data structures and functions facilitate the conversion @@ -959,7 +495,7 @@ void xine_xprintf(xine_t *xine, int verbose, const char *fmt, ...); /** * get encoding of current locale */ -char *xine_get_system_encoding(void) XINE_PROTECTED; +char *xine_get_system_encoding(void) XINE_MALLOC XINE_PROTECTED; /* * guess default encoding for the subtitles diff --git a/src/xine-utils/xmllexer.c b/src/xine-utils/xmllexer.c index be3bdd248..08c56e88e 100644 --- a/src/xine-utils/xmllexer.c +++ b/src/xine-utils/xmllexer.c @@ -25,11 +25,14 @@ #define LOG */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #ifdef XINE_COMPILE #include "xineutils.h" #else #define lprintf(...) -#define xine_xmalloc malloc #endif #include "xmllexer.h" #include <stdio.h> @@ -411,6 +414,8 @@ int lexer_get_token_d(char ** _tok, int * _tok_size, int fixed) { case '\"': /* " */ case ' ': case '\t': + case '\n': + case '\r': case '=': case '/': tok[tok_pos] = '\0'; @@ -532,7 +537,7 @@ static struct { char *lexer_decode_entities (const char *tok) { - char *buf = xine_xmalloc (strlen (tok) + 1); + char *buf = calloc (strlen (tok) + 1, sizeof(char)); char *bp = buf; char c; diff --git a/src/xine-utils/xmlparser.c b/src/xine-utils/xmlparser.c index 14ce35c54..93a707993 100644 --- a/src/xine-utils/xmlparser.c +++ b/src/xine-utils/xmlparser.c @@ -19,6 +19,10 @@ * Floor, Boston, MA 02110, USA */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <unistd.h> #include <stdio.h> #include <stdlib.h> @@ -36,7 +40,7 @@ #include "xineutils.h" #else #define lprintf(...) -#define xine_xmalloc malloc +#define XINE_MALLOC #endif #include "xmllexer.h" #include "xmlparser.h" @@ -79,7 +83,7 @@ static void free_xml_node(xml_node_t * node) { free(node); } -static xml_property_t * new_xml_property(void) { +static xml_property_t *XINE_MALLOC new_xml_property(void) { xml_property_t * new_property; new_property = (xml_property_t*) malloc(sizeof(xml_property_t)); @@ -476,9 +480,9 @@ static int xml_parser_get_node (xml_node_t *current_node, char *root_name, int r int token_buffer_size = TOKEN_SIZE; int pname_buffer_size = TOKEN_SIZE; int nname_buffer_size = TOKEN_SIZE; - char *token_buffer = xine_xmalloc (token_buffer_size); - char *pname_buffer = xine_xmalloc (pname_buffer_size); - char *nname_buffer = xine_xmalloc (nname_buffer_size); + char *token_buffer = calloc(1, token_buffer_size); + char *pname_buffer = calloc(1, pname_buffer_size); + char *nname_buffer = calloc(1, nname_buffer_size); res = _xml_parser_get_node(&token_buffer, &token_buffer_size, &pname_buffer, &pname_buffer_size, @@ -590,7 +594,7 @@ static int xml_escape_string_internal (char *buf, const char *s, char *xml_escape_string (const char *s, xml_escape_quote_t quote_type) { - char *buf = xine_xmalloc (xml_escape_string_internal (NULL, s, quote_type)); + char *buf = calloc (1, xml_escape_string_internal (NULL, s, quote_type)); return buf ? (xml_escape_string_internal (buf, s, quote_type), buf) : NULL; } @@ -598,11 +602,10 @@ static void xml_parser_dump_node (const xml_node_t *node, int indent) { xml_property_t *p; xml_node_t *n; - int l; printf ("%*s<%s ", indent, "", node->name); - l = strlen (node->name); + size_t l = strlen (node->name); p = node->props; while (p) { diff --git a/win32/libxine.def b/win32/libxine.def index 4711e7758..2cd9cb028 100644 --- a/win32/libxine.def +++ b/win32/libxine.def @@ -56,6 +56,7 @@ _xine_private_basename _xine_private_gettimeofday
_xine_private_hstrerror
_xine_private_setenv
+_xine_private_strcasestr
_xine_private_strndup
_xine_private_strsep
_xine_private_strtok_r
diff --git a/win32/libxinesupport.def b/win32/libxinesupport.def index 0bb166d2d..068641822 100644 --- a/win32/libxinesupport.def +++ b/win32/libxinesupport.def @@ -18,6 +18,7 @@ _xine_private_basename _xine_private_gettimeofday _xine_private_hstrerror _xine_private_setenv +_xine_private_strcasestr
_xine_private_strndup _xine_private_strsep _xine_private_strtok_r |