summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2008-03-01 03:17:33 +0100
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2008-03-01 03:17:33 +0100
commit813c609ea30c3201eec34d4bba185566ad48c998 (patch)
treef93ff7fd2604bf9396d5f1712d3eaa2f6d044178
parente728b8f587ee41ff483e46fe50a4cb538c5df9e2 (diff)
parenta1508e2f58d2c4b32d032d798f6f137262717e7f (diff)
downloadxine-lib-813c609ea30c3201eec34d4bba185566ad48c998.tar.gz
xine-lib-813c609ea30c3201eec34d4bba185566ad48c998.tar.bz2
Merge from 1.2 tip.
--HG-- rename : src/combined/ffmpeg/ff_dvaudio_decoder.c => src/audio_dec/ff_dvaudio_decoder.c
-rw-r--r--.hgignore2
-rw-r--r--.hgsigs3
-rw-r--r--.hgtags4
-rw-r--r--ChangeLog390
-rw-r--r--Makefile.am13
-rw-r--r--configure.ac65
-rw-r--r--debian/changelog7
-rw-r--r--debian/control9
-rw-r--r--debian/libxine2-doc.docs1
-rwxr-xr-xdebian/rules6
-rw-r--r--doc/Makefile.am6
-rw-r--r--doc/README3
-rw-r--r--doc/README.syncfb280
-rw-r--r--doc/faq/faq.docbook6
-rw-r--r--doc/man/en/xine.57
-rw-r--r--include/Makefile.am52
-rw-r--r--include/xine/Makefile.am11
-rw-r--r--include/xine/buffer.h1
-rw-r--r--include/xine/configfile.h35
-rw-r--r--include/xine/plugin_catalog.h1
-rw-r--r--include/xine/video_out.h9
-rw-r--r--include/xine/xineutils.h6
-rw-r--r--lib/strtok_r.c8
-rw-r--r--lib/timegm.c4
-rw-r--r--m4/decoders.m448
-rw-r--r--m4/summary.m45
-rw-r--r--m4/video_out.m419
-rw-r--r--misc/Makefile.am62
-rw-r--r--misc/Makefile.common2
-rw-r--r--misc/fonts/Makefile.am47
-rw-r--r--misc/libxine.pc.in2
-rw-r--r--misc/xine-config.in (renamed from misc/xine-config)14
-rw-r--r--misc/xine-lib.spec.in352
-rw-r--r--po/LINGUAS2
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/cs.po39
-rw-r--r--po/de.po39
-rw-r--r--po/es.po1345
-rw-r--r--po/eu.po39
-rw-r--r--po/fr.po957
-rw-r--r--po/it.po39
-rw-r--r--po/libxine2.pot53
-rw-r--r--po/pl.po42
-rw-r--r--po/pt_BR.po37
-rw-r--r--po/sk.po39
-rw-r--r--po/tr.po5424
-rw-r--r--src/audio_dec/xine_mad_decoder.c44
-rw-r--r--src/audio_out/audio_fusionsound_out.c45
-rw-r--r--src/audio_out/audio_pulse_out.c5
-rw-r--r--src/combined/ffmpeg/ff_video_decoder.c10
-rw-r--r--src/combined/ffmpeg/ffmpeg_decoder.h6
-rw-r--r--src/combined/flac_demuxer.c3
-rw-r--r--src/combined/wavpack_demuxer.c2
-rw-r--r--src/combined/xine_ogg_demuxer.c29
-rw-r--r--src/combined/xine_vorbis_decoder.c250
-rw-r--r--src/demuxers/asfheader.c10
-rw-r--r--src/demuxers/demux_asf.c33
-rw-r--r--src/demuxers/demux_avi.c15
-rw-r--r--src/demuxers/demux_film.c4
-rw-r--r--src/demuxers/demux_flac.c19
-rw-r--r--src/demuxers/demux_flv.c40
-rw-r--r--src/demuxers/demux_matroska.c63
-rw-r--r--src/demuxers/demux_mpgaudio.c402
-rw-r--r--src/demuxers/demux_nsv.c8
-rw-r--r--src/demuxers/demux_qt.c8
-rw-r--r--src/demuxers/demux_real.c28
-rw-r--r--src/demuxers/demux_smjpeg.c4
-rw-r--r--src/demuxers/demux_ts.c9
-rw-r--r--src/demuxers/ebml.c4
-rw-r--r--src/demuxers/ebml.h4
-rw-r--r--src/demuxers/id3.c49
-rw-r--r--src/input/http_helper.c23
-rw-r--r--src/input/http_helper.h24
-rw-r--r--src/input/input_cdda.c1
-rw-r--r--src/input/input_dvb.c3
-rw-r--r--src/input/input_pnm.c2
-rw-r--r--src/input/input_pvr.c30
-rw-r--r--src/input/input_rtsp.c2
-rw-r--r--src/input/input_v4l.c23
-rw-r--r--src/input/libreal/rmff.c88
-rw-r--r--src/input/libreal/rmff.h12
-rw-r--r--src/input/librtsp/rtsp.c6
-rw-r--r--src/input/librtsp/rtsp.h6
-rw-r--r--src/input/librtsp/rtsp_session.c6
-rw-r--r--src/input/net_buf_ctrl.c23
-rw-r--r--src/input/net_buf_ctrl.h6
-rw-r--r--src/libreal/real_common.c4
-rw-r--r--src/post/audio/stretch.c2
-rw-r--r--src/post/audio/upmix.c2
-rw-r--r--src/post/audio/upmix_mono.c2
-rw-r--r--src/post/audio/volnorm.c2
-rw-r--r--src/post/visualizations/fft.c12
-rw-r--r--src/post/visualizations/fft.h1
-rw-r--r--src/post/visualizations/fftgraph.c2
-rw-r--r--src/post/visualizations/fftscope.c2
-rw-r--r--src/post/visualizations/fooviz.c2
-rw-r--r--src/post/visualizations/oscope.c2
-rw-r--r--src/spu_dec/sputext_decoder.c48
-rw-r--r--src/vdr/post_vdr_audio.c2
-rw-r--r--src/vdr/post_vdr_video.c8
-rw-r--r--src/video_out/Makefile.am11
-rw-r--r--src/video_out/macosx/XineOpenGLView.m2
-rw-r--r--src/video_out/video_out_directfb.c18
-rw-r--r--src/video_out/video_out_fb.c2
-rw-r--r--src/video_out/video_out_opengl.c2
-rw-r--r--src/video_out/video_out_pgx64.c3
-rw-r--r--src/video_out/video_out_syncfb.c1116
-rw-r--r--src/video_out/video_out_syncfb.h236
-rw-r--r--src/video_out/video_out_vidix.c6
-rw-r--r--src/video_out/video_out_xcbshm.c26
-rw-r--r--src/video_out/video_out_xcbxv.c203
-rw-r--r--src/video_out/video_out_xshm.c26
-rw-r--r--src/video_out/video_out_xv.c189
-rw-r--r--src/video_out/video_out_xvmc.c120
-rw-r--r--src/video_out/video_out_xxmc.c171
-rw-r--r--src/video_out/xv_common.h58
-rw-r--r--src/xine-engine/Makefile.am2
-rw-r--r--src/xine-engine/audio_out.c11
-rw-r--r--src/xine-engine/buffer_types.c47
-rw-r--r--src/xine-engine/configfile.c358
-rw-r--r--src/xine-engine/load_plugins.c268
-rw-r--r--src/xine-engine/xine.c21
-rw-r--r--src/xine-utils/Makefile.am2
-rw-r--r--src/xine-utils/base64.c198
-rw-r--r--src/xine-utils/base64.h94
-rw-r--r--src/xine-utils/utils.c16
-rw-r--r--src/xine-utils/xmllexer.c19
-rwxr-xr-xversion.sh10
-rw-r--r--win32/Makefile.am13
-rw-r--r--win32/include/Makefile.am14
130 files changed, 9895 insertions, 4344 deletions
diff --git a/.hgignore b/.hgignore
index 973e0a305..d4ec3bb85 100644
--- a/.hgignore
+++ b/.hgignore
@@ -74,6 +74,8 @@ misc/libxine.pc
misc/relchk.sh
misc/xine-config
misc/xine-lib.spec
+misc/xine-fontconv
+misc/cdda_server
po/POTFILES
po/*.gmo
diff --git a/.hgsigs b/.hgsigs
index bcd9cb88d..367ce4851 100644
--- a/.hgsigs
+++ b/.hgsigs
@@ -1,2 +1,5 @@
5e6d0656ac4efdc1a89ed0fc32f11050f4a22970 0 iD8DBQBGZ207sBKtjPGfWZ8RAhdEAKCrkwiBT6bTof7ro5QQwewRfF/dMACffsvfK42+ahQrjpSfQxEp6k7RpCI=
42358e16442fe54fa554006e0b0bafd51e065c32 0 iD8DBQBG0xz0zbwfTn7RbcARAoD3AJ4012pabmpQvCKKDokZNyZzfPIbWgCfRk5FRly/Eei/xXnSaT54XHAT5KM=
+1dbf784bebc791266fcca02e917ee63034ac2e0b 0 iD8DBQBHgQ2mzbwfTn7RbcARArl9AKCslqZDrrm0GiU3IbBvcQVbOdSXlwCgyEMuHY2y/+T6WEeB2CXvCTs5ulI=
+b591d00fcd386cdd3779378c34b2d42b7504afc4 0 iD8DBQBHh5UfsBKtjPGfWZ8RAgvMAJ9xwnDNifmaobFYe2nR7+rJlLTkEQCgguGMqwqRZY68HWQXhEx918hp4Yg=
+ae1e23df14223cdacf83df75b28b223895d658c2 0 iD8DBQBHm6SjsBKtjPGfWZ8RAi8HAKDAHmmLu8rwN5XJJPhfEofE7BTpsgCfTyNzku+v/PhqXgl4kQnRiB6nUSE=
diff --git a/.hgtags b/.hgtags
index 6649326b2..bf92adc12 100644
--- a/.hgtags
+++ b/.hgtags
@@ -63,3 +63,7 @@ fd12068ebd3fab2438f77b06e312c4244e97950a DXR3_095
ab1531337553ad5eac24a69ac665eae33916b423 xine-lib-1_1_7-release
e0a332b9d3e8bb3fad4d7feac1e519292b062056 xine-lib-1_1_8-release
634308ab9b8276819617cab0bb6d77e10603a375 last-internal-ffmpeg
+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
diff --git a/ChangeLog b/ChangeLog
index 261d1dac3..57a8342f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -56,8 +56,66 @@ xine-lib (1.1.90) (Unreleased)
* FFmpeg is now required as an external dependency; if you want to build
xine-lib from source, please download a copy of FFmpeg from their SVN
server.
-
-xine-lib (1.1.9) (unreleased)
+ * Remove SyncFB video output plugin, the kernel module needed is no more
+ active and thus it's no more usable. If you were using SyncFB somehow,
+ please use DirectFB or VIDIX instead.
+ * The Xv and XxMC video output plugins now support Xv port selection.
+ (XvMC does not, at present.)
+ * Report more video output capabilities via (port)->get_capabilities():
+ colour controls, zooming, colour keying.
+
+xine-lib (1.1.11) unreleased
+ * 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.19, and if this gets bumped to 1.20 in a
+ future release, 1.19 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.
+
+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)
+ * 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.
+ (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.) [Bug #19]
+ * Fix a bug which causes video playback display errors on PPC/Darwin.
+
+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.
@@ -68,11 +126,11 @@ xine-lib (1.1.9) (unreleased)
* 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.
@@ -84,11 +142,11 @@ xine-lib (1.1.9) (unreleased)
buffer.
* DXR3 encoding with external ffmpeg should be fixed now.
(This was broken by ffmpeg revision 9283).
- * Enabled the WMV VC1 (ffmpeg) codec.
+ * Enabled the WMV VC1 & VMware Screen (ffmpeg) codecs.
* Fixed a crash that happened when a video output was closed
- * Made the Real demuxer recognise http references.
+ * 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]
@@ -97,8 +155,15 @@ xine-lib (1.1.9) (unreleased)
reading the COMM_TAG. [Bug #6]
* Avoid potential mislinkage at install time if a system-wide libxine.so
is present but is *not* pointing at libxine.so.1.
-
-xine-lib (1.1.8)
+ * Update French translation, thanks to Christophe Giraud. [Bug #15]
+ * Detect corrupted or broken seek tables in CBR MP3 files. [Bug #3]
+ * Fixed an issue in input_pvr with setting the frequency of the tuner for
+ ivtv versions 0.10.6+
+ * Add Turkish translation by Serdar Soytetir and Server Acim.
+ * 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) 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
@@ -116,7 +181,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
@@ -124,12 +189,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.
@@ -155,7 +220,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
@@ -167,10 +232,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
@@ -178,7 +244,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.
@@ -221,7 +287,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
@@ -231,41 +297,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
@@ -284,13 +351,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
@@ -307,31 +375,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.
@@ -367,7 +435,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
@@ -390,9 +458,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
@@ -418,20 +486,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.
@@ -452,10 +520,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)
@@ -468,15 +536,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
@@ -492,11 +560,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
@@ -507,15 +575,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.
@@ -541,7 +609,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
@@ -566,9 +634,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
@@ -582,12 +650,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
@@ -602,9 +670,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
@@ -618,8 +686,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
@@ -658,7 +726,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
@@ -674,7 +742,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
@@ -713,7 +781,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
@@ -733,7 +801,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
@@ -789,7 +857,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
@@ -801,7 +869,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
@@ -843,7 +911,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
@@ -919,11 +987,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'
@@ -972,7 +1040,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)
@@ -991,7 +1059,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:
@@ -1012,7 +1080,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
@@ -1034,7 +1102,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
@@ -1051,7 +1119,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
@@ -1059,7 +1127,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)
@@ -1089,13 +1157,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
@@ -1122,14 +1190,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
@@ -1146,7 +1214,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
@@ -1159,7 +1227,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
@@ -1171,7 +1239,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
@@ -1180,7 +1248,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
@@ -1224,7 +1292,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
@@ -1249,7 +1317,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
@@ -1261,7 +1329,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
@@ -1283,7 +1351,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
@@ -1304,7 +1372,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
@@ -1330,7 +1398,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
@@ -1347,7 +1415,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
@@ -1359,7 +1427,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)
@@ -1371,7 +1439,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
@@ -1390,7 +1458,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.
@@ -1398,7 +1466,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
@@ -1417,7 +1485,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
@@ -1431,7 +1499,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!)
@@ -1441,7 +1509,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
@@ -1450,13 +1518,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
@@ -1468,14 +1536,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
@@ -1492,7 +1560,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
@@ -1505,7 +1573,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.
@@ -1523,7 +1591,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
@@ -1535,7 +1603,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
@@ -1545,7 +1613,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
@@ -1559,7 +1627,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)
@@ -1572,7 +1640,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)
@@ -1583,8 +1651,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
@@ -1595,8 +1662,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
@@ -1610,16 +1676,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.
@@ -1631,36 +1695,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/Makefile.am b/Makefile.am
index 424bbcbaa..71f93f333 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -13,24 +13,20 @@ 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) $@
@@ -79,6 +75,9 @@ install-data-hook:
$(top_srcdir)/post-install.sh ; \
fi
+dist-hook:
+ cp -p $(srcdir)/version.sh $(distdir)
+
mostlyclean-generic:
-rm -f *~ \#* .*~ .\#*
diff --git a/configure.ac b/configure.ac
index 80db4096b..8d2674e59 100644
--- a/configure.ac
+++ b/configure.ac
@@ -63,13 +63,18 @@ AC_DEFINE_UNQUOTED([XINE_MINOR], [$XINE_MINOR], [xine minor version number])
XINE_SUB=XINE_VERSION_SUB
AC_SUBST(XINE_SUB)
AC_DEFINE_UNQUOTED([XINE_SUB], [$XINE_SUB], [xine sub version number])
+XINE_PATCH=XINE_VERSION_PATCH
+AC_SUBST(XINE_PATCH)
+AC_DEFINE_UNQUOTED([XINE_PATCH], [$XINE_PATCH], [xine patch version number])
XINE_LT_CURRENT=__XINE_LT_CURRENT
AC_SUBST(XINE_LT_CURRENT)
+AC_DEFINE_UNQUOTED(XINE_LT_CURRENT, $XINE_LT_CURRENT, [xine interface version number])
XINE_LT_REVISION=__XINE_LT_REVISION
AC_SUBST(XINE_LT_REVISION)
XINE_LT_AGE=__XINE_LT_AGE
AC_SUBST(XINE_LT_AGE)
+AC_DEFINE_UNQUOTED(XINE_LT_AGE, $XINE_LT_AGE, [xine interface version age])
LIBNAME="libxine$(($XINE_LT_CURRENT-$XINE_LT_AGE))"
AC_SUBST(LIBNAME)
@@ -153,6 +158,7 @@ dnl checks for programs
dnl -------------------
AC_PROG_CC
+AM_PROG_CC_C_O
AC_GNU_SOURCE
AC_ISC_POSIX
@@ -477,6 +483,9 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]], [[int a; memset(&a,
[warnflags="$warnflags -Wpointer-arith"
AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+CC_CHECK_LDFLAGS([-Wl,--gc-sections], [GCSECTIONS="-Wl,--gc-sections"])
+AC_SUBST([GCSECTIONS])
+
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 platforms not behaving this way.
@@ -618,7 +627,7 @@ case "$host_or_hostalias" in
;;
x86_64-*)
- arch_x86=yes
+ arch_x86=64
AC_DEFINE([ARCH_X86_64], [], [Define this if you're running x86 architecture 64 bits])
;;
@@ -626,10 +635,10 @@ case "$host_or_hostalias" in
case "$host_or_hostalias" in
universal-*)
arch_ppc=yes
- arch_x86=yes
+ arch_x86=32
;;
i386-* | x86_64-*)
- arch_x86=yes
+ arch_x86=32
AC_DEFINE([ARCH_X86_32], [], [Define this if you're running x86 architecture 32 bits])
;;
ppc* | powerpc*)
@@ -673,7 +682,7 @@ case "$host_or_hostalias" in
;;
i?86-* | k?-* | athlon-* | pentium*)
- arch_x86=yes
+ arch_x86=32
enable_impure_text=yes
case "$host_or_hostalias" in
@@ -791,13 +800,15 @@ AC_SUBST(PASS2_CFLAGS)
test x"$DEFAULT_OCFLAGS" = x"" && DEFAULT_OCFLAGS='$(O3_CFLAGS)'
AC_SUBST(DEFAULT_OCFLAGS)
-if test x"$arch_x86" = x"yes" && test x"$enable_macosx_universal" = x"no"; then
+if test x"$arch_x86" != x"no" && test x"$enable_macosx_universal" = x"no"; then
AC_DEFINE([ARCH_X86], [], [Define this if you're running x86 architecture])
AC_DEFINE([HAVE_MMX], [], [Define this if you can compile MMX asm instructions])
fi
AM_CONDITIONAL([ARCH_PPC], test x"$arch_ppc" = x"yes")
-AM_CONDITIONAL([ARCH_X86], test x"$arch_x86" = x"yes")
-AM_CONDITIONAL([HAVE_MMX], test x"$arch_x86" = x"yes")
+AM_CONDITIONAL([ARCH_X86], test x"$arch_x86" != x"no")
+AM_CONDITIONAL([ARCH_X86_32], test x"$arch_x86" = x"32")
+AM_CONDITIONAL([ARCH_X86_64], test x"$arch_x86" = x"64")
+AM_CONDITIONAL([HAVE_MMX], test x"$arch_x86" != x"no")
AM_CONDITIONAL([HOST_OS_DARWIN], test x"$HOST_OS_DARWIN" = x"1")
if test x"$enable_impure_text" = x"yes"; then
@@ -981,40 +992,50 @@ makeexpand () {
xinelibdir='${libdir}/xine'
xinedatadir='${datadir}/xine'
+pkgconfigdir='${libdir}/pkgconfig'
AC_SUBST(xinelibdir)
AC_SUBST(xinedatadir)
+AC_SUBST(pkgconfigdir)
-XINE_PLUGINDIR="\${xinelibdir}/plugins/$XINE_MAJOR.$XINE_MINOR.$XINE_SUB"
+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_PLUGINDIR="`makeexpand "$XINE_PLUGINDIR"`"
-XINE_REL_PLUGINDIR="`makeexpand "$XINE_REL_PLUGINDIR" | sed -e "s,^${prefix}/,,"`"
+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"`"
if test "x$WIN32_SYS" = "xmingw32" -o "x$WIN32_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_PLUGINROOT="`echo "$XINE_REL_PLUGINROOT" | sed -e 's/\\//\\\\\\\\/g'`"
+ XINE_REL_PLUGINDIR="$XINE_REL_PLUGINROOT.$XINE_LT_AGE"
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_PLUGINROOTPATH="$XINE_CONFIG_PREFIX/$XINE_REL_PLUGINROOT"
+ XINE_PLUGINPATH="$XINE_PLUGINROOTPATH.$XINE_LT_AGE"
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_PLUGINPATH="$XINE_PLUGINROOTPATH.$XINE_LT_AGE"
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_PLUGINPATH"], [Define this to soecific 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
@@ -1028,6 +1049,7 @@ AC_SUBST(XINE_LOCALEPATH)
AC_SUBST(XINE_PLUGINDIR)
AC_SUBST(XINE_FONTDIR)
AC_SUBST(XINE_LOCALEDIR)
+AC_SUBST(XINE_PKGCONFIG_DIR)
dnl Where aclocal m4 files should be installed
xine_acflags='-I ${datarootdir}/aclocal'
@@ -1153,7 +1175,6 @@ contrib/nosefart/Makefile
contrib/vidix/Makefile
contrib/vidix/drivers/Makefile
include/Makefile
-include/xine/Makefile
include/xine/version.h
lib/Makefile
m4/Makefile
@@ -1161,9 +1182,9 @@ m4/gettext/Makefile
misc/Makefile
misc/SlackBuild
misc/build_rpms.sh
-misc/fonts/Makefile
misc/libxine.pc
misc/relchk.sh
+misc/xine-config
misc/xine-lib.spec
po/Makefile.in
src/Makefile
@@ -1201,11 +1222,17 @@ src/video_out/macosx/Makefile
src/xine-utils/Makefile
src/xine-engine/Makefile
src/vdr/Makefile
-win32/Makefile
-win32/include/Makefile])
+win32/Makefile])
AC_CONFIG_COMMANDS([default],[[chmod +x ./misc/SlackBuild ./misc/build_rpms.sh ./misc/relchk.sh]],[[]])
AC_OUTPUT
+dnl Guard against multiple inclusion
+AH_TOP([#ifndef _XINE_CONFIGURE_H_
+#define _XINE_CONFIGURE_H_
+])
+AH_BOTTOM([#endif
+])
+
dnl ---------------------------------------------
dnl Work around a suspected bug in libtool:
dnl
diff --git a/debian/changelog b/debian/changelog
index 63a658013..b015c2afa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,13 +5,16 @@ xine-lib-1.2 (1.2.0~hg-0) experimental; urgency=low
-- Darren Salt <linux@youmustbejoking.demon.co.uk> Tue, 17 Apr 2007 16:50:37 +0100
-xine-lib (1.1.9~hg-0) unstable; urgency=low
+xine-lib (1.1.10.1+hg-0) unstable; urgency=low
+
+ [ Darren Salt ]
+ * Hg snapshot.
[ Reinhard Tartler ]
* 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> Thu, 07 Feb 2008 17:52:34 +0000
xine-lib (1.1.5~cvs-0) unstable; urgency=low
diff --git a/debian/control b/debian/control
index a0c994cde..d3a1b1bde 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,6 @@ Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config,
libxcb-xvmc0-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),
libasound2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386],
libaa1-dev, libcaca-dev, libmodplug-dev,
libmagick9-dev, libpng12-dev, libfreetype6-dev,
@@ -19,7 +18,7 @@ Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config,
libesd0-dev, libgnomevfs2-dev,
zlib1g-dev, libartsc0-dev,
liblircclient-dev, libjack0.100.0-dev | libjack-dev,
- libdirectfb-dev, libgtk2.0-dev,
+ libdirectfb-dev (>= 0.9.22), 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), libvcdinfo-dev,
@@ -30,7 +29,7 @@ Standards-Version: 3.7.2
Package: libxine-dev
Architecture: any
Section: libdevel
-Depends: libxine2 (= ${Source-Version}), libc6-dev, zlib1g-dev | libz-dev, libslang2-dev | slang1-dev, libfreetype6-dev
+Depends: libxine2 (= ${Source-Version}), libc6-dev, zlib1g-dev | libz-dev, libslang2-dev | slang1-dev, libfreetype6-dev, pkg-config
Conflicts: xine-ui (<< 0.9.10), libxine-dev
Description: the xine video player library, development packages
This contains development files (headers, documentation and the like)
@@ -66,8 +65,8 @@ Description: the xine video player library, development packages
Package: libxine2
Architecture: any
Depends: ${shlibs:Depends}
-Recommends: ${shlibs:Recommends}, libxine2-doc | libxine-doc
-Suggests: ${shlibs:Suggests}, libartsc0
+Recommends: ${shlibs:Recommends}
+Suggests: ${shlibs:Suggests}, libxine2-doc | libxine-doc
Conflicts: libxine2-all-plugins, libxine2-bin, libxine2-console, libxine2-ffmpeg, libxine2-gnome, libxine2-misc-plugins, libxine2-plugins, libxine2-x
Replaces: libxine2-all-plugins, libxine2-bin, libxine2-console, libxine2-ffmpeg, libxine2-gnome, libxine2-misc-plugins, libxine2-plugins, libxine2-x
Provides: libxine2-all-plugins, libxine2-bin, libxine2-console, libxine2-ffmpeg, libxine2-gnome, libxine2-misc-plugins, libxine2-plugins, libxine2-x
diff --git a/debian/libxine2-doc.docs b/debian/libxine2-doc.docs
index a1e62bcf1..799c2c091 100644
--- a/debian/libxine2-doc.docs
+++ b/debian/libxine2-doc.docs
@@ -2,7 +2,6 @@ debian/tmp/usr/share/doc/libxine2/faq/*
debian/tmp/usr/share/doc/libxine2/README_xxmc.html
debian/tmp/usr/share/doc/libxine2/README
debian/tmp/usr/share/doc/libxine2/faq.*
-debian/tmp/usr/share/doc/libxine2/README.syncfb*
debian/tmp/usr/share/doc/libxine2/README.opengl*
debian/tmp/usr/share/doc/libxine2/README.dxr3*
debian/tmp/usr/share/doc/libxine2/README.dvb*
diff --git a/debian/rules b/debian/rules
index 0f38fb778..76b0a6c63 100755
--- a/debian/rules
+++ b/debian/rules
@@ -58,17 +58,13 @@ ifeq (,$(findstring optimize,$(DEB_BUILD_OPTIONS)))
DEB_BUILD_CONFIG_OPTIONS += --build=$(DEB_BUILD_GNU_TYPE)
endif
-# enable SyncFB video output plugin on Linux
-ifeq (linux,$(filter linux,$(subst -, ,$(DEB_BUILD_GNU_TYPE))))
- DEB_BUILD_CONFIG_OPTIONS += --enable-syncfb
-endif
-
# --mandir - remove after etch released (autoconf >= 2.59c gets it right)
CONFIGURE_FLAGS := --prefix=/usr \
--with-external-libmad \
--with-external-a52dec \
--with-external-libdts \
--with-external-faad \
+ --with-external-ffmpeg=soft \
--with-freetype \
--with-wavpack \
$(DEB_BUILD_CONFIG_OPTIONS) \
diff --git a/doc/Makefile.am b/doc/Makefile.am
index c456d8438..9929c3dcc 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.solaris README_xxmc.html README.MINGWCROSS \
README.WIN32 README.macosx
-EXTRA_DIST = $(doc_DATA)
-
docs clean-docs:
@cd faq && $(MAKE) $@
@cd hackersguide && $(MAKE) $@
diff --git a/doc/README b/doc/README
index 2674a0869..2c01dc5ce 100644
--- a/doc/README
+++ b/doc/README
@@ -40,6 +40,3 @@ README.opengl
README.solaris
hints on running xine on Solaris
-
-README.syncfb
- information about xine's SyncFB video output plugin
diff --git a/doc/README.syncfb b/doc/README.syncfb
deleted file mode 100644
index fc90ff586..000000000
--- a/doc/README.syncfb
+++ /dev/null
@@ -1,280 +0,0 @@
-
- ===== =====
- XINE video output plugin for MATROX G200/G400/G450 cards *only*
- ===== =====
-
-
-* WHAT IS THIS PLUGIN ABOUT and WHY SHOULD I EVEN CONSIDER TO USE IT? :)
-
- This xine video output plugin uses the so called SyncFB driver (from
- the Teletux project) which provides special hardware features of
- Matrox G200 and newer cards like hardware deinterlacing, scaling and
- synchronization of your video output to the vertical retrace of your
- monitor - just to name a few. The plugin makes all those features
- available to xine and because all this tasks are done by the graphic
- card there is no need for xine to do them in software -- so you save
- precious CPU time which you may gonna need for other things. :-)
-
- Ok ok -- why should you want to have your video output synchronized to
- something called the vertical retrace of your monitor?! Well... :)
-
- In order to have an optimal DVD playback the update of the image needs
- to be syncronized with the vertical refresh of the screen. Otherwise
- you will sometimes see part of frame n and part of frame n+1 during
- playback of a movie. Resulting in tearing artefacts on moving objects.
-
- When using this plugin the update of the screen is done during the
- vertical retrace of your monitor and those tearing artefacts are gone
- forever.
-
- Also the SyncFB kernel module and this plugin totally by-pass XFree86
- for anything else but some data gathering routines needed to place the
- overlay at the right spot. So on some machines you will gain some
- performance too because of the different way the SyncFB kernel module
- handles your video output.
-
- Last but not least, you may ask what's so special about deinterlacing?
- There are already several deinterlacing methods available in xine and
- why should you care about another one? Well (again)... ;-))
-
- All current deinterlacers in xine are done in software and therefore
- will cost you some CPU power. The SyncFB video out plugin will use the
- hardware deinterlacing support of your graphic card, thus saving your
- CPU power because everything is done by your GPU...
-
-
-* WILL IT WORK WITH MY G200/G400/G450/... CARD?
-
- So far the plugin and the kernel module itself are only being tested
- on G400 cards by its developers thus we cannot tell about newer
- or older generation chips.
-
- Nevertheless we have received positive feedback that the SyncFB kernel
- module and this plugin work fine with G450 cards too.
-
- If you have got things working on older/newer chips, please let us
- know about your success and we will place a note here... :-)
-
-
-* AND HOW DOES IT WORK?
-
- The SyncFB driver is a kernel module you will have to load that makes
- a special device (e.g. /dev/syncfb) available which is opened by the
- plugin and controlled with certain ioctl calls. Easy, isn't it? ;-)
-
- That module is based on the mga_vid driver from Aaron Holzmann and was
- advanced (and reworked) by Matthias Oelmann.
-
-
-* OK I HEARD ENOUGH - HOW DO I INSTALL and USE IT? :)
-
- Currently the Teletux project which maintains the kernel module seems
- orphaned and therefore there hasn't been any progress nor release in a
- fair amount of time. :( We will try to resolve this situation so that
- the development continues again. As soon as there are any news on this
- matter, this README will be updated accordingly. For the time being
- you can still use the current Teletux SyncFB kernel module which works
- just fine, so there is no need to worry. :-)
-
- Back to the original subject. In order to install and use the SyncFB
- kernel module, you *will* need a fresh CVS checkout of the sources
- because the last official release is rather outdated.
-
- This sounds more complicated than it actually is. You will only have
- to execute the following two commands to get the sources in a sub-dir
- called teletux. When you are asked for password, just press return.
-
- cvs -d:pserver:anonymous@cvs.teletux.sf.net:/cvsroot/teletux login
- cvs -d:pserver:anonymous@cvs.teletux.sf.net:/cvsroot/teletux co -P teletux
-
- Now enter the directory teletux/syncfb, that's where the actual kernel
- modul sources are located. Before you can compile the module, you will
- have to change two lines in the Makefile itself to make it work.
-
- In the second line, there is a phrase like "-I/usr/include" which you
- have to change to "-I/usr/src/linux/include". In line seven, you need
- to remove syncfbtv and syncfb_test from the OBJ list.
-
- Now execute a "make" and the module will be compiled. Place the
- resulting syncfb.o in your modules dir which is usually...
-
- /lib/modules/KERNEL_VERSION/
-
- ... and issue a "depmod -a" after it. That's it - the kernel module is
- installed. To load the syncfb module, execute "modprobe syncfb" every
- time you (re)start your computer. This will automatically create the
- required /dev/syncfb device if you have devfs support, otherwise you
- need to issue a "mknod /dev/syncfb c 178 0" once to create the
- device yourself permanently.
-
- Once the module is loaded, you can start xine with the "-V SyncFB"
- option to use this plugin. xine automatically remembers the video out
- plugin you last used, so you only have to use this option once too. :)
- But don't forget, the module *always* has to be already loaded before
- you start xine, otherwise xine will fallback to Xv/XShm or some other
- available video out plugin.
-
-
-* THE VIDEO IS JERKING - WHAT'S THE MATTER?!
-
- Playing back video material that is mastered for e.g. NTSC can cause
- this jerking if your monitor is not running at a refresh rate that is
- a multiple of 30 (PAL: 25).
-
- You can try to fix that by switching your monitor to the appropriate
- refresh rates (e.g. 50/75/100 Hz for PAL, 60/90/120 Hz for NTSC). You
- will need to add so called modelines to your XFree86 config to make
- those modes available, if you don't already have them.
-
- Here is is a short listing of some sample modelines. Please add only
- those two lines (for NTSC and PAL) which exactly fit the screensize
- you are running your X Server with. You need to add those lines to the
- monitor section of your XF86Config file as well as include their names
- in the screen section (subsection display of the color depth your are
- using).
-
- USE THE FOLLOWING MODELINES AT YOUR OWN RISK. THEY COULD DAMAGE YOUR
- MONITOR PERMANTELY - PLEASE TAKE CAUTION AND DON'T BLAME US. YOU HAVE
- BEEN WARNED.
-
- So much for the standard disclaimer. :)
-
- Note: If you want to be on the safe side, generate your very own
- modelines with an application like kvideogen for example.
-
- Also the modelines may need some fine tuning for your setup. You
- can use xvidtune (comes with XFree86) to do that.
-
- # 1024x768
-
- Modeline "1024x768pal" 64.94 1024 1040 1216 1328 768 768 775 802
- Modeline "1024x768ntsc" 54.32 1024 1040 1216 1328 768 768 774 802
-
- # 1152x864
-
- Modeline "1152x864pal" 68.82 1152 1168 1384 1496 864 864 871 902
- Modeline "1152x864ntsc" 80.93 1152 1168 1384 1496 864 864 872 902
-
- # 1280x1024
-
- none yet - might be added in the future
-
- So before you run xine just turn to the appropriate refresh rate and
- the jerking *should* be gone. (you may also want to have a look at the
- XF86VidMode support included in xine which makes on-the-fly resolution
- switching possible when fullscreen is toggled)
-
-
-* WHAT SCREENSIZE SHOULD I PREFER?
-
- Well. It is important that the screensize you choose for DVD playback
- is exactly the same screensize you're starting up your X Server with
- if you are not using the XF86VidMode extension which will properly do
- the switching for you and take care that the plugin is updated
- accordingly. So you shouldn't switch down to 1024x768 yourself if you
- are running 1280x1024 because that gives you a virtual screensize
- of 1280x1024 in a resolution of 1024x768 - and the plugin can't handle
- that - and probably never will... ok... never say never. ;)
-
- You may want to have a look at the XF86VidMode support in xine which
- will enable on-the-fly resolution switching when activating fullscreen.
-
- Now back to the question. A screensize of 800x600 should be it for
- non-anamorphic DVDs because their resolution is 720x576 for pal DVDs
- and 720x480 for ntsc ones. If you've an anamorphic DVD, you should use
- a higher resolution - 1024x768 will be best because the image only has
- to be horizontally scaled to get back to the original geometry of 16:9
- which is easier to be done.
-
-
-* WHAT ABOUT DEINTERLACING?!
-
- Pressing 'i' during playback will toggle hardware deinterlacing. A
- decrease in picture quality is a known side effect, yet you won't see
- any artefacts caused by interlacing anymore. :-)
-
- One more note, hardware deinterlacing uses BOB as deinterlacing method
- and is totally independent from the software deinterlacing in xine. So
- specifing a different deinterlacing method in your .xinerc won't have
- any effect on this feature.
-
- Nevertheless we are thinking about making software deinterlacing also
- available as an option. It's on the TODO list... :)
-
-
-* HEY! THE OVERLAY TURNS OFF WHEN THE WINDOW IS PARTLY OFF THE DESKTOP!?
-
- That's done on purpose. It prevents possible yet harmless screen
- corruption. And by the way - why would you want to see a movie just
- partly?! ;-)
-
-
-* MY DESKTOP BACKGROUND IMAGE GETS CORRUPTED WHEN USING THIS PLUGIN!
-
- Even though it doesn't look nice, it's nevertheless harmless. So no
- need to worry about it. XFree86 is using your free video memory as
- cache for certain things. Now when you use this plugin that part of
- your video memory could also be used by the syncfb module. So your
- image data cached there will be corrupted. Unfortunately there is no
- way to avoid it. Yet, like stated earlier, it is truely harmless and
- just a cosmetical side effect.
-
-
-* THE XINE PANEL DOES NOT APPEAR WHEN I WATCH A MOVIE IN FULLSCREEN?!
-
- Actually it does appear - you just don't see it. :) This is a side
- effect of how SyncFB works. The X server can't display anything where
- the actual overlay from SyncFB is being displayed because this area in
- your video memory is constantly over written - so are the changes done
- by your X Server (like a window graphic that is placed there).
-
- This is just cosmetical and harmless, so no need to worry. If you want
- to do something with the xine panel when the video overlay is taking
- all your screen, just switch back to window mode and do what you have
- to do and after that, back to fullscreen it goes. :-)
-
-
-* KNOWN BUGs
-
- + the default_repeat config option is currently hardcoded to 0 because
- any higher value than 1 will trigger a bug with the SyncFB kernel module
- that results in a distorted picture (depending on video resolution)
- [this bug is hard to trace, so don't hold your breath for now]
-
- + SyncFB overlay won't turn off when video window is minimized or
- somehow else hidden.
- [currently there is no way for the SyncFB plugin to know about the
- state of the video window except if the original xine-ui hide function
- is used to hide the video window... this will be fixed soon]
-
- + zooming feature is currently deactivated because it exposes a bug
- with the SyncFB kernel module
- [for now, don't expect this to be fixed soon - sorry]
-
- + the syncfb kernel module needs updating pretty badly
-
-
-* WHAT IS ON THE TODO LIST?
-
- + fix above listed bugs in the SyncFB kernel module
-
- + make software deinterlacing available as an option
-
- + RGB support
- (unlikely at the moment because there is no need for it)
-
- + check if the video source is not too big in terms of dimensions for
- the video memory left (video memory - X reserved video memory)
-
- + bug fixes
- + more sanity checks
- + new features
- + optimizations
-
-
-* CONTACTS and FEEDBACK
-
- Your first starting point should be this README followed by the FAQ. :-)
- If you don't find your answers there or if you found a bug, please leave
- a message on the xine user mailinglist (see the general README).
-
diff --git a/doc/faq/faq.docbook b/doc/faq/faq.docbook
index fa414f1e9..8d09441e1 100644
--- a/doc/faq/faq.docbook
+++ b/doc/faq/faq.docbook
@@ -8,7 +8,7 @@
<title>The xine engine FAQ</title>
<titleabbrev>xine FAQ</titleabbrev>
<copyright>
- <year>2001-2007</year>
+ <year>2001-2008</year>
<holder>the xine project team</holder>
</copyright>
</bookinfo>
@@ -948,7 +948,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>&nbsp;&nbsp;&nbsp;<command>xine test.mpg#subtitle:file.sub</command></screen>
+ <screen>&nbsp;&nbsp;&nbsp;<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.
@@ -1828,7 +1828,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).
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.
diff --git a/doc/man/en/xine.5 b/doc/man/en/xine.5
index 297aff48e..2c267f5d3 100644
--- a/doc/man/en/xine.5
+++ b/doc/man/en/xine.5
@@ -264,7 +264,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#subtitles:/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
diff --git a/include/Makefile.am b/include/Makefile.am
index 1493a33f8..7f569f498 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,17 +1,53 @@
-SUBDIRS = xine
-#EXTRA_DIST = xine.h.in
+EXTRA_DIST = xine/version.h.in
if GENERATED_INTTYPES_H
inttypes_h = inttypes.h
endif
-include_HEADERS = xine.h
+nobase_include_HEADERS = xine.h \
+ xine/alphablend.h \
+ xine/array.h \
+ xine/attributes.h \
+ xine/audio_decoder.h \
+ xine/audio_out.h \
+ xine/broadcaster.h \
+ xine/buffer.h \
+ xine/compat.h \
+ xine/configfile.h \
+ xine/demux.h \
+ xine/info_helper.h \
+ xine/input_plugin.h \
+ xine/io_helper.h \
+ xine/list.h \
+ xine/metronom.h \
+ xine/os_types.h \
+ xine/osd.h \
+ xine/plugin_catalog.h \
+ xine/pool.h \
+ xine/post.h \
+ xine/refcounter.h \
+ xine/resample.h \
+ xine/ring_buffer.h \
+ xine/scratch.h \
+ xine/sorted_array.h \
+ xine/spu.h \
+ xine/spu_decoder.h \
+ xine/vdr.h \
+ xine/version.h \
+ xine/video_decoder.h \
+ xine/video_out.h \
+ xine/video_overlay.h \
+ xine/vo_scale.h \
+ xine/xine_buffer.h \
+ xine/xine_internal.h \
+ xine/xine_plugin.h \
+ xine/xineintl.h \
+ xine/xineutils.h \
+ xine/xmllexer.h \
+ xine/xmlparser.h
noinst_HEADERS = config.h configure.h
-CONFIG_CLEAN_FILES = $(inttypes_h)
+nodist_include_HEADERS = $(inttypes_h)
-install-data-local: install-includeHEADERS
-if GENERATED_INTTYPES_H
- $(INSTALL) inttypes.h $(DESTDIR)$(includedir)
-endif
+CONFIG_CLEAN_FILES = $(inttypes_h)
diff --git a/include/xine/Makefile.am b/include/xine/Makefile.am
deleted file mode 100644
index cc086dfaf..000000000
--- a/include/xine/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-EXTRA_DIST = version.h.in
-
-xineincludedir = $(includedir)/xine
-xineinclude_HEADERS = version.h buffer.h metronom.h configfile.h vo_scale.h \
- audio_out.h resample.h video_out.h xine_internal.h spu_decoder.h \
- video_overlay.h osd.h spu.h scratch.h xine_plugin.h xineintl.h \
- plugin_catalog.h audio_decoder.h video_decoder.h post.h \
- io_helper.h broadcaster.h info_helper.h refcounter.h alphablend.h \
- demux.h input_plugin.h attributes.h compat.h xine_buffer.h \
- xineutils.h xmllexer.h xmlparser.h list.h array.h sorted_array.h \
- pool.h ring_buffer.h os_types.h vdr.h
diff --git a/include/xine/buffer.h b/include/xine/buffer.h
index 4af718a1b..9401f8852 100644
--- a/include/xine/buffer.h
+++ b/include/xine/buffer.h
@@ -192,6 +192,7 @@ extern "C" {
#define BUF_VIDEO_VP6F 0x02630000
#define BUF_VIDEO_THEORA_RAW 0x02640000
#define BUF_VIDEO_VC1 0x02650000
+#define BUF_VIDEO_VMNC 0x02660000
/*@}*/
/**
diff --git a/include/xine/configfile.h b/include/xine/configfile.h
index 724a75245..e8f2c070e 100644
--- a/include/xine/configfile.h
+++ b/include/xine/configfile.h
@@ -148,6 +148,8 @@ struct config_values_s {
xine_config_cb_t changed_cb,
void *cb_data);
+ void (*register_entry) (config_values_t *self, cfg_entry_t* entry);
+
/** convenience function to update range, enum, num and bool values */
void (*update_num) (config_values_t *self, const char *key, int value);
@@ -167,7 +169,7 @@ struct config_values_s {
cfg_entry_t* (*lookup_entry) (config_values_t *self, const char *key);
/**
- * unregister callback function
+ * unregister entry callback function
*/
void (*unregister_callback) (config_values_t *self, const char *key);
@@ -176,12 +178,41 @@ struct config_values_s {
*/
void (*dispose) (config_values_t *self);
- /*
+ /**
+ * callback called when a new config entry is registered
+ */
+ void (*set_new_entry_callback) (config_values_t *self, xine_config_cb_t new_entry_cb, void *cb_data);
+
+ /**
+ * unregister the callback
+ */
+ void (*unset_new_entry_callback) (config_values_t *self);
+
+ /**
+ * serialize a config entry.
+ * return a base64 null terminated string.
+ */
+ char* (*get_serialized_entry) (config_values_t *self, const char *key);
+
+ /**
+ * deserialize a config entry.
+ * value is a base 64 encoded string
+ * return the key of the serialized entry
+ */
+ char* (*register_serialized_entry) (config_values_t *self, const char *value);
+
+ /**
* config values are stored here:
*/
cfg_entry_t *first, *last, *cur;
/**
+ * new entry callback
+ */
+ xine_config_cb_t new_entry_cb;
+ void *new_entry_cbdata;
+
+ /**
* mutex for modification to the config
*/
pthread_mutex_t config_lock;
diff --git a/include/xine/plugin_catalog.h b/include/xine/plugin_catalog.h
index be02c3649..bacdfa56c 100644
--- a/include/xine/plugin_catalog.h
+++ b/include/xine/plugin_catalog.h
@@ -45,6 +45,7 @@ typedef struct {
plugin_file_t *file;
plugin_info_t *info;
void *plugin_class;
+ xine_list_t *config_entry_list;
int ref; /* count intances of plugins */
int priority;
} plugin_node_t ;
diff --git a/include/xine/video_out.h b/include/xine/video_out.h
index f34380af1..02eff3cac 100644
--- a/include/xine/video_out.h
+++ b/include/xine/video_out.h
@@ -282,7 +282,14 @@ struct xine_video_port_s {
#define VO_CAP_UNSCALED_OVERLAY 0x00000010 /* driver can blend overlay at output resolution */
#define VO_CAP_CROP 0x00000020 /* driver can crop */
#define VO_CAP_XXMC 0x00000040 /* driver can use extended XvMC */
-
+#define VO_CAP_HUE 0x00010000
+#define VO_CAP_SATURATION 0x00020000
+#define VO_CAP_CONTRAST 0x00040000
+#define VO_CAP_BRIGHTNESS 0x00080000
+#define VO_CAP_COLORKEY 0x00100000
+#define VO_CAP_AUTOPAINT_COLORKEY 0x00200000
+#define VO_CAP_ZOOM_X 0x00400000
+#define VO_CAP_ZOOM_Y 0x00800000
/*
* vo_driver_s contains the functions every display driver
diff --git a/include/xine/xineutils.h b/include/xine/xineutils.h
index 0ab6fdc07..8ef64b143 100644
--- a/include/xine/xineutils.h
+++ b/include/xine/xineutils.h
@@ -942,6 +942,12 @@ const char *xine_guess_spu_encoding(void) XINE_PROTECTED;
*/
int xine_monotonic_clock(struct timeval *tv, struct timezone *tz) XINE_PROTECTED;
+/**
+ * Unknown FourCC reporting functions
+ */
+void _x_report_video_fourcc (xine_t *, const char *module, uint32_t) XINE_PROTECTED;
+void _x_report_audio_format_tag (xine_t *, const char *module, uint32_t) XINE_PROTECTED;
+
/* don't harm following code */
#ifdef extern
# undef extern
diff --git a/lib/strtok_r.c b/lib/strtok_r.c
index cead029a2..8a5284a42 100644
--- a/lib/strtok_r.c
+++ b/lib/strtok_r.c
@@ -19,7 +19,7 @@ char *xine_private_strtok_r(char *s, const char *delim, char **ptrptr) {
else s = *ptrptr;
/* end of searching */
- if (!s || s == '\0') return NULL;
+ if (!s || !*s) return NULL;
/* cut the initial garbage */
cutlen = strspn(s, delim);
@@ -32,12 +32,12 @@ char *xine_private_strtok_r(char *s, const char *delim, char **ptrptr) {
}
next = s + toklen;
+ /* prepare next call */
+ *ptrptr = *next ? next + 1 : NULL;
+
/* cut current token */
*next = '\0';
- /* prepare next call */
- *ptrptr = next + 1;
-
/* return the token */
return 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/decoders.m4 b/m4/decoders.m4
index f5f8aac76..a6c53f5fc 100644
--- a/m4/decoders.m4
+++ b/m4/decoders.m4
@@ -4,13 +4,9 @@ dnl ---------------------------
AC_DEFUN([XINE_DECODER_PLUGINS], [
dnl a52dec (optional; enabled by default; external version allowed)
AC_ARG_ENABLE([a52dec],
- [AS_HELP_STRING([--enable-a52dec], [Enable support for a52dec decoding library (default: enabled)])],
- [test x"$enableval" != x"no" && enable_a52dec="yes"])
- AC_ARG_WITH([external-a52dec],
- [AS_HELP_STRING([--with-external-a52dec], [Use external a52dec library (not recommended)])],
- [test x"$withval" != x"no" && with_external_a52dec="yes"], [with_external_a52dec="no"])
+ [AS_HELP_STRING([--enable-a52dec], [Enable support for a52dec decoding library (default: enabled, external: use external copy)])])
if test x"$enable_a52dec" != x"no"; then
- if test x"$with_external_a52dec" != x"no"; then
+ if test x"$enable_a52dec" == x"external"; then
AC_CHECK_LIB([a52], [a52_init],
[AC_CHECK_HEADERS([a52dec/a52.h a52dec/a52_internal.h], [have_external_a52dec=yes], [have_external_a52dec=no],
[#ifdef HAVE_SYS_TYPES_H
@@ -60,13 +56,9 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
dnl FAAD (optional; enabled by default)
AC_ARG_ENABLE([faad],
- [AS_HELP_STRING([--enable-faad], [Enable support for FAAD decoder (default: enabled)])],
- [test x"$enableval" != x"no" && enable_faad="yes"])
- AC_ARG_WITH([external-faad],
- [AS_HELP_STRING([--with-external-faad], [Use external FAAD decoeder])],
- [test x"$withval" != x"no" && with_external_faad="yes"], [with_external_faad="no"])
+ [AS_HELP_STRING([--enable-faad], [Enable support for FAAD decoder (default: enabled, external: use external copy)])])
if test x"$enable_faad" != x"no"; then
- if test x"$with_external_faad" != x"no"; then
+ if test x"$enable_faad" == x"external"; then
AC_CHECK_LIB([faad], [NeAACDecInit],
[AC_CHECK_HEADERS([neaacdec.h], [have_external_faad=yes], [have_external_faad=no],
[#include <neaacdec.h>])], [have_external_faad=no], [-lm])
@@ -98,6 +90,10 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
PKG_CHECK_MODULES([FFMPEG_POSTPROC], [libpostproc])
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_HEADER([ffmpeg/avutil.h])
+
dnl gdk-pixbuf (optional; enabled by default)
AC_ARG_ENABLE([gdkpixbuf],
[AS_HELP_STRING([--enable-gdkpixbuf], [Enable GdkPixbuf support (default: enabled)])],
@@ -126,13 +122,9 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
dnl libdts (optional; enabled by default; external version allowed)
AC_ARG_ENABLE([dts],
- [AS_HELP_STRING([--enable-dts], [Enable support for DTS decoding library (default: enabled)])],
- [test x"$enableval" != x"no" && enable_dts="yes"])
- AC_ARG_WITH([external-libdts],
- [AS_HELP_STRING([--with-external-libdts], [Use external libdts/libdca library (not recommended)])],
- [test x"$withval" != x"no" && with_external_libdts="yes"], [with_external_libdts="no"])
+ [AS_HELP_STRING([--enable-dts], [Enable support for DTS decoding library (default: enabled, external: use external copy)])])
if test x"$enable_dts" != x"no"; then
- if test x"$with_external_libdts" != x"no"; then
+ if test x"$enable_dts" == x"external"; then
PKG_CHECK_MODULES([LIBDTS], [libdts], [have_external_dts=yes], [have_external_dts=no])
if test x"$have_external_dts" != x"yes"; then
AC_MSG_RESULT([*** no usable version of libdts found, using internal copy ***])
@@ -140,7 +132,7 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
else
AC_MSG_RESULT([Using included libdts support])
fi
- if test x"$have_external_libdts" != x"yes"; then
+ if test x"$have_external_dts" != x"yes"; then
LIBDTS_CFLAGS='-I$(top_srcdir)/contrib/libdca/include'
LIBDTS_DEPS='$(top_builddir)/contrib/libdca/libdca.la'
LIBDTS_LIBS='$(top_builddir)/contrib/libdca/libdca.la'
@@ -148,7 +140,7 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
fi
fi
AM_CONDITIONAL([ENABLE_DTS], [test x"$enable_dts" != x"no"])
- AM_CONDITIONAL([WITH_EXTERNAL_LIBDTS], [test x"$have_external_libdts" = x"yes"])
+ AM_CONDITIONAL([WITH_EXTERNAL_LIBDTS], [test x"$have_external_dts" = x"yes"])
dnl libFLAC (optional; disabled by default)
@@ -221,13 +213,9 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
dnl libmad (optional; enabled by default; external version allowed)
AC_ARG_ENABLE([mad],
- [AS_HELP_STRING([--enable-mad], [Enable support for MAD decoding library (default: enabled)])],
- [test x"$enableval" != x"no" && enable_mad="yes"])
- AC_ARG_WITH([external-libmad],
- [AS_HELP_STRING([--with-external-libmad], [use external libmad library (not recommended)])],
- [test x"$withval" != x"no" && with_external_libmad="yes"], [with_external_libmad="no"])
+ [AS_HELP_STRING([--enable-mad], [Enable support for MAD decoding library (default: enabled, external: use external copy)])])
if test x"$enable_mad" != x"no"; then
- if test x"$with_external_libmad" != x"no"; then
+ if test x"$enable_mad" == x"external"; then
PKG_CHECK_MODULES([LIBMAD], [mad],
[AC_CHECK_HEADERS([mad.h], [have_external_libmad=yes], [have_external_libmad=no])],
[have_external_libmad=no])
@@ -299,13 +287,9 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
dnl libmpcdec (optional; enabled by default; external version allowed)
AC_ARG_ENABLE([musepack],
- [AS_HELP_STRING([--enable-musepack], [Enable support for Musepack decoding (default: enabled)])],
- [test x"$enableval" != x"no" && enable_musepack="yes"])
- AC_ARG_WITH([external-libmpcdec],
- [AS_HELP_STRING([--with-external-libmpcdec], [Use external libmpc library])],
- [test x"$withval" != x"no" && with_external_libmpcdec="yes"], [with_external_libmpcdec="no"])
+ [AS_HELP_STRING([--enable-musepack], [Enable support for Musepack decoding (default: enabled, external: use external copy)])])
if test x"$enable_musepack" != x"no"; then
- if test x"$with_external_libmpcdec" != x"no"; then
+ if test x"$enable_musepack" == x"external"; then
AC_CHECK_LIB([mpcdec], [mpc_decoder_decode],
[AC_CHECK_HEADERS([mpcdec/mpcdec.h], [have_external_libmpcdec=yes], [have_external_libmpcdec=no])],
[have_external_libmpcdec=no])
diff --git a/m4/summary.m4 b/m4/summary.m4
index a96e11e5a..4a8f6db07 100644
--- a/m4/summary.m4
+++ b/m4/summary.m4
@@ -120,7 +120,7 @@ AC_DEFUN([XINE_LIB_SUMMARY], [
fi
fi
if test x"$enable_libdts" != x"no"; then
- if test x"$have_external_libdts" = x"yes"; then
+ if test x"$have_external_dts" = x"yes"; then
echo " - DTS (external library)"
else
echo " - DTS (internal library)"
@@ -179,9 +179,6 @@ AC_DEFUN([XINE_LIB_SUMMARY], [
echo " * video driver plugins:"
if test x"$no_x" != x"yes"; then
echo " - XShm (X11 shared memory)"
- if test x"$have_syncfb" = x"yes"; then
- echo " - SyncFB (for Matrox G200/G400 cards)"
- fi
if test x"$have_xv" = x"yes"; then
if test x"$have_xv_static" = x"yes"; then
echo " - Xv (XVideo *static*)"
diff --git a/m4/video_out.m4 b/m4/video_out.m4
index 043d563e8..df782ff06 100644
--- a/m4/video_out.m4
+++ b/m4/video_out.m4
@@ -2,7 +2,7 @@ dnl -----------------
dnl Video out plugins
dnl -----------------
AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [
- dnl Setup defaults for the target operating system. For example, syncfb is
+ dnl Setup defaults for the target operating system. For example, linuxfb is
dnl only ever available on Linux, so don't bother checking for it unless
dnl explicitly requested to do so on other operating systems.
dnl Notes:
@@ -11,7 +11,6 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [
dnl - dxr3 is Linux only
dnl - Mac OS X video is Mac OS X only
dnl - OpenGL requires Xwindows
- dnl - SyncFB is Linux only, but disabled by default
dnl - Vidix is FreeBSD and Linux only
dnl - XvMC and xxmc depend on Xv
@@ -24,7 +23,6 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [
default_enable_linuxfb=disable
default_enable_macosx_video=disable
default_enable_opengl=enable
- default_enable_syncfb=disable
default_enable_vidix=disable
default_enable_xinerama=enable
default_enable_xvmc=enable
@@ -293,21 +291,6 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [
AM_CONDITIONAL([ENABLE_SUNFB], [test x"$have_sunfb" = x"yes"])
- dnl syncfb (Linux only)
- AC_ARG_ENABLE([syncfb],
- [AS_HELP_STRING([--enable-syncfb], [enable support for syncfb (Linux only)])],
- [test x"$enableval" != x"no" && enable_syncfb="yes"],
- [test $default_enable_syncfb = disable && enable_syncfb="no"])
- dnl There's no good test for this. If the user says so, then do it
- if test x"$enable_syncfb" != x"no" && test x"$no_x" != x"yes"; then
- have_syncfb=yes
- fi
- if test x"$enable_syncfb" = x"yes" && test x"$have_syncfb" != x"yes"; then
- AC_MSG_ERROR([Linux syncfb support requested, but required X support is disabled])
- fi
- AM_CONDITIONAL([ENABLE_SYNCFB], [test x"$have_syncfb" = x"yes"])
-
-
dnl xcb
AC_ARG_WITH([xcb],
[AS_HELP_STRING([--with-xcb], [Enable support for XCB video out plugins])],
diff --git a/misc/Makefile.am b/misc/Makefile.am
index 70cbe59ee..cd013b752 100644
--- a/misc/Makefile.am
+++ b/misc/Makefile.am
@@ -1,27 +1,69 @@
include $(top_srcdir)/misc/Makefile.common
-SUBDIRS = fonts
-
EXTRA_DIST = build_rpms.sh \
- cdda_server.c \
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.common
+ Makefile.common \
+ fonts/cetus.ttf
bin_SCRIPTS = xine-config
-pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA=libxine.pc
-xine-fontconv: xine-fontconv.c
- $(CC) -W -Wall -g -o xine-fontconv xine-fontconv.c -lz `freetype-config --cflags` `freetype-config --libs`
+fontdir = $(pkgdatadir)/fonts
+dist_font_DATA = \
+ fonts/cetus-16.xinefont.gz \
+ fonts/cetus-20.xinefont.gz \
+ fonts/cetus-24.xinefont.gz \
+ fonts/cetus-32.xinefont.gz \
+ fonts/cetus-48.xinefont.gz \
+ fonts/cetus-64.xinefont.gz \
+ fonts/cc-16.xinefont.gz \
+ fonts/cc-20.xinefont.gz \
+ fonts/cc-24.xinefont.gz \
+ fonts/cc-32.xinefont.gz \
+ fonts/cc-48.xinefont.gz \
+ fonts/cc-64.xinefont.gz \
+ fonts/cci-16.xinefont.gz \
+ fonts/cci-20.xinefont.gz \
+ fonts/cci-24.xinefont.gz \
+ fonts/cci-32.xinefont.gz \
+ fonts/cci-48.xinefont.gz \
+ fonts/cci-64.xinefont.gz \
+ fonts/mono-16.xinefont.gz \
+ fonts/mono-20.xinefont.gz \
+ fonts/mono-24.xinefont.gz \
+ fonts/mono-32.xinefont.gz \
+ fonts/mono-48.xinefont.gz \
+ fonts/mono-64.xinefont.gz \
+ fonts/sans-16.xinefont.gz \
+ fonts/sans-20.xinefont.gz \
+ fonts/sans-24.xinefont.gz \
+ fonts/sans-32.xinefont.gz \
+ fonts/sans-48.xinefont.gz \
+ fonts/sans-64.xinefont.gz \
+ fonts/serif-16.xinefont.gz \
+ fonts/serif-20.xinefont.gz \
+ fonts/serif-24.xinefont.gz \
+ fonts/serif-32.xinefont.gz \
+ fonts/serif-48.xinefont.gz \
+ fonts/serif-64.xinefont.gz
+
+dist_doc_DATA = fonts/README.cetus
+
+EXTRA_PROGRAMS = xine-fontconv cdda_server
+
+xine_fontconv_SOURCES = xine-fontconv.c
+xine_fontconv_CFLAGS = $(FT2_CFLAGS)
+xine_fontconv_LDFLAGS = $(GCSECTIONS)
+xine_fontconv_LDADD = -lz $(FT2_LIBS)
-cdda_server: cdda_server.c
- $(CC) -W -Wall -g -o cdda_server cdda_server.c -ldl
+cdda_server_SOURCES = cdda_server.c
+cdda_server_LDFLAGS = $(GCSECTIONS)
+cdda_server_LDADD = $(DYNAMIC_LD_LIBS)
diff --git a/misc/Makefile.common b/misc/Makefile.common
index edafcea4b..447b558e2 100644
--- a/misc/Makefile.common
+++ b/misc/Makefile.common
@@ -3,7 +3,7 @@ XINE_LIB = $(top_builddir)/src/xine-engine/libxine.la
xineincludedir = $(includedir)/xine
xineplugdir = $(XINE_PLUGINDIR)
-xineplug_ldflags = $(NOUNDEF) -avoid-version -module
+xineplug_ldflags = $(NOUNDEF) $(GCSECTIONS) -avoid-version -module
xinepostdir = $(XINE_PLUGINDIR)/post
vidixdir = $(XINE_PLUGINDIR)/vidix
diff --git a/misc/fonts/Makefile.am b/misc/fonts/Makefile.am
deleted file mode 100644
index 32664da5c..000000000
--- a/misc/fonts/Makefile.am
+++ /dev/null
@@ -1,47 +0,0 @@
-include $(top_srcdir)/misc/Makefile.common
-
-fontdir = $(pkgdatadir)/fonts
-font_DATA = \
- cetus-16.xinefont.gz \
- cetus-20.xinefont.gz \
- cetus-24.xinefont.gz \
- cetus-32.xinefont.gz \
- cetus-48.xinefont.gz \
- cetus-64.xinefont.gz \
- cc-16.xinefont.gz \
- cc-20.xinefont.gz \
- cc-24.xinefont.gz \
- cc-32.xinefont.gz \
- cc-48.xinefont.gz \
- cc-64.xinefont.gz \
- cci-16.xinefont.gz \
- cci-20.xinefont.gz \
- cci-24.xinefont.gz \
- cci-32.xinefont.gz \
- cci-48.xinefont.gz \
- cci-64.xinefont.gz \
- mono-16.xinefont.gz \
- mono-20.xinefont.gz \
- mono-24.xinefont.gz \
- mono-32.xinefont.gz \
- mono-48.xinefont.gz \
- mono-64.xinefont.gz \
- sans-16.xinefont.gz \
- sans-20.xinefont.gz \
- sans-24.xinefont.gz \
- sans-32.xinefont.gz \
- sans-48.xinefont.gz \
- sans-64.xinefont.gz \
- serif-16.xinefont.gz \
- serif-20.xinefont.gz \
- serif-24.xinefont.gz \
- serif-32.xinefont.gz \
- serif-48.xinefont.gz \
- serif-64.xinefont.gz
-
-doc_DATA = README.cetus
-
-#
-# font used for osd
-#
-EXTRA_DIST = cetus.ttf $(doc_DATA) $(font_DATA)
diff --git a/misc/libxine.pc.in b/misc/libxine.pc.in
index cb66d6b19..a6565bad0 100644
--- a/misc/libxine.pc.in
+++ b/misc/libxine.pc.in
@@ -17,7 +17,7 @@ objcflags=@OBJCFLAGS@
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 b/misc/xine-config.in
index 12424fbd3..1492d739b 100644
--- a/misc/xine-config
+++ b/misc/xine-config.in
@@ -6,6 +6,11 @@ unset prefix
unset exec_prefix
unset args
+export PKG_CONFIG_PATH="$(cat <<'EOF'
+@XINE_PKGCONFIG_DIR@
+EOF
+)${PKG_CONFIG_PATH:+:}$PKG_CONFIG_PATH"
+
usage()
{
cat <<EOF
@@ -47,17 +52,18 @@ while test $# -gt 0; do
--exec-prefix=*)
exec_prefix="$optarg"
;;
- --prefix|--exec-prefix)
- ;;
--version)
args="$args${args+ }--modversion"
;;
--cflags|--libs)
args="$args${args+ }$1"
;;
- --acflags|--plugindir|--datadir|--scriptdir|--localedir|--objcflags)
+ --prefix|--acflags|--plugindir|--datadir|--scriptdir|--localedir|--objcflags)
args="$args${args+ }--variable=${1#--}"
;;
+ --exec-prefix)
+ args="$args${args+ }--variable=exec_prefix"
+ ;;
*)
usage 1 1>&2
;;
@@ -68,5 +74,5 @@ done
echo 'xine-config is DEPRECATED. Use pkg-config instead.' >&2
exec pkg-config "${prefix+--define-variable=prefix=}$prefix" \
- "${exec_prefix+--define-variable=exc_prefix=}$exec_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 6c5d9b96c..0b7c78ed4 100644
--- a/misc/xine-lib.spec.in
+++ b/misc/xine-lib.spec.in
@@ -1,6 +1,6 @@
%define shortname libxine
%define name libxine2
-%define version @PACKAGE_VERSION@
+%define version @SPEC_VERSION@
%define release 0
%define major 1
@@ -15,9 +15,6 @@
%if %{?BUILD_ALSA:0}%{!?BUILD_ALSA:1}
%define BUILD_ALSA 0
%endif
-%if %{?BUILD_ARTS:0}%{!?BUILD_ARTS:1}
-%define BUILD_ARTS 0
-%endif
%if %{?BUILD_DEVEL:0}%{!?BUILD_DEVEL:1}
%define BUILD_DEVEL 1
%endif
@@ -66,6 +63,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.
@@ -77,7 +77,7 @@ Release: %{release}
License: GPL
Group: Development/Libraries
URL: http://xinehq.de
-Source: http://xinehq.de/files/@PACKAGE@-@VERSION@.tar.gz
+Source: http://xinehq.de/files/@PACKAGE@-@VERSION@.tar.bz2
Packager: Manfred Tremmel <Manfred.Tremmel@iiv.de>
Obsoletes: xine
Obsoletes: xine-lib
@@ -145,20 +145,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 +174,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 +189,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 +206,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 +548,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 +571,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 +591,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 +621,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 +629,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 +638,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 @PACKAGE_TARNAME@
+%setup -q -n @TAR_NAME@
%build
export CFLAGS="${RPM_OPT_FLAGS}"
-export XINE_DOCPATH="%{_docdir}/libxine2"
+export XINE_DOCPATH="%{_docdir}/%{name}"
+export PKG_CONFIG="%{_bindir}/pkg-config"
if [ ! -f configure ]; then
NO_CONFIGURE=1 ./autogen.sh
@@ -665,286 +683,290 @@ fi
--localstatedir=%{_localstatedir} \
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
--infodir=%{_infodir} --enable-directfb --enable-modplug \
- --with-internal-vcdlibs
+%if %BUILD_STK
+ --with-libstk \
+%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
-# 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} contrib/libfaad/Makefile contrib/libfaad/Makefile_save
+%{__cat} contrib/libfaad/Makefile_save | %{__sed} -e "s/-mmmx/-mno-mmx/g" -e "s/-msse/-mno-sse/g" > contrib/libfaad/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_libxine2_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_libxine2_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_libxine2_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_libxine2_zw
-find . -type l | sed 's,^\.%{_datadir}/doc,\%doc %{_datadir}/doc,' | sed 's,^\.,,' >> ${RPM_BUILD_DIR}/filelist_libxine2_zw
-find . -type d | grep xine | sed 's,^\.,\%dir ,' >> ${RPM_BUILD_DIR}/filelist_libxine2_zw
-grep -v "/man/" ${RPM_BUILD_DIR}/filelist_libxine2_zw | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-grep "/man/" ${RPM_BUILD_DIR}/filelist_libxine2_zw | sed -e 's/$/\*/g' | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_devel
-echo "%doc doc/hackersguide/*.sgml doc/hackersguide/*.fig doc/hackersguide/README" >> ${RPM_BUILD_DIR}/filelist_libxine2_devel
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "/include/|dhahelper\.o|libxine*\.(so|la)$|\.m4$" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_devel
-grep -v -E "/include/|dhahelper\.o|libxine*\.(so|la)$|\.m4$" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_alsa
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_ao_out_alsa\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_alsa
-grep -v "xineplug_ao_out_alsa\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_old
-%endif
-
-%if %BUILD_ARTS
-echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine2_arts
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_ao_out_arts\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_arts
-grep -v "xineplug_ao_out_arts\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_ESD
-echo "%defattr(-,root,root)" > ${RPM_BUILD_DIR}/filelist_libxine2_esd
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_ao_out_esd\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_esd
-grep -v "xineplug_ao_out_esd\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_dxr3
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "dxr3" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_dxr3
-grep -v "dxr3" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_sdl
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_vo_out_sdl\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_sdl
-grep -v "xineplug_vo_out_sdl\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_aa
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_vo_out_aa\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_aa
-grep -v "xineplug_vo_out_aa\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_opengl
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_vo_out_opengl\.|README.opengl" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_opengl
-grep -v -E "xineplug_vo_out_opengl\.|README.opengl" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_syncfb
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_vo_out_syncfb\.|README\.syncfb" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_syncfb
-grep -v -E "xineplug_vo_out_syncfb\.|README\.syncfb" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_directfb
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_vo_out_directfb\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_directfb
-grep -v -E "xineplug_vo_out_directfb\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_stk
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_vo_out_stk\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_stk
-grep -v -E "xineplug_vo_out_stk\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_xvmc
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_vo_out_x[x|v]mc\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_xvmc
-grep -v "xineplug_vo_out_x[x|v]mc\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_w32dll
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_decode_qt\.|xineplug_decode_w32dll\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_w32dll
-grep -v -E "xineplug_decode_qt\.|xineplug_decode_w32dll\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_dvb
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_inp_dvb\.|README\.dvb" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_dvb
-grep -v -E "xineplug_inp_dvb\.|README\.dvb" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_dvd
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_inp_dvd\.|README\.network_dvd" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_dvd
-grep -v -E "xineplug_inp_dvd\.|README\.network_dvd" ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_gnome_vfs
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_inp_gnome_vfs\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_gnome_vfs
-grep -v "xineplug_inp_gnome_vfs\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_flac
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_flac\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_flac
-grep -v "xineplug_flac\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_ogg
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep -E "xineplug_decode_vorbis\.|xineplug_dmx_ogg\.|xineplug_decode_theora\.|xineplug_decode_speex\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_ogg
-grep -v -E "xineplug_decode_vorbis\.|xineplug_dmx_ogg\.|xineplug_decode_theora\.|xineplug_decode_speex\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2_jack
-mv ${RPM_BUILD_DIR}/filelist_libxine2 ${RPM_BUILD_DIR}/filelist_libxine2_old
-grep "xineplug_ao_out_jack\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - >> ${RPM_BUILD_DIR}/filelist_libxine2_jack
-grep -v "xineplug_ao_out_jack\." ${RPM_BUILD_DIR}/filelist_libxine2_old | cat - > ${RPM_BUILD_DIR}/filelist_libxine2
-rm ${RPM_BUILD_DIR}/filelist_libxine2_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_libxine2
+%files -f ../filelist_%{name}
%if %BUILD_DEVEL
-%files devel -f ../filelist_libxine2_devel
+%files -n %{shortname}-devel -f ../filelist_%{name}_devel
%endif
%if %BUILD_ALSA
-%files alsa -f ../filelist_libxine2_alsa
+%files alsa -f ../filelist_%{name}_alsa
%endif
%if %BUILD_ARTS
-%files arts -f ../filelist_libxine2_arts
+%files arts -f ../filelist_%{name}_arts
%endif
%if %BUILD_ESD
-%files esd -f ../filelist_libxine2_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_libxine2_dxr3
-%endif
+%files dxr3 -f ../filelist_%{name}_dxr3
%endif
%if %BUILD_SDL
-%files sdl -f ../filelist_libxine2_sdl
+%files sdl -f ../filelist_%{name}_sdl
%endif
%if %BUILD_AA
-%files aa -f ../filelist_libxine2_aa
+%files aa -f ../filelist_%{name}_aa
%endif
%if %BUILD_OPENGL
-%files opengl -f ../filelist_libxine2_opengl
+%files opengl -f ../filelist_%{name}_opengl
%endif
%if %BUILD_SYNCFB
-%files syncfb -f ../filelist_libxine2_syncfb
+%files syncfb -f ../filelist_%{name}_syncfb
%endif
%if %BUILD_DIRECTFB
-%files directfb -f ../filelist_libxine2_directfb
+%files directfb -f ../filelist_%{name}_directfb
%endif
%if %BUILD_STK
-%files stk -f ../filelist_libxine2_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_libxine2_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_libxine2_w32dll
+%files w32dll -f ../filelist_%{name}_w32dll
%endif
%endif
%if %BUILD_DVB
-%files dvb -f ../filelist_libxine2_dvb
+%files dvb -f ../filelist_%{name}_dvb
%endif
%if %BUILD_DVD
-%files dvd -f ../filelist_libxine2_dvd
+%files dvd -f ../filelist_%{name}_dvd
%endif
%if %BUILD_GNOME_VFS
-%files gnome-vfs -f ../filelist_libxine2_gnome_vfs
+%files gnome-vfs -f ../filelist_%{name}_gnome_vfs
%endif
%if %BUILD_FLAC
-%files flac -f ../filelist_libxine2_flac
+%files flac -f ../filelist_%{name}_flac
%endif
%if %BUILD_OGG
-%files ogg -f ../filelist_libxine2_ogg
+%files ogg -f ../filelist_%{name}_ogg
%endif
%if %BUILD_JACK
-%files jack -f ../filelist_libxine2_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/po/LINGUAS b/po/LINGUAS
index 636f4dfff..87a156243 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,5 +1,6 @@
cs
de
+eo
es
eu
fr
@@ -7,3 +8,4 @@ it
pl
pt_BR
sk
+tr
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 6247b521d..c328946c9 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -109,7 +109,6 @@ src/video_out/video_out_pgx32.c
src/video_out/video_out_pgx64.c
src/video_out/video_out_sdl.c
src/video_out/video_out_stk.c
-src/video_out/video_out_syncfb.c
src/video_out/video_out_vidix.c
src/video_out/video_out_xcbshm.c
src/video_out/video_out_xcbxv.c
@@ -119,6 +118,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
diff --git a/po/cs.po b/po/cs.po
index 7d54a14f7..b9c9046a5 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ 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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+0000\n"
"PO-Revision-Date: 2005-12-11 20:47+0100\n"
"Last-Translator: František Dvořák <valtri@atlas.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
@@ -1561,12 +1561,12 @@ msgstr ""
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:1633
-#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+#: src/input/input_cdda.c:1631
+#, fuzzy, 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:1638
+#: src/input/input_cdda.c:1636
#, 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"
@@ -2888,8 +2888,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/de.po b/po/de.po
index 7c175e86b..805cb6c4a 100644
--- a/po/de.po
+++ b/po/de.po
@@ -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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+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"
@@ -1562,12 +1562,12 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr "%s: Kann keine Verbindung zu '%s:%d' aufbauen\n"
-#: src/input/input_cdda.c:1633
-#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+#: src/input/input_cdda.c:1631
+#, fuzzy, 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:1638
+#: src/input/input_cdda.c:1636
#, c-format
msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n"
msgstr ""
@@ -2892,8 +2892,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/es.po b/po/es.po
index 599026b7a..0b4c99fbe 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,18 +1,18 @@
-# translation of xine-lib-1.1.4.po to Spanish
+# translation of xine-lib-1.2.hg.po to Spanish
# Spanish .po file for xine-lib.
-# Copyright (C) 2002, 2006, 2007 Free Software Foundation, Inc.
+# 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. Robinson 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-1.2.hg\n"
"Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2007-12-30 15:46+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: 2008-02-01 01:17+0000\n"
+"PO-Revision-Date: 2008-01-31 14:30+0100\n"
+"Last-Translator: Carlos E. Robinson 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"
@@ -867,26 +867,25 @@ msgstr ""
"encontrada.\n"
#: src/combined/xine_ogg_demuxer.c:2080
-#, fuzzy
msgid "Annodex demux plugin"
-msgstr "xine: encontrado complemento demultiplexor: %s\n"
+msgstr "Complemento demultiplexor annodex"
-#: src/combined/xine_ogg_demuxer.c:2098
+#: src/combined/xine_ogg_demuxer.c:2104
msgid "OGG demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor OGG"
-#: src/demuxers/demux_asf.c:426
+#: src/demuxers/demux_asf.c:441
#, 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:443
msgid "Media stream scrambled/encrypted"
msgstr "Flujo de bits del medio revuelto/encriptado"
-#: src/demuxers/demux_asf.c:2091
+#: src/demuxers/demux_asf.c:2105
msgid "ASF demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor ASF"
#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642
msgid "Restoring index..."
@@ -910,7 +909,7 @@ msgstr ""
#: src/demuxers/demux_avi.c:2309
msgid "AVI/RIFF demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor AVI/RIFF"
#: src/demuxers/demux_film.c:186
#, c-format
@@ -924,7 +923,7 @@ msgstr "bloque FILM no reconocido\n"
#: src/demuxers/demux_film.c:896
msgid "FILM (CPK) demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor FILM (CPK)"
#: src/demuxers/demux_flv.c:178
#, c-format
@@ -935,10 +934,9 @@ msgstr "Versión FLV no soportada (%d).\n"
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:879
-#, fuzzy
+#: src/demuxers/demux_flv.c:888
msgid "Flash Video file demux plugin"
-msgstr "Complemento de entrada de vídeo CD"
+msgstr "Complemento demultiplexor para fichero Flash Video"
#: src/demuxers/demux_iff.c:233
#, c-format
@@ -957,7 +955,7 @@ msgstr "iff: Bloque no reconocido: %s\n"
#: src/demuxers/demux_iff.c:1217
msgid "IFF demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor IFF"
#: src/demuxers/demux_mpc.c:210
msgid "demux_mpc: frame too big for buffer"
@@ -965,7 +963,7 @@ msgstr "demux_mpc: marco demasiado grande para el búfer"
#: src/demuxers/demux_mpc.c:363
msgid "Musepack demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor Musepack"
#: src/demuxers/demux_mpeg_block.c:294
#, c-format
@@ -1001,7 +999,7 @@ msgstr ""
#: src/demuxers/demux_mpeg_block.c:1493
msgid "DVD/VOB demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor DVD/VOB"
#: src/demuxers/demux_mpeg_pes.c:415
#, c-format
@@ -1039,12 +1037,12 @@ msgid ""
"demux_mpeg_pes:Unrecognised private stream 1 0x%02x. Please report this to "
"xine developers.\n"
msgstr ""
-"demux_mpeg_pes:flujo de bits privado 1 0x%02x. Por favor, repórtelo a los "
-"desarrolladores de xine.\n"
+"demux_mpeg_pes:flujo de bits privado no reconocido 1 0x%02x. Por favor, "
+"repórtelo a los desarrolladores de xine.\n"
#: src/demuxers/demux_mpeg_pes.c:1754
msgid "mpeg pes demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor pes mpeg"
#: src/demuxers/demux_snd.c:102
#, c-format
@@ -1057,18 +1055,16 @@ msgid "demux_snd: unsupported audio type: %d\n"
msgstr "demux_snd: tipo de audio no soportado: %d\n"
#: src/demuxers/demux_snd.c:358
-#, fuzzy
msgid "SND/AU file demux plugin"
-msgstr "complemento de fichero entrada"
+msgstr "Complemento demultiplexor para fichero SND/AU"
#: src/demuxers/demux_tta.c:85
msgid "demux_tta: total frames count too high\n"
msgstr "demux_tta: la cuenta total de cuadros es demasiado alta\n"
#: src/demuxers/demux_tta.c:272
-#, fuzzy
msgid "True Audio demux plugin"
-msgstr "xine: encontrado complemento demultiplexor: %s\n"
+msgstr "Complemento demultiplexor True Audio (audio verdadero)"
#: src/demuxers/demux_voc.c:103
#, c-format
@@ -1086,9 +1082,8 @@ msgstr ""
"desarrolladores de xine\n"
#: src/demuxers/demux_voc.c:336
-#, fuzzy
msgid "VOC file demux plugin"
-msgstr "complemento de fichero entrada"
+msgstr "Complemento demultiplexor fichero VOC"
#: src/demuxers/demux_wc3movie.c:190
#, c-format
@@ -1104,13 +1099,15 @@ msgstr ""
#: src/demuxers/demux_wc3movie.c:711
msgid "Wing Commander III Movie (MVE) demux plugin"
-msgstr ""
+msgstr "Complemento demultiplexor Wing Commander III Movie (MVE)"
#: src/dxr3/dxr3_decode_spu.c:185
msgid ""
"subtitle decoder plugin using the hardware decoding capabilities of a DXR3 "
"decoder card"
msgstr ""
+"complemento decodificador de subtítulos usando las capacidades "
+"decodificadoras en hardware de una tarjeta decodificadora DXR3"
#: src/dxr3/dxr3_decode_spu.c:230
#, c-format
@@ -1126,6 +1123,8 @@ msgid ""
"MPEGI/II decoder plugin using the hardware decoding capabilities of a DXR3 "
"decoder card."
msgstr ""
+"Complemento decodificador de MPEGI/II usando las capacidades decodificadoras "
+"en hardware de una tarjeta decodificadora DXR3."
#: src/dxr3/dxr3_decode_video.c:226
#, c-format
@@ -1325,6 +1324,8 @@ msgstr ""
#: src/dxr3/video_out_dxr3.c:178
msgid "video output plugin displaying images through your DXR3 decoder card"
msgstr ""
+"complemento de salida de vídeo mostrando imágenes a través de su tarjeta "
+"decodificadora DXR3"
#: src/dxr3/video_out_dxr3.c:249
msgid "swap odd and even lines"
@@ -1601,30 +1602,30 @@ msgstr ""
"video_out_dxr3: ERROR leyendo en fichero de inicialización de la "
"superposición. ¡Ejecute autocal!\n"
-#: src/input/input_cdda.c:1586
+#: src/input/input_cdda.c:1584
#, 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:1633
+#: src/input/input_cdda.c:1631
#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+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:1638
+#: src/input/input_cdda.c:1636
#, 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:2687
+#: src/input/input_cdda.c:2685
msgid "CD Digital Audio (aka. CDDA)"
msgstr "audio CD digital (alias CDDA)"
-#: src/input/input_cdda.c:2700
+#: src/input/input_cdda.c:2698
msgid "device used for CD audio"
msgstr "dispositivo usado para audio CD"
-#: src/input/input_cdda.c:2701
+#: src/input/input_cdda.c:2699
msgid ""
"The path to the device, usually a CD or DVD drive, which you intend to use "
"for playing audio CDs."
@@ -1632,11 +1633,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:2707
+#: src/input/input_cdda.c:2705
msgid "query CDDB"
msgstr "consultar la CDDB"
-#: src/input/input_cdda.c:2707
+#: src/input/input_cdda.c:2705
msgid ""
"Enables CDDB queries, which will give you convenient title and track names "
"for your audio CDs.\n"
@@ -1650,11 +1651,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:2715
+#: src/input/input_cdda.c:2713
msgid "CDDB server name"
msgstr "nombre del servidor CDDB"
-#: src/input/input_cdda.c:2715
+#: src/input/input_cdda.c:2713
msgid ""
"The CDDB server used to retrieve the title and track information from.\n"
"This setting is security critical, because the sever will receive "
@@ -1667,20 +1668,20 @@ msgstr ""
"consultas con respuestas maliciosas. Asegúrese de poner un servidor del que "
"se pueda fiar."
-#: src/input/input_cdda.c:2723
+#: src/input/input_cdda.c:2721
msgid "CDDB server port"
msgstr "puerto del servidor CDDB"
-#: src/input/input_cdda.c:2723
+#: src/input/input_cdda.c:2721
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:2729
+#: src/input/input_cdda.c:2727
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:2730
+#: src/input/input_cdda.c:2728
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 "
@@ -1706,50 +1707,50 @@ 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:2127 src/input/input_dvb.c:2967
+#: src/input/input_dvb.c:2127 src/input/input_dvb.c:2964
msgid "input_dvb: tuner_set_channel failed\n"
msgstr "input_dvb: falló tuner_set_channel\n"
-#: src/input/input_dvb.c:2762
+#: src/input/input_dvb.c:2759
#, c-format
msgid "input_dvb: DVB GUI %s\n"
-msgstr ""
+msgstr "input_dvb: IGU de DVB %s\n"
-#: src/input/input_dvb.c:2767 src/input/input_dvb.c:3183
+#: src/input/input_dvb.c:2764 src/input/input_dvb.c:3180
msgid "input_dvb: cannot open dvb device\n"
msgstr "input_dvb: no puedo abrir dispositivo DVB\n"
-#: src/input/input_dvb.c:2791
+#: src/input/input_dvb.c:2788
#, 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:2802
+#: src/input/input_dvb.c:2799
#, c-format
msgid "input_dvb: searching for channel %s\n"
msgstr "input_dvb: buscando el canal %s\n"
-#: src/input/input_dvb.c:2825
+#: src/input/input_dvb.c:2822
#, 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:2832
+#: src/input/input_dvb.c:2829
#, 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:2845
+#: src/input/input_dvb.c:2842
#, 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:2851
+#: src/input/input_dvb.c:2848
msgid ""
"input_dvb: invalid channel specification, defaulting to last viewed "
"channel.\n"
@@ -1757,11 +1758,11 @@ msgstr ""
"input_dvb: especificación de canal inválida, usaremos el ultimo canal "
"visualizado.\n"
-#: src/input/input_dvb.c:2857
+#: src/input/input_dvb.c:2854
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:2869
+#: src/input/input_dvb.c:2866
msgid ""
"input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-"
"S)\n"
@@ -1769,7 +1770,7 @@ msgstr ""
"input_dvb: se especificó mrl dvbs pero el sintonizador no aparenta ser QPSK "
"(DVB-S)\n"
-#: src/input/input_dvb.c:2889
+#: src/input/input_dvb.c:2886
msgid ""
"input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-"
"T)\n"
@@ -1777,7 +1778,7 @@ msgstr ""
"input_dvb: se especificó mrl dvbt pero el sintonizador no aparenta ser OFDM "
"(DVB-T)\n"
-#: src/input/input_dvb.c:2912
+#: src/input/input_dvb.c:2909
msgid ""
"input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-"
"C)\n"
@@ -1785,7 +1786,7 @@ msgstr ""
"input_dvb: se especificó mrl dvbc pero el sintonizador no aparenta ser QAM "
"(DVB-C)\n"
-#: src/input/input_dvb.c:2938
+#: src/input/input_dvb.c:2935
msgid ""
"input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-"
"A)\n"
@@ -1793,20 +1794,20 @@ msgstr ""
"input_dvb: se especificó mrl dvba pero el sintonizador no aparenta ser ATSC "
"(DVB-A)\n"
-#: src/input/input_dvb.c:2973
+#: src/input/input_dvb.c:2970
#, 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:2996
+#: src/input/input_dvb.c:2993
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:3058
+#: src/input/input_dvb.c:3055
msgid "use DVB 'center cutout' (zoom)"
msgstr "usar corte de la zona central del DVB (zoom)"
-#: src/input/input_dvb.c:3059
+#: src/input/input_dvb.c:3056
msgid ""
"This will allow fullscreen playback of 4:3 content transmitted in a 16:9 "
"frame."
@@ -1814,15 +1815,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:3252
+#: src/input/input_dvb.c:3249
msgid "DVB (Digital TV) input plugin"
msgstr "complemento de entrada DVB (TV Digital)"
-#: src/input/input_dvb.c:3270
+#: src/input/input_dvb.c:3267
msgid "Remember last DVB channel watched"
msgstr "Recordar el último canal DVB visto"
-#: src/input/input_dvb.c:3271
+#: src/input/input_dvb.c:3268
msgid ""
"On autoplay, xine will remember and switch to the channel indicated in media."
"dvb.last_channel. "
@@ -1830,19 +1831,19 @@ msgstr ""
"En autoejecución, xine recordará y cambiará al canal indicado en media.dvb."
"last_channel. "
-#: src/input/input_dvb.c:3278
+#: src/input/input_dvb.c:3275
msgid "Last DVB channel viewed"
msgstr "Último canal DVB visto"
-#: src/input/input_dvb.c:3279
+#: src/input/input_dvb.c:3276
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:3284
+#: src/input/input_dvb.c:3281
msgid "Number of seconds until tuning times out."
msgstr "Número de segundos hasta que la sintonización temporice."
-#: src/input/input_dvb.c:3285
+#: src/input/input_dvb.c:3282
msgid ""
"Leave at 0 means try forever. Greater than 0 means wait that many seconds to "
"get a lock. Minimum is 5 seconds."
@@ -1850,19 +1851,20 @@ 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:3292
+#: src/input/input_dvb.c:3289
msgid "Enable the DVB GUI"
-msgstr ""
+msgstr "Activar el IGU de DVB"
-#: src/input/input_dvb.c:3293
+#: src/input/input_dvb.c:3290
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:3298
+#: src/input/input_dvb.c:3295
msgid "Number of dvb card to use."
msgstr "Número de tarjeta DVB a usar."
-#: src/input/input_dvb.c:3299
+#: src/input/input_dvb.c:3296
msgid ""
"Leave this at zero unless you really have more than 1 card in your system."
msgstr ""
@@ -1884,7 +1886,7 @@ msgstr "input_dvd: Error abriendo dispositivo DVD\n"
#: src/input/input_dvd.c:1759
msgid "DVD Navigator"
-msgstr ""
+msgstr "Navegador de DVD"
#: src/input/input_dvd.c:1776
msgid "device used for DVD playback"
@@ -2264,11 +2266,11 @@ 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:517
+#: src/input/input_net.c:523
msgid "net input plugin as shipped with xine"
msgstr "complemento de entrada de red incluido en xine"
-#: src/input/input_pnm.c:272
+#: src/input/input_pnm.c:270
msgid "pnm streaming input plugin"
msgstr "complemento de flujo de bits pnm de entrada"
@@ -2287,32 +2289,32 @@ msgstr "input_pvr: error al abrir el archivo pvr (%s)\n"
msgid "input_pvr: read error (%s)\n"
msgstr "input_pvr: error de lectura (%s)\n"
-#: src/input/input_pvr.c:1142 src/input/input_pvr.c:1395
+#: src/input/input_pvr.c:1165 src/input/input_pvr.c:1418
#, 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:1148 src/input/input_pvr.c:1401
+#: src/input/input_pvr.c:1171 src/input/input_pvr.c:1424
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:1156 src/input/input_pvr.c:1410
+#: src/input/input_pvr.c:1179 src/input/input_pvr.c:1433
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:1528
+#: src/input/input_pvr.c:1551
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:1529
+#: src/input/input_pvr.c:1552
msgid "The path to the device of your WinTV card."
msgstr "El camino al dispositivo de su tarjeta WinTV."
-#: src/input/input_pvr.c:1535
+#: src/input/input_pvr.c:1558
msgid "WinTV-PVR 250/350 input plugin"
msgstr "complemento de entrada para WinTV-PVR 250/350"
@@ -2388,7 +2390,7 @@ msgstr "input_rtp: no se puede crear un hilo nuevo (%s)\n"
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:292
+#: src/input/input_rtsp.c:290
msgid "rtsp streaming input plugin"
msgstr "complemento de flujo de bits de entrada rtsp"
@@ -2410,52 +2412,66 @@ msgstr "stdin: falló al abrir '%s'\n"
msgid "stdin streaming input plugin"
msgstr "complemento de entrada de flujo de bits"
-#: src/input/input_v4l.c:402
+#: src/input/input_v4l.c:405
msgid "Buffer underrun..."
msgstr "Memoria intermedia vacía..."
-#: src/input/input_v4l.c:406
+#: src/input/input_v4l.c:409
msgid "Buffer overrun..."
msgstr "Memoria intermedia rebosando..."
-#: src/input/input_v4l.c:409
+#: src/input/input_v4l.c:412
msgid "Adjusting..."
msgstr "Ajustando..."
-#: src/input/input_v4l.c:683
+#: src/input/input_v4l.c:686
msgid "Tuner name not found\n"
msgstr "Nombre del sintonizador no encontrado\n"
-#: src/input/input_v4l.c:1914
+#: src/input/input_v4l.c:1921
msgid "v4l tv input plugin"
msgstr "Complemento de entrada v4l tv"
-#: src/input/input_v4l.c:1922
+#: src/input/input_v4l.c:1929
msgid "v4l video device"
msgstr "dispositivo vídeo v4l"
-#: src/input/input_v4l.c:1923
+#: src/input/input_v4l.c:1930
msgid "The path to your Video4Linux video device."
msgstr "El camino a su dispositivo de vídeo Video4Linux."
-#: src/input/input_v4l.c:1927
+#: src/input/input_v4l.c:1934
msgid "v4l TV standard"
-msgstr ""
+msgstr "Estandar v4l de TV"
-#: src/input/input_v4l.c:1928
+#: src/input/input_v4l.c:1935
msgid ""
"Selects the TV standard of the input signals. Either: PAL, NTSC and 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:1941
+msgid "v4l ALSA audio input device"
+msgstr "dispositivo audio de entrada ALSA v4l"
+
+#: src/input/input_v4l.c:1942
+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:1946
+#: src/input/input_v4l.c:1961
msgid "v4l radio input plugin"
msgstr "Complemento de entrada v4l radio"
-#: src/input/input_v4l.c:1954
+#: src/input/input_v4l.c:1969
msgid "v4l radio device"
msgstr "dispositivo audio v4l"
-#: src/input/input_v4l.c:1955
+#: src/input/input_v4l.c:1970
msgid "The path to your Video4Linux radio device."
msgstr "El camino a su dispositivo de radio Video4Linux."
@@ -2494,12 +2510,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:435
+#: src/input/librtsp/rtsp.c:437
#, c-format
msgid "rtsp: bad mrl: %s\n"
msgstr "rtsp: mal mrl: %s\n"
-#: src/input/librtsp/rtsp.c:493
+#: src/input/librtsp/rtsp.c:495
#, c-format
msgid "rtsp: failed to connect to '%s'\n"
msgstr "rtsp: falló en conectar a '%s'\n"
@@ -2513,7 +2529,15 @@ msgstr "rtsp_session: falló en conectar al servidor %s\n"
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
+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 ""
@@ -2568,9 +2592,11 @@ 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:617
#, c-format
@@ -2855,7 +2881,7 @@ msgstr "ffmpeg_audio_dec: no pude abrir el decodificador\n"
#: src/combined/ffmpeg/ff_audio_decoder.c:426
msgid "ffmpeg based audio decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de audio basado en ffmpeg"
#: src/combined/ffmpeg/ff_dvaudio_decoder.c:277
#, c-format
@@ -2865,9 +2891,8 @@ msgstr ""
"desbordamiento.\n"
#: src/combined/ffmpeg/ff_dvaudio_decoder.c:388
-#, fuzzy
msgid "dv audio decoder plugin"
-msgstr "Complemento de entrada v4l radio"
+msgstr "complemento decodificador de audio dv"
#: src/combined/ffmpeg/ffmpeg_encoder.c:161
msgid "libavcodec mpeg output bitrate (kbit/s)"
@@ -2917,46 +2942,46 @@ 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/combined/ffmpeg/ff_video_decoder.c:154
+#: src/combined/ffmpeg/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/combined/ffmpeg/ff_video_decoder.c:172
+#: src/combined/ffmpeg/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/combined/ffmpeg/ff_video_decoder.c:336
+#: src/combined/ffmpeg/ff_video_decoder.c:357
#, 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:365
+#: src/combined/ffmpeg/ff_video_decoder.c:389
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:406
+#: src/combined/ffmpeg/ff_video_decoder.c:432
msgid "ffmpeg_video_dec: direct rendering enabled\n"
msgstr "ffmpeg_video_dec: renderizado directo activado\n"
-#: src/combined/ffmpeg/ff_video_decoder.c:834
+#: src/combined/ffmpeg/ff_video_decoder.c:872
#, 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:1536
+#: src/combined/ffmpeg/ff_video_decoder.c:1574
msgid "ffmpeg based video decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de vídeo basado en ffmpeg"
-#: src/combined/ffmpeg/ff_video_decoder.c:1548
+#: src/combined/ffmpeg/ff_video_decoder.c:1586
msgid "MPEG-4 postprocessing quality"
msgstr "calidad de postprocesado MPEG-4"
-#: src/combined/ffmpeg/ff_video_decoder.c:1549
+#: src/combined/ffmpeg/ff_video_decoder.c:1587
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 "
@@ -2970,18 +2995,61 @@ msgstr ""
"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:1557
+#: src/combined/ffmpeg/ff_video_decoder.c:1595
msgid "FFmpeg video decoding thread count"
-msgstr ""
+msgstr "Conteo de hilos decodificando vídeo FFmpeg"
-#: src/combined/ffmpeg/ff_video_decoder.c:1558
+#: src/combined/ffmpeg/ff_video_decoder.c:1596
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 ""
+"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:1605
+msgid "Skip loop filter"
+msgstr "Saltarse filtro de bucle"
+
+# Cer "saltar" por"skip" suena raro.
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr "Elegir velocidad en vez de conformidad con la especificación"
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
msgid "path to RealPlayer codecs"
@@ -3024,9 +3092,11 @@ msgstr ""
msgid "libareal: oups, real can do more than 2 channels ?\n"
msgstr "libareal: Ostras, ¿puede real hacer más de dos canales?\n"
+# Cer: dudoso
#: src/libreal/xine_real_audio_decoder.c:594
msgid "real binary-only codec based audio decoder plugin"
msgstr ""
+"complemento decodificador de audio basado en exclusivamente binario “real”"
#: src/libreal/xine_real_video_decoder.c:162
msgid "libreal: Error resolving symbols! (version incompatibility?)\n"
@@ -3036,6 +3106,7 @@ msgstr ""
#: src/libreal/xine_real_video_decoder.c:522
msgid "real binary-only codec based video decoder plugin"
msgstr ""
+"complemento decodificador de vídeo basado en exclusivamente binario “real”"
#: src/spu_dec/xine_cc_decoder.c:189
msgid "display closed captions in MPEG-2 streams"
@@ -3094,9 +3165,8 @@ msgstr ""
"individuales."
#: src/spu_dec/xine_cc_decoder.c:330
-#, fuzzy
msgid "closed caption decoder plugin"
-msgstr "tamaño de la tipografía del subtitulado"
+msgstr "complemento decodificador de subtitulado para sordos"
#: src/spu_dec/cmml_decoder.c:477
msgid "font for external subtitles"
@@ -3109,22 +3179,21 @@ msgstr ""
#: src/spu_dec/cmml_decoder.c:509
msgid "CMML subtitle decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de subtítulos CMML"
#: src/spu_dec/cmml_decoder.c:517
msgid "encoding of subtitles"
msgstr "codificado de los subtítulos"
-#: src/spu_dec/sputext_demuxer.c:1461
-#, fuzzy
+#: src/spu_dec/sputext_demuxer.c:1436
msgid "sputext demuxer plugin"
-msgstr "xine: encontrado complemento demultiplexor: %s\n"
+msgstr "complemento demultiplexor sputext"
-#: src/spu_dec/sputext_demuxer.c:1476
+#: src/spu_dec/sputext_demuxer.c:1451
msgid "default duration of subtitle display in seconds"
msgstr "duración por defecto de la exhibición de los subtítulos en segundos"
-#: src/spu_dec/sputext_demuxer.c:1477
+#: src/spu_dec/sputext_demuxer.c:1452
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 "
@@ -3135,15 +3204,15 @@ msgstr ""
"a cero hará que el subtítulo se siga mostrando hasta que aparezca el "
"siguiente."
-#: src/spu_dec/sputext_decoder.c:912
+#: src/spu_dec/sputext_decoder.c:1135
msgid "external subtitle decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de subtítulos externo"
-#: src/spu_dec/sputext_decoder.c:921
+#: src/spu_dec/sputext_decoder.c:1144
msgid "subtitle size"
msgstr "tamaño de subtítulo "
-#: src/spu_dec/sputext_decoder.c:922
+#: src/spu_dec/sputext_decoder.c:1145
msgid ""
"You can adjust the subtitle size here. The setting will be evaluated "
"relative to the window size."
@@ -3151,11 +3220,11 @@ msgstr ""
"Puede ajustar el tamaño de los subtítulos aquí. El ajuste será evaluado "
"relativo al tamaño de la ventana."
-#: src/spu_dec/sputext_decoder.c:928
+#: src/spu_dec/sputext_decoder.c:1151
msgid "subtitle vertical offset"
msgstr "desplazamiento vertical de los subtítulos"
-#: src/spu_dec/sputext_decoder.c:929
+#: src/spu_dec/sputext_decoder.c:1152
msgid ""
"You can adjust the vertical position of the subtitle. The setting will be "
"evaluated relative to the window size."
@@ -3163,31 +3232,31 @@ msgstr ""
"Puede ajustar la posición vertical de los subtítulos aquí. El ajuste será "
"evaluado relativo al tamaño de la ventana."
-#: src/spu_dec/sputext_decoder.c:935 src/spu_dec/sputext_decoder.c:944
+#: src/spu_dec/sputext_decoder.c:1158 src/spu_dec/sputext_decoder.c:1167
msgid "font for subtitles"
msgstr "tipografía para los subtítulos"
-#: src/spu_dec/sputext_decoder.c:936
+#: src/spu_dec/sputext_decoder.c:1159
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/spu_dec/sputext_decoder.c:945
+#: src/spu_dec/sputext_decoder.c:1168
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/spu_dec/sputext_decoder.c:951
+#: src/spu_dec/sputext_decoder.c:1174
msgid "whether to use a freetype font"
msgstr "si debemos usar una tipografía freetype"
-#: src/spu_dec/sputext_decoder.c:958
+#: src/spu_dec/sputext_decoder.c:1181
msgid "encoding of the subtitles"
msgstr "codificación de los subtítulos"
-#: src/spu_dec/sputext_decoder.c:959
+#: src/spu_dec/sputext_decoder.c:1182
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 "
@@ -3199,11 +3268,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/spu_dec/sputext_decoder.c:967
+#: src/spu_dec/sputext_decoder.c:1190
msgid "use unscaled OSD if possible"
msgstr "use OSD sin escalar si es posible"
-#: src/spu_dec/sputext_decoder.c:968
+#: src/spu_dec/sputext_decoder.c:1191
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 "
@@ -3301,12 +3370,11 @@ msgstr "w32codec: Error inicializando audio DMO\n"
#: src/libw32dll/w32codec.c:1588
msgid "win32 binary video codec plugin"
-msgstr ""
+msgstr "complemento binario win32 codec de vídeo"
#: src/libw32dll/w32codec.c:1637
-#, fuzzy
msgid "win32 binary audio codec plugin"
-msgstr "complemento de xine de salida de audio a fichero"
+msgstr "complemento binario win32 codec de audio"
#: src/audio_dec/xine_a52_decoder.c:757 src/audio_dec/xine_dts_decoder.c:524
msgid "HELP! a mono-only audio driver?!\n"
@@ -3314,7 +3382,7 @@ msgstr "¡AYUDA! ¿¡Un manejador de audio exclusivamente mono-aural?!\n"
#: src/audio_dec/xine_a52_decoder.c:798
msgid "liba52 based a52 audio decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de audio a52 basado en liba52"
#: src/audio_dec/xine_a52_decoder.c:805
msgid "A/52 volume"
@@ -3365,7 +3433,7 @@ msgstr ""
#: src/audio_dec/xine_dts_decoder.c:559
msgid "DTS passthru audio format decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de formato audio paso a través DTS"
#: src/audio_dec/xine_faad_decoder.c:131
msgid "libfaad: libfaad NeAACDecOpen() failed.\n"
@@ -3382,6 +3450,8 @@ msgstr "libfaad: libfaad NeAACDecInit falló.\n"
#: src/audio_dec/xine_faad_decoder.c:458
msgid "Freeware Advanced Audio Decoder"
msgstr ""
+"Decodificador de audio Freeware avanzado (“Freeware Advanced Audio Decoder”, "
+"faad)"
#: src/audio_dec/xine_musepack_decoder.c:249
#, c-format
@@ -3404,7 +3474,7 @@ msgstr "libmusepack: falló mpc_decoder_decode: %d\n"
#: src/audio_dec/xine_musepack_decoder.c:441
msgid "mpc: musepack audio decoder plugin"
-msgstr ""
+msgstr "mpc: complemento decodificador de audio musepack"
#: src/video_dec/bitplane.c:1269
#, c-format
@@ -3433,7 +3503,7 @@ msgstr "bitplane: Este tipo anim no está soportado de momento\n"
#: src/video_dec/bitplane.c:1529
msgid "Raw bitplane video decoder plugin"
-msgstr ""
+msgstr "complemento decodificador de vídeo plano de bits en bruto"
#: src/post/audio/stretch.c:263
msgid ""
@@ -3448,7 +3518,7 @@ msgstr ""
#: src/post/audio/stretch.c:672
msgid "Time stretch by a given factor, optionally preserving pitch"
-msgstr ""
+msgstr "Estirar el tiempo en un factor dado, opcionalmente manteniendo el tono"
#: src/post/audio/upmix.c:134
msgid ""
@@ -3471,7 +3541,7 @@ msgstr ""
#: src/post/audio/upmix.c:427
msgid "upmix"
-msgstr ""
+msgstr "mezcla mejorada (“upmix”)"
#: src/post/audio/upmix_mono.c:106
msgid ""
@@ -3502,9 +3572,8 @@ msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n"
msgstr ": dispositivo audio incapaz de AO_CAP_MODE_STEREO.\n"
#: src/post/audio/upmix_mono.c:342
-#, fuzzy
msgid "converts Mono into Stereo"
-msgstr ": mejorando Mono a Stereo.\n"
+msgstr "convierte mono a estéreo"
#: src/post/audio/volnorm.c:147
msgid ""
@@ -3524,8 +3593,14 @@ msgstr ""
#: src/post/audio/volnorm.c:460
msgid "Normalize volume"
-msgstr ""
-
+msgstr "Normalizar el volumen"
+
+# 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:202
msgid ""
"Advanced tvtime/deinterlacer plugin with pulldown detection\n"
@@ -3578,8 +3653,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, "
@@ -3592,10 +3667,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 "
@@ -3605,11 +3680,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. "
@@ -3636,17 +3711,21 @@ msgstr ""
"está disponibles para todas las plataformas)\n"
"\n"
+# Pull down es demoler, pero... no pega.
#: src/post/deinterlace/xine_plugin.c:301
msgid "advanced deinterlacer plugin with pulldown detection"
msgstr ""
+"complemento desentrelazador avanzado con detección de ajuste de frecuencia "
+"de cuadro en el telecine"
#: src/post/deinterlace/xine_plugin.c:321
msgid "tvtime: No deinterlacing methods available, exiting.\n"
msgstr "tvtime: No hay métodos de desentrelazado disponibles, saliendo.\n"
+# Cer: no se que quieren decir.
#: src/post/goom/xine_goom.c:196
msgid "What a GOOM"
-msgstr ""
+msgstr "Vaya un GOOM"
#: src/post/goom/xine_goom.c:204
msgid "frames per second to generate"
@@ -3693,7 +3772,7 @@ msgstr ""
#: src/post/mosaico/mosaico.c:129
msgid "Mosaico is a picture in picture (pip) post plugin"
-msgstr ""
+msgstr "Mosaico es un post-complemento de imagen en imagen (“pip”) "
#: src/post/mosaico/mosaico.c:252
msgid ""
@@ -3720,6 +3799,8 @@ msgstr ""
msgid ""
"Switch is a post plugin able to switch at any time between different streams"
msgstr ""
+"Switch es un post-complemento capaz de conmutar en cualquier momento entre "
+"dos flujos diferentes"
#: src/post/mosaico/switch.c:209
msgid ""
@@ -3748,13 +3829,13 @@ 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"
#: src/post/planar/boxblur.c:143
msgid "box blur filter from mplayer"
-msgstr ""
+msgstr "filtro caja borrosa de mplayer"
#: src/post/planar/denoise3d.c:134
msgid ""
@@ -3784,7 +3865,7 @@ msgstr ""
#: src/post/planar/denoise3d.c:183
msgid "3D Denoiser (variable lowpass filter)"
-msgstr ""
+msgstr "“3D Denoiser” (filtro variable pasobajo antiruido)"
#: src/post/planar/eq2.c:357
msgid ""
@@ -3832,7 +3913,7 @@ msgstr ""
#: src/post/planar/eq2.c:416
msgid "Software video equalizer"
-msgstr ""
+msgstr "Ecualizador de vídeo en software"
#: src/post/planar/eq.c:184
msgid ""
@@ -3864,12 +3945,14 @@ msgstr ""
#: src/post/planar/eq.c:235
msgid "soft video equalizer"
-msgstr ""
+msgstr "ecualizador blando de vídeo"
#: src/post/planar/expand.c:137
msgid ""
"add black borders to top and bottom of video to expand it to 4:3 aspect ratio"
msgstr ""
+"añade bordes negros al tope superior e inferior del vídeo para expandirlo a "
+"la razón de aspecto 4:3"
#: src/post/planar/expand.c:232
msgid ""
@@ -3934,7 +4017,7 @@ msgstr ""
#: src/post/planar/noise.c:452
msgid "Adds noise"
-msgstr ""
+msgstr "añade ruido"
#: src/post/planar/pp.c:111
msgid ""
@@ -3958,7 +4041,7 @@ msgstr ""
#: src/post/planar/pp.c:155
msgid "plugin for ffmpeg libpostprocess"
-msgstr ""
+msgstr "complemento para libpostprocess ffmpeg "
#: src/post/planar/unsharp.c:218
msgid ""
@@ -3987,7 +4070,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 "
@@ -4016,107 +4099,111 @@ msgstr ""
#: src/post/planar/unsharp.c:276
msgid "unsharp mask & gaussian blur"
msgstr ""
+"Unsharp mask & gaussian blur (máscara de des-nitidez y borrosidad gaussiana)"
-#: src/vdr/input_vdr.c:183 src/vdr/input_vdr.c:223 src/vdr/input_vdr.c:2442
-#: src/vdr/input_vdr.c:2540
+# Cer: no lo tengo claro
+#: src/vdr/input_vdr.c:183 src/vdr/input_vdr.c:223 src/vdr/input_vdr.c:1848
+#: src/vdr/input_vdr.c:1946
#, c-format
msgid "%s: input event write: %s.\n"
-msgstr ""
+msgstr "%s: evento de entrada escribe: %s.\n"
#: src/vdr/input_vdr.c:713 src/vdr/input_vdr.c:1137
#, c-format
msgid "%s: buffer_pool_alloc() failed!\n"
-msgstr ""
+msgstr "%s: ¡buffer_pool_alloc() falló!\n"
#: src/vdr/input_vdr.c:782
#, c-format
msgid "%s: flush buffers (vb: %d, ab: %d, vf: %d, af: %d) %s.\n"
-msgstr ""
+msgstr "%s: vaciar tampones (vb: %d, ab: %d, vf: %d, af: %d) %s.\n"
#: src/vdr/input_vdr.c:1476
#, c-format
msgid "%s: shutting down rpc thread (timeout: %d ms) ...\n"
-msgstr ""
+msgstr "%s: cerrando el hilo rpc (temporizado: %d ms) ...\n"
#: src/vdr/input_vdr.c:1500
-#, fuzzy, c-format
+#, c-format
msgid "%s: cancelling rpc thread in function %d...\n"
-msgstr ": no puedo crear condición pthread: %s\n"
+msgstr "%s: cancelando el hilo rpc en la función %d...\n"
#: src/vdr/input_vdr.c:1507
-#, fuzzy, c-format
+#, c-format
msgid "%s: joining rpc thread ...\n"
-msgstr "RTP: parando el hilo de lectura...\n"
+msgstr "%s: uniendo el hilo rpc ...\n"
#: src/vdr/input_vdr.c:1509
-#, fuzzy, c-format
+#, c-format
msgid "%s: rpc thread joined.\n"
-msgstr "RTP: hilo de lectura terminado\n"
+msgstr "%s: hilo rpc unido.\n"
-#: src/vdr/input_vdr.c:2145 src/vdr/input_vdr.c:2159 src/vdr/input_vdr.c:2177
-#: src/vdr/input_vdr.c:2199 src/vdr/input_vdr.c:2221
-#, fuzzy, c-format
+#: src/vdr/input_vdr.c:1587 src/vdr/input_vdr.c:1601 src/vdr/input_vdr.c:1619
+#: src/vdr/input_vdr.c:1641 src/vdr/input_vdr.c:1663
+#, c-format
msgid "%s: failed to open '%s' (%s)\n"
-msgstr "stdin: falló al abrir '%s'\n"
+msgstr "%s: falló en abrir '%s' (%s)\n"
-#: src/vdr/input_vdr.c:2161
+#: src/vdr/input_vdr.c:1603
msgid "timeout expired during setup phase"
-msgstr ""
+msgstr "expiró el límite de tiempo durante la fase de configuración"
-#: src/vdr/input_vdr.c:2246
-#, fuzzy, c-format
+#: src/vdr/input_vdr.c:1688
+#, c-format
msgid "%s: failed to create socket for port %d (%s)\n"
-msgstr "stdin: falló al abrir '%s'\n"
+msgstr "%s: fallo al crear el socket para el puerto %d (%s)\n"
-#: src/vdr/input_vdr.c:2260
-#, fuzzy, c-format
+#: src/vdr/input_vdr.c:1702
+#, c-format
msgid "%s: failed to connect to port %d (%s)\n"
-msgstr "rtsp: falló en conectar a '%s'\n"
+msgstr "%s: falló en conectar al puerto %d (%s)\n"
-#: src/vdr/input_vdr.c:2267
+#: src/vdr/input_vdr.c:1709
#, c-format
msgid "%s: socket opening (port %d) successful, fd = %d\n"
-msgstr ""
+msgstr "%s: abriendo socket (puerto %d) con éxito, fd = %d\n"
-#: src/vdr/input_vdr.c:2295
-#, fuzzy, c-format
+#: src/vdr/input_vdr.c:1737
+#, c-format
msgid "%s: connecting to vdr.\n"
-msgstr "%s: no se puede conectar a %s:%d\n"
+msgstr "%s: conectando a vdr.\n"
-#: src/vdr/input_vdr.c:2300
-#, fuzzy, c-format
+#: src/vdr/input_vdr.c:1742
+#, c-format
msgid "%s: failed to resolve hostname '%s' (%s)\n"
-msgstr "stdin: falló al abrir '%s'\n"
+msgstr "%s: falló al resolver el nombre de equipo '%s' (%s)\n"
-#: src/vdr/input_vdr.c:2323
+#: src/vdr/input_vdr.c:1765
#, c-format
msgid "%s: connecting to all sockets (port %d .. %d) was successful.\n"
-msgstr ""
+msgstr "%s: la conexión a todos los sockets (puerto %d .. %d) tuvo éxito.\n"
-#: src/vdr/input_vdr.c:2363
+#: src/vdr/input_vdr.c:1805
#, c-format
msgid ""
"%s: MRL (%s) invalid! MRL should start with vdr://path/to/fifo/stream or "
"netvdr://host:port where ':port' is optional.\n"
msgstr ""
+"%s: ¡MRL (%s) inválido! El MRL debiera empezar con vdr://camino/a/flujo/fifo "
+"o netvdr://equipo:puerto donde ':puerto' es opcional.\n"
-#: src/vdr/input_vdr.c:2373
-#, fuzzy, c-format
+#: src/vdr/input_vdr.c:1815
+#, c-format
msgid "%s: can't create new thread (%s)\n"
-msgstr "input_rtp: no se puede crear un hilo nuevo (%s)\n"
+msgstr "%s: no puedo crear nuevo hilo (%s)\n"
-#: src/vdr/input_vdr.c:2654
+#: src/vdr/input_vdr.c:2060
msgid "VDR display device plugin"
-msgstr ""
+msgstr "complemento de dispositivo de visualización VDR"
#: src/vdr/post_vdr_video.c:104
msgid "modifies every video frame as requested by VDR"
-msgstr ""
+msgstr "modifica todos los cuadros de vídeo como lo pida el VDR"
#: src/vdr/post_vdr_video.c:415
#, c-format
msgid ": osd: (%d, %d)-(%d, %d)@%lg\n"
-msgstr ""
+msgstr ": vep: (%d, %d)-(%d, %d)@%lg\n"
#: src/video_out/video_out_aa.c:298
msgid "xine video output plugin using the ascii-art library"
@@ -4172,10 +4259,10 @@ 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:1148 src/video_out/video_out_vidix.c:1155
-#: src/video_out/video_out_vidix.c:1162 src/video_out/video_out_xcbxv.c:1267
-#: src/video_out/video_out_xv.c:1320 src/video_out/video_out_xvmc.c:1415
-#: src/video_out/video_out_xxmc.c:2562
+#: src/video_out/video_out_vidix.c:1160 src/video_out/video_out_vidix.c:1167
+#: src/video_out/video_out_vidix.c:1174 src/video_out/video_out_xcbxv.c:1279
+#: src/video_out/video_out_xv.c:1332 src/video_out/video_out_xvmc.c:1427
+#: src/video_out/video_out_xxmc.c:2574
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."
@@ -4281,7 +4368,7 @@ msgstr "complemento de xine de salida de vídeo usando DirectFB bajo XDirectFB."
msgid "xine video output plugin for win32 using directx"
msgstr "complemento de xine de salida de vídeo para win32 usando directx"
-#: src/video_out/video_out_fb.c:746
+#: src/video_out/video_out_fb.c:758
#, c-format
msgid ""
"video_out_fb: only packed truecolour/directcolour is supported (%d).\n"
@@ -4291,11 +4378,11 @@ msgstr ""
"directo) empaquetado (%d).\n"
" Compruebe 'fbset -i' o pruebe 'fbset -depth 16'.\n"
-#: src/video_out/video_out_fb.c:806 src/video_out/video_out_vidix.c:1220
+#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1232
msgid "framebuffer device name"
msgstr "nombre del dispositivo framebuffer"
-#: src/video_out/video_out_fb.c:807 src/video_out/video_out_vidix.c:1221
+#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1233
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, "
@@ -4309,55 +4396,56 @@ msgstr ""
"arbitrario. De modo que debería ser cuidadoso de que el valor que introduzca "
"es realmente un verdadero dispositivo framebuffer."
-#: src/video_out/video_out_fb.c:881
-#, fuzzy, c-format
+#: src/video_out/video_out_fb.c:893
+#, c-format
msgid "%s: Your video mode was not recognized, sorry.\n"
-msgstr "video_out_fb: Lo sentimos, su modo de vídeo no fue reconocido .\n"
+msgstr "%s: Lo sentimos, su modo de vídeo no fue reconocido.\n"
-#: src/video_out/video_out_fb.c:938
-#, fuzzy, c-format
+# CER: hacer update-po, no coincide con el fuente.
+#: src/video_out/video_out_fb.c:950
+#, c-format
msgid "%s: %d video RAM buffers are available.\n"
-msgstr "video_out_fb: están disponibles %d tampones de vídeo en RAM.\n"
+msgstr "%s: están disponibles %d tampones de vídeo en RAM.\n"
-#: src/video_out/video_out_fb.c:944
-#, fuzzy, c-format
+#: src/video_out/video_out_fb.c:956
+#, c-format
msgid ""
"WARNING: %s: Zero copy buffers are DISABLED because only %d buffers\n"
" are available which is less than the recommended %d buffers. Lowering\n"
" the frame buffer resolution might help.\n"
msgstr ""
-"AVISO: video_out_fb: Tampones Zero copy (copia Cero) están DESACTIVADOS "
-"porque sólo %d tampones\n"
-" están disponibles que son menos que los recomendados %d tampones. "
-"Disminuyendo\n"
-" la resolución del tampón de cuadro podría ayudar.\n"
+"AVISO: %s: Tampones “zero copy” (copia Cero) están DESACTIVADOS porque sólo "
+"hay\n"
+" disponibles %d tampones lo cual es menos que los recomendados %d "
+"tampones.\n"
+" Disminuir la resolución del tampón de cuadro podría ayudar.\n"
# Cer: panning --> panoramizado
# frame flips --> volteos de cuadro
# Zero copy buffers --> tampones copia cero
-#: src/video_out/video_out_fb.c:955
-#, fuzzy, c-format
+#: src/video_out/video_out_fb.c:967
+#, c-format
msgid ""
"WARNING: %s: Zero copy buffers are DISABLED because kernel driver\n"
" do not support screen panning (used for frame flips).\n"
msgstr ""
-"AVISO: video_out_fb: Los tampones copia cero están DESACTIVADOS porque el "
-"driver del kernel\n"
+"AVISO: %s: Los tampones copia cero están DESACTIVADOS porque el driver del "
+"kernel\n"
" no soporta panoramizado de pantalla (usado para volteos de cuadro ).\n"
-#: src/video_out/video_out_fb.c:1024
-#, fuzzy, c-format
+#: src/video_out/video_out_fb.c:1036
+#, c-format
msgid ""
"WARNING: %s: current display depth is %d. For better performance\n"
" a depth of 16 bpp is recommended!\n"
"\n"
msgstr ""
-"AVISO: video_out_fb: la profundidad actual de pantalla es %d. ¡Para tener "
-"mejor rendimiento \n"
+"AVISO: %s: la profundidad actual de pantalla es %d. ¡Para tener mejor "
+"rendimiento \n"
" se recomienda una profundidad de 16 bpp!\n"
"\n"
-#: src/video_out/video_out_fb.c:1055
+#: src/video_out/video_out_fb.c:1067
msgid "Xine video output plugin using the Linux frame buffer device"
msgstr ""
"Complemento de xine de salida de vídeo usando el dispositivo Linux tampón de "
@@ -4439,9 +4527,9 @@ 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:1299 src/video_out/video_out_xv.c:1352
-#: src/video_out/video_out_xvmc.c:1429 src/video_out/video_out_xxmc.c:2594
+#: src/video_out/video_out_opengl.c:1915 src/video_out/video_out_vidix.c:1024
+#: src/video_out/video_out_xcbxv.c:1311 src/video_out/video_out_xv.c:1364
+#: src/video_out/video_out_xvmc.c:1441 src/video_out/video_out_xxmc.c:2606
msgid "enable double buffering"
msgstr "activar doble tamponeado"
@@ -4478,10 +4566,8 @@ msgstr ""
"(framebuffer) pgx32\n"
#: src/video_out/video_out_pgx32.c:864
-#, fuzzy
msgid "xine video output plugin for Sun PGX32 framebuffers"
-msgstr ""
-"complemento de salida de vídeo usando libvidix para frame buffer de linux"
+msgstr "complemento de salida de vídeo para tampón de cuadro Sun PGX32 "
# Cer: Mmm, coger :-?
#: src/video_out/video_out_pgx64.c:278
@@ -4542,9 +4628,9 @@ msgstr ""
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:1453 src/video_out/video_out_xcbxv.c:1266
-#: src/video_out/video_out_xv.c:1319 src/video_out/video_out_xvmc.c:1414
-#: src/video_out/video_out_xxmc.c:2561
+#: src/video_out/video_out_pgx64.c:1453 src/video_out/video_out_xcbxv.c:1278
+#: src/video_out/video_out_xv.c:1331 src/video_out/video_out_xvmc.c:1426
+#: src/video_out/video_out_xxmc.c:2573
msgid "video overlay colour key"
msgstr "llave de color de superposición de vídeo"
@@ -4583,16 +4669,16 @@ msgstr ""
"gráfica."
#: src/video_out/video_out_pgx64.c:1487
-#, fuzzy
msgid "xine video output plugin for Sun XVR100/PGX64/PGX24 framebuffers"
msgstr ""
-"complemento de salida de vídeo usando libvidix para frame buffer de linux"
+"complemento de xine de salida de vídeo para tampones-de-cuadro Sun XVR100/"
+"PGX64/PGX24"
-#: src/video_out/video_out_sdl.c:480
+#: src/video_out/video_out_sdl.c:488
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:489
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, "
@@ -4602,17 +4688,17 @@ 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:531
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:568
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:582
+#: src/video_out/video_out_sdl.c:590
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 "
@@ -4623,118 +4709,33 @@ msgid "xine video output plugin using the Libstk Surface Set-top Toolkit"
msgstr ""
"complemento de vídeo de xine usando el \"Libstk Surface Set-top Toolkit\""
-#: src/video_out/video_out_syncfb.c:280
-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
-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
-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
-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
-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
-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
-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
-msgid ""
-"video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor "
-"RGB565)\n"
-msgstr ""
-"video_out_syncfb: abortando. (módulo SyncFB no soporta YV12, YUY2 ni "
-"RGB565)\n"
-
-#: src/video_out/video_out_syncfb.c:985
-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: info. (control de brillo/contraste no estará disponible "
-"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
-msgid "default number of frame repetitions"
-msgstr "número por defecto de repeticiones de cuadros"
-
-#: src/video_out/video_out_syncfb.c:1010
-msgid ""
-"This specifies how many times a single video frame will be displayed "
-"consecutively."
-msgstr ""
-"Esto especifica cuantas veces se mostrará consecutivamente el mismo cuadro "
-"de vídeo."
-
-#: src/video_out/video_out_syncfb.c:1060
-msgid "SyncFB device name"
-msgstr "Nombre de dispositivo de SyncFB"
-
-#: src/video_out/video_out_syncfb.c:1061
-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, "
-"xine can be used to fill this file with arbitrary content. So you should be "
-"careful that the value you enter really is a proper framebuffer device."
-msgstr ""
-"Especifica el nombre de fichero para el dispositivo SyncFB (TeleTux) a ser "
-"usado.\n"
-"Este ajuste es crítico para la seguridad, porque cuando se cambia a un "
-"fichero diferente, xine puede usarse para llenar este fichero con contenido "
-"arbitrario. Así que debiera ser cuidadoso con que el valor que introduzca "
-"sea realmente un dispositivo framebuffer adecuado."
-
-#: src/video_out/video_out_syncfb.c:1084
-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_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:1300
-#: src/video_out/video_out_xv.c:1353 src/video_out/video_out_xvmc.c:1430
-#: src/video_out/video_out_xxmc.c:2595
+#: src/video_out/video_out_vidix.c:1025 src/video_out/video_out_xcbxv.c:1312
+#: src/video_out/video_out_xv.c:1365 src/video_out/video_out_xvmc.c:1442
+#: src/video_out/video_out_xxmc.c:2607
msgid ""
"Double buffering will synchronize the update of the video image to the "
"repainting of the entire screen (\"vertical retrace\"). This eliminates "
@@ -4745,45 +4746,45 @@ 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
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
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
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
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:1147
+#: src/video_out/video_out_vidix.c:1159
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:1154
+#: src/video_out/video_out_vidix.c:1166
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:1161
+#: src/video_out/video_out_vidix.c:1173
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:1195
+#: src/video_out/video_out_vidix.c:1207
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:1269
+#: src/video_out/video_out_vidix.c:1281
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"
@@ -4791,7 +4792,7 @@ msgstr ""
#: src/video_out/video_out_xcbshm.c:150 src/video_out/video_out_xshm.c:211
#, c-format
msgid "%s: %s: allocating image\n"
-msgstr ""
+msgstr "%s: %s: ubicando imagen\n"
#: src/video_out/video_out_xcbshm.c:152 src/video_out/video_out_xcbshm.c:162
#: src/video_out/video_out_xcbshm.c:174 src/video_out/video_out_xcbxv.c:260
@@ -4822,7 +4823,7 @@ msgstr ""
msgid "%s: x11 error during shared memory XImage creation\n"
msgstr "%s: x11 error durante creación de XImage en memoria compartida\n"
-#: src/video_out/video_out_xcbshm.c:1096 src/video_out/video_out_xshm.c:1153
+#: src/video_out/video_out_xcbshm.c:1104 src/video_out/video_out_xshm.c:1161
#, c-format
msgid ""
"\n"
@@ -4837,19 +4838,19 @@ msgstr ""
"rendimiento se recomienda una profundidad de 16 bpp!\n"
"\n"
-#: src/video_out/video_out_xcbshm.c:1109 src/video_out/video_out_xshm.c:1166
+#: src/video_out/video_out_xcbshm.c:1117 src/video_out/video_out_xshm.c:1174
#, c-format
msgid "%s: MIT shared memory extension not present on display.\n"
msgstr ""
"%s: 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:1208 src/video_out/video_out_xshm.c:1250
-#, fuzzy, c-format
+#: src/video_out/video_out_xcbshm.c:1216 src/video_out/video_out_xshm.c:1258
+#, c-format
msgid "%s: your video mode was not recognized, sorry :-(\n"
-msgstr "video_out_fb: Lo sentimos, su modo de vídeo no fue reconocido .\n"
+msgstr "%s: lo sentimos, su modo de vídeo no fue reconocido :-(\n"
-#: src/video_out/video_out_xcbshm.c:1237 src/video_out/video_out_xshm.c:1298
+#: src/video_out/video_out_xcbshm.c:1245 src/video_out/video_out_xshm.c:1306
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 "
@@ -4868,18 +4869,18 @@ msgid "%s: shared memory error in shmget: %s\n"
msgstr "%s: error de memoria compartida en shmget: %s\n"
#: src/video_out/video_out_xcbxv.c:278
-#, fuzzy, c-format
+#, c-format
msgid "%s: shared memory error (address error)\n"
-msgstr "%s: x11 error durante creación de XImage en memoria compartida\n"
+msgstr "%s: error de memoria compartida (error de dirección)\n"
-#: src/video_out/video_out_xcbxv.c:1120 src/video_out/video_out_xv.c:1167
-#: src/video_out/video_out_xxmc.c:2412
-#, fuzzy, c-format
+#: src/video_out/video_out_xcbxv.c:1132 src/video_out/video_out_xv.c:1179
+#: src/video_out/video_out_xxmc.c:2424
+#, c-format
msgid "%s: Xv extension not present.\n"
-msgstr "video_out_xv: la extensión Xv no está presente.\n"
+msgstr "%s: la extensión Xv no está presente.\n"
-#: src/video_out/video_out_xcbxv.c:1162 src/video_out/video_out_xv.c:1204
-#: src/video_out/video_out_xxmc.c:2449
+#: src/video_out/video_out_xcbxv.c:1174 src/video_out/video_out_xv.c:1216
+#: src/video_out/video_out_xxmc.c:2461
#, c-format
msgid ""
"%s: Xv extension is present but I couldn't find a usable yuv12 port.\n"
@@ -4889,7 +4890,7 @@ msgstr ""
"usable.\n"
" ¡¿Parece que su driver de hardware gráfico no soporta Xv?!\n"
-#: src/video_out/video_out_xcbxv.c:1171
+#: src/video_out/video_out_xcbxv.c:1183
#, c-format
msgid ""
"%s: using Xv port %d from adaptor %s for hardware colour space conversion "
@@ -4898,23 +4899,23 @@ msgstr ""
"%s: 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:1275 src/video_out/video_out_xv.c:1328
-#: src/video_out/video_out_xvmc.c:1423 src/video_out/video_out_xxmc.c:2570
+#: src/video_out/video_out_xcbxv.c:1287 src/video_out/video_out_xv.c:1340
+#: src/video_out/video_out_xvmc.c:1435 src/video_out/video_out_xxmc.c:2582
msgid "autopaint colour key"
msgstr "llave de color autopintado"
-#: src/video_out/video_out_xcbxv.c:1276 src/video_out/video_out_xv.c:1329
-#: src/video_out/video_out_xvmc.c:1424 src/video_out/video_out_xxmc.c:2571
+#: src/video_out/video_out_xcbxv.c:1288 src/video_out/video_out_xv.c:1341
+#: src/video_out/video_out_xvmc.c:1436 src/video_out/video_out_xxmc.c:2583
msgid "Make Xv autopaint its colour key."
msgstr "Hacer Xv autopintar su llave de color."
-#: src/video_out/video_out_xcbxv.c:1283 src/video_out/video_out_xv.c:1336
-#: src/video_out/video_out_xxmc.c:2578
+#: src/video_out/video_out_xcbxv.c:1295 src/video_out/video_out_xv.c:1348
+#: src/video_out/video_out_xxmc.c:2590
msgid "bilinear scaling mode"
msgstr "modo de escalado bilineal"
-#: src/video_out/video_out_xcbxv.c:1284 src/video_out/video_out_xv.c:1337
-#: src/video_out/video_out_xxmc.c:2579
+#: src/video_out/video_out_xcbxv.c:1296 src/video_out/video_out_xv.c:1349
+#: src/video_out/video_out_xxmc.c:2591
msgid ""
"Selects the bilinear scaling mode for Permedia cards. The individual values "
"are:\n"
@@ -4940,40 +4941,39 @@ msgstr ""
"1 - filtrado horizontal lineal\n"
"2 - sactivar filtrado bilineal completo"
-#: src/video_out/video_out_xcbxv.c:1336 src/video_out/video_out_xv.c:1386
-#: src/video_out/video_out_xxmc.c:2635
-#, fuzzy, c-format
+#: src/video_out/video_out_xcbxv.c:1348 src/video_out/video_out_xv.c:1398
+#: src/video_out/video_out_xxmc.c:2647
+#, c-format
msgid "%s: this adaptor supports the yv12 format.\n"
-msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
+msgstr "%s: éste adaptador soporta el formato yv12.\n"
-#: src/video_out/video_out_xcbxv.c:1341 src/video_out/video_out_xv.c:1391
-#: src/video_out/video_out_xxmc.c:2640
-#, fuzzy, c-format
+#: src/video_out/video_out_xcbxv.c:1353 src/video_out/video_out_xv.c:1403
+#: src/video_out/video_out_xxmc.c:2652
+#, c-format
msgid "%s: this adaptor supports the yuy2 format.\n"
-msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
+msgstr "%s: éste adaptador soporta el formato yuy2.\n"
-#: src/video_out/video_out_xcbxv.c:1349 src/video_out/video_out_xv.c:1413
-#: src/video_out/video_out_xxmc.c:2663
+#: src/video_out/video_out_xcbxv.c:1361 src/video_out/video_out_xv.c:1425
+#: src/video_out/video_out_xxmc.c:2675
msgid "pitch alignment workaround"
msgstr "rodeo para alineamiento de paso"
-#: src/video_out/video_out_xcbxv.c:1350 src/video_out/video_out_xv.c:1414
-#: src/video_out/video_out_xxmc.c:2664
+#: src/video_out/video_out_xcbxv.c:1362 src/video_out/video_out_xv.c:1426
+#: src/video_out/video_out_xxmc.c:2676
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:1377 src/video_out/video_out_xv.c:1460
-#: src/video_out/video_out_xxmc.c:2757
+#: src/video_out/video_out_xcbxv.c:1389 src/video_out/video_out_xv.c:1472
+#: src/video_out/video_out_xxmc.c:2769
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:194
-#, fuzzy, c-format
+#, c-format
msgid "%s: shared memory error when allocating image\n"
-msgstr ""
-"%s: error de memoria compartida (error de dirección) ) al ubicar imagen\n"
+msgstr "%s: error de memoria compartida al ubicar imagen\n"
#: src/video_out/video_out_xv.c:286 src/video_out/video_out_xxmc.c:640
#, c-format
@@ -4983,7 +4983,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:1214 src/video_out/video_out_xxmc.c:2459
+#: src/video_out/video_out_xv.c:1226 src/video_out/video_out_xxmc.c:2471
#, c-format
msgid ""
"%s: using Xv port %ld from adaptor %s for hardware colour space conversion "
@@ -4992,11 +4992,11 @@ msgstr ""
"%s: usando puerto Xv %ld del adaptador %s para conversión y escalado de "
"espacio de color en hardware .\n"
-#: src/video_out/video_out_xvmc.c:1540
+#: src/video_out/video_out_xvmc.c:1552
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:1638
+#: src/video_out/video_out_xvmc.c:1650
msgid ""
"video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 "
"port.\n"
@@ -5004,7 +5004,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:1647
+#: src/video_out/video_out_xvmc.c:1659
#, c-format
msgid ""
"video_out_xvmc: using Xv port %ld from adaptor %s\n"
@@ -5013,32 +5013,32 @@ 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:1652
+#: src/video_out/video_out_xvmc.c:1664
msgid " idct and motion compensation acceleration \n"
msgstr " compensación de movimiento y aceleración idct \n"
-#: src/video_out/video_out_xvmc.c:1654
+#: src/video_out/video_out_xvmc.c:1666
msgid " motion compensation acceleration only\n"
msgstr " sólo compensación de aceleración \n"
-#: src/video_out/video_out_xvmc.c:1656
+#: src/video_out/video_out_xvmc.c:1668
msgid " no XvMC support \n"
msgstr " sin soporte XvMC \n"
-#: src/video_out/video_out_xvmc.c:1657
+#: src/video_out/video_out_xvmc.c:1669
#, c-format
msgid " With Overlay = %d; UnsignedIntra = %d.\n"
msgstr " Con Overlay = %d; UnsignedIntra = %d.\n"
-#: src/video_out/video_out_xvmc.c:1670
+#: src/video_out/video_out_xvmc.c:1682
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_xxmc.c:2669
+#: src/video_out/video_out_xxmc.c:2681
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:2670
+#: src/video_out/video_out_xxmc.c:2682
msgid ""
"Some XvMC implementations allow more than 8 frames.\n"
"This option, when turned on, makes the driver try to\n"
@@ -5048,11 +5048,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:2676
+#: src/video_out/video_out_xxmc.c:2688
msgid "Unichrome cpu save"
msgstr "Ahorro de cpu unichrome"
-#: src/video_out/video_out_xxmc.c:2677
+#: src/video_out/video_out_xxmc.c:2689
msgid ""
"Saves CPU time by sleeping while decoder works.\n"
"Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n"
@@ -5062,11 +5062,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:2683
+#: src/video_out/video_out_xxmc.c:2695
msgid "Fix buggy NVIDIA XvMC subpicture colours"
msgstr "Arreglar colores de subimagen en NVIDIA XvMC con errores"
-#: src/video_out/video_out_xxmc.c:2684
+#: src/video_out/video_out_xxmc.c:2696
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"
@@ -5075,25 +5075,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:2689
+#: src/video_out/video_out_xxmc.c:2701
msgid "Use bob as accelerated deinterlace method."
msgstr "Use «bob» como método acelerado de desentrelazado."
-#: src/video_out/video_out_xxmc.c:2690
-#, fuzzy
+#: src/video_out/video_out_xxmc.c:2702
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:2696
+#: src/video_out/video_out_xxmc.c:2708
msgid "Don't use bob deinterlacing for progressive frames."
msgstr "No usar desentrelazado «bob» para cuadros progresivos."
-#: src/video_out/video_out_xxmc.c:2697
+#: src/video_out/video_out_xxmc.c:2709
msgid ""
"Progressive frames don't need deinterlacing, so disabling it on\n"
"demand should result in a better picture.\n"
@@ -5101,12 +5100,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:2703
+#: src/video_out/video_out_xxmc.c:2715
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:2704
+#: src/video_out/video_out_xxmc.c:2716
msgid ""
"Bob deinterlacing adds some noise to horizontal lines, so disabling it\n"
"on demand should result in a better OSD picture.\n"
@@ -5181,37 +5180,36 @@ msgstr ""
"entradas poco fiables, pero también aumentan la latencia y el consumo de "
"memoria."
-#: src/xine-engine/audio_out.c:1111
+#: src/xine-engine/audio_out.c:1112
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:1250
-#, fuzzy
+#: src/xine-engine/audio_out.c:1251
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:1422
+#: src/xine-engine/audio_out.c:1423
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:1430
+#: src/xine-engine/audio_out.c:1431
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:1436
+#: src/xine-engine/audio_out.c:1437
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:2095
+#: src/xine-engine/audio_out.c:2100
msgid "method to sync audio and video"
msgstr "método para sincronizar audio y vídeo"
-#: src/xine-engine/audio_out.c:2096
+#: src/xine-engine/audio_out.c:2101
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 "
@@ -5253,11 +5251,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:2124
+#: src/xine-engine/audio_out.c:2129
msgid "enable resampling"
msgstr "activar remuestreo (resampling)"
-#: src/xine-engine/audio_out.c:2125
+#: src/xine-engine/audio_out.c:2130
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 "
@@ -5269,11 +5267,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:2132
+#: src/xine-engine/audio_out.c:2137
msgid "always resample to this rate (0 to disable)"
msgstr "siempre remuestrear a ésta cadencia (0 para desactivar)"
-#: src/xine-engine/audio_out.c:2133
+#: src/xine-engine/audio_out.c:2138
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 "
@@ -5283,11 +5281,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:2142
+#: src/xine-engine/audio_out.c:2147
msgid "offset for digital passthrough"
msgstr "compensación para paso a través digital"
-#: src/xine-engine/audio_out.c:2143
+#: src/xine-engine/audio_out.c:2148
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"
@@ -5298,11 +5296,11 @@ msgstr ""
"para compensar.\n"
"Las unidades del valor es una marca PTS, que es 1/90000 segundo."
-#: src/xine-engine/audio_out.c:2152
+#: src/xine-engine/audio_out.c:2157
msgid "play audio even on slow/fast speeds"
msgstr "reproduzca vídeo incluso a velocidades lentas/rápidas"
-#: src/xine-engine/audio_out.c:2153
+#: src/xine-engine/audio_out.c:2158
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 "
@@ -5311,27 +5309,27 @@ 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:2226
+#: src/xine-engine/audio_out.c:2231
msgid "startup audio volume"
msgstr "volumen de audio inicial"
-#: src/xine-engine/audio_out.c:2227
+#: src/xine-engine/audio_out.c:2232
msgid "The overall audio volume set at xine startup."
msgstr "El volumen de sonido al arrancar xine."
-#: src/xine-engine/audio_out.c:2230
+#: src/xine-engine/audio_out.c:2235
msgid "restore volume level at startup"
msgstr "restaurar el nivel del volumen al arrancar"
-#: src/xine-engine/audio_out.c:2231
+#: src/xine-engine/audio_out.c:2236
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:2261
+#: src/xine-engine/audio_out.c:2266
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"
@@ -5343,41 +5341,41 @@ 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:943
#, 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:1048
#, 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:1049
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:1149
#, 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:1150
#, 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:1151
#, 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:1606
#, 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"
@@ -5424,7 +5422,7 @@ msgstr "input_rip: error escribiendo al fichero %<PRIdMAX> bytes: %s\n"
#: src/xine-engine/input_rip.c:183
#, 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:314 src/xine-engine/input_rip.c:419
#, c-format
@@ -5517,12 +5515,12 @@ msgstr "io_helper: Fichero no encontrado\n"
msgid "io_helper: Connection Refused\n"
msgstr "io_helper: Conexión Rechazada\n"
-#: src/xine-engine/load_plugins.c:213
+#: src/xine-engine/load_plugins.c:216
#, c-format
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:327
+#: src/xine-engine/load_plugins.c:331
#, c-format
msgid ""
"load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n"
@@ -5530,13 +5528,13 @@ msgstr ""
"load_plugins: ignorando complemento%s, versión \"iface\" equivocada%d "
"(debería ser %d)\n"
-#: src/xine-engine/load_plugins.c:385
+#: src/xine-engine/load_plugins.c:390
#, c-format
msgid "priority for %s decoder"
msgstr "prioridad para decodificador %s"
# CER: ¿rank?
-#: src/xine-engine/load_plugins.c:390
+#: src/xine-engine/load_plugins.c:395
msgid ""
"The priority provides a ranking in case some media can be handled by more "
"than one decoder.\n"
@@ -5546,7 +5544,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:418
+#: src/xine-engine/load_plugins.c:423
#, c-format
msgid ""
"load_plugins: demuxer plugin %s does not provide a priority, xine-lib will "
@@ -5555,7 +5553,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:435
+#: src/xine-engine/load_plugins.c:440
#, c-format
msgid ""
"load_plugins: input plugin %s does not provide a priority, xine-lib will use "
@@ -5564,47 +5562,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:491
+#: src/xine-engine/load_plugins.c:497
#, c-format
msgid "load_plugins: plugin %s found\n"
msgstr "load_plugins: encontrado complemento %s\n"
-#: src/xine-engine/load_plugins.c:494
+#: src/xine-engine/load_plugins.c:500
#, c-format
msgid "load_plugins: static plugin found\n"
msgstr "load_plugins: encontrado complemento estático\n"
-#: src/xine-engine/load_plugins.c:501
+#: src/xine-engine/load_plugins.c:507
#, 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:504
+#: src/xine-engine/load_plugins.c:510
#, 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:521
+#: src/xine-engine/load_plugins.c:527
#, 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:525
+#: src/xine-engine/load_plugins.c:531
#, 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:585
+#: src/xine-engine/load_plugins.c:594
#, 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:626
+#: src/xine-engine/load_plugins.c:636
#, c-format
msgid ""
"load_plugins: cannot open plugin lib %s:\n"
@@ -5613,7 +5611,7 @@ msgstr ""
"load_plugins: no puedo abrir librería de complemento %s:\n"
"%s\n"
-#: src/xine-engine/load_plugins.c:641
+#: src/xine-engine/load_plugins.c:651
#, c-format
msgid ""
"load_plugins: can't get plugin info from %s:\n"
@@ -5622,12 +5620,12 @@ msgstr ""
"load_plugins: no puedo conseguir información del complemento de %s:\n"
"%s\n"
-#: src/xine-engine/load_plugins.c:659
+#: src/xine-engine/load_plugins.c:669
#, 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:708
+#: src/xine-engine/load_plugins.c:737
#, c-format
msgid ""
"load_plugins: cannot (stage 2) open plugin lib %s:\n"
@@ -5636,32 +5634,32 @@ msgstr ""
"load_plugins: no puedo (etapa 2) abrir librería de complementos %s:\n"
"%s\n"
-#: src/xine-engine/load_plugins.c:734
+#: src/xine-engine/load_plugins.c:771
#, 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:1097 src/xine-engine/load_plugins.c:1106
-#, fuzzy, c-format
+#: src/xine-engine/load_plugins.c:1175 src/xine-engine/load_plugins.c:1184
+#, c-format
msgid "Unable to create %s directory: %s\n"
-msgstr "Incapaz de crear el objeto de sonido directo."
+msgstr "Incapaz de crear el directorio %s: %s\n"
-#: src/xine-engine/load_plugins.c:1343
+#: src/xine-engine/load_plugins.c:1421
#, 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:1468
+#: src/xine-engine/load_plugins.c:1546
#, c-format
msgid "load_plugins: using demuxer '%s'\n"
msgstr "load_plugins: usando desmultiplexor '%s'\n"
-#: src/xine-engine/load_plugins.c:1763 src/xine-engine/load_plugins.c:1810
+#: src/xine-engine/load_plugins.c:1841 src/xine-engine/load_plugins.c:1888
#, 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:1813
+#: src/xine-engine/load_plugins.c:1891
msgid ""
"load_plugins: audio output auto-probing didn't find any usable audio "
"driver.\n"
@@ -5669,7 +5667,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:2116
+#: src/xine-engine/load_plugins.c:2194
#, c-format
msgid ""
"load_plugins: cannot unload plugin lib %s:\n"
@@ -5710,9 +5708,9 @@ msgid "osd: error looking up font %s with FontConfig"
msgstr "osd: error buscando tipografía %s con FontConfig"
#: src/xine-engine/osd.c:996
-#, fuzzy, c-format
+#, c-format
msgid "osd: error loading font %s with in XDG data directories.\n"
-msgstr "osd: error cargando tipografía %s con ft2\n"
+msgstr "osd: error cargando tipografía %s con directorios de datos XDG\n"
#: src/xine-engine/osd.c:1005
msgid "osd: cannot initialize ft2 library\n"
@@ -5777,11 +5775,12 @@ msgstr ""
#: src/xine-engine/spu.c:36
msgid "opacity for the black parts of bitmapped subtitles"
-msgstr ""
+msgstr "opacidad para las partes negras de los subtítulos mapeados por bits"
#: src/xine-engine/spu.c:41
msgid "opacity for the colour parts of bitmapped subtitles"
msgstr ""
+"opacidad para las partes coloreadas de los subtítulos mapeados por bits"
#: src/xine-engine/video_decoder.c:387
#, c-format
@@ -5863,11 +5862,11 @@ 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"
-#: src/xine-engine/vo_scale.c:387
+#: src/xine-engine/vo_scale.c:380
msgid "horizontal image position in the output window"
msgstr "posición horizontal de la imagen en la ventana de salida"
-#: src/xine-engine/vo_scale.c:388
+#: src/xine-engine/vo_scale.c:381
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"
@@ -5880,11 +5879,11 @@ msgstr ""
"\"en el centro\", mientras que 0 significa \"a la izquierda del todo\" y 100 "
"\"a la deracha del todo\"."
-#: src/xine-engine/vo_scale.c:395
+#: src/xine-engine/vo_scale.c:388
msgid "vertical image position in the output window"
msgstr "posición vertical de la imagen en la ventana de salida"
-#: src/xine-engine/vo_scale.c:396
+#: src/xine-engine/vo_scale.c:389
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"
@@ -5897,11 +5896,11 @@ msgstr ""
"\"en el centro\", mientras que 0 significa\"arriba a tope\" y 100 \"abajo al "
"fondo\"."
-#: src/xine-engine/vo_scale.c:403
+#: src/xine-engine/vo_scale.c:396
msgid "disable all video scaling"
msgstr "desactive todo escalado de vídeo"
-#: src/xine-engine/vo_scale.c:404
+#: src/xine-engine/vo_scale.c:397
msgid ""
"If you want the video image to be always shown at its original resolution, "
"you can disable all image scaling here.\n"
@@ -5920,139 +5919,139 @@ msgstr ""
"imagen no está acelerado en hardware, esto puede reducir drásticamente el "
"uso de cpu."
-#: src/xine-engine/xine.c:831 src/xine-engine/xine.c:939
-#: src/xine-engine/xine.c:978 src/xine-engine/xine.c:1014
-#: src/xine-engine/xine.c:1026 src/xine-engine/xine.c:1039
-#: src/xine-engine/xine.c:1052 src/xine-engine/xine.c:1065
-#: src/xine-engine/xine.c:1091 src/xine-engine/xine.c:1116
-#: src/xine-engine/xine.c:1151
+#: src/xine-engine/xine.c:845 src/xine-engine/xine.c:953
+#: src/xine-engine/xine.c:993 src/xine-engine/xine.c:1029
+#: src/xine-engine/xine.c:1041 src/xine-engine/xine.c:1054
+#: src/xine-engine/xine.c:1067 src/xine-engine/xine.c:1080
+#: src/xine-engine/xine.c:1106 src/xine-engine/xine.c:1131
+#: src/xine-engine/xine.c:1168
msgid "xine: error while parsing mrl\n"
msgstr "xine: error mientras se interpretaba mrl\n"
-#: src/xine-engine/xine.c:873
+#: src/xine-engine/xine.c:887
#, c-format
msgid "xine: found input plugin : %s\n"
msgstr "xine: encontrado complemento de entrada : %s\n"
-#: src/xine-engine/xine.c:891
+#: src/xine-engine/xine.c:905
#, 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:902
+#: src/xine-engine/xine.c:916
#, 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:928
+#: src/xine-engine/xine.c:942
#, 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:964
+#: src/xine-engine/xine.c:979
#, c-format
msgid "xine: join rip input plugin\n"
msgstr "xine: complemento de entrada join rip \n"
-#: src/xine-engine/xine.c:971
+#: src/xine-engine/xine.c:986
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:1002
+#: src/xine-engine/xine.c:1017
#, 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:1031
+#: src/xine-engine/xine.c:1046
msgid "ignoring video\n"
msgstr "ignorando vídeo\n"
-#: src/xine-engine/xine.c:1044
+#: src/xine-engine/xine.c:1059
msgid "ignoring audio\n"
msgstr "ignorando audio\n"
-#: src/xine-engine/xine.c:1057
+#: src/xine-engine/xine.c:1072
msgid "ignoring subpicture\n"
msgstr "ignorando subimagen\n"
-#: src/xine-engine/xine.c:1070
+#: src/xine-engine/xine.c:1085
msgid "input cache plugin disabled\n"
msgstr "caché del complemento de entrada desactivado\n"
-#: src/xine-engine/xine.c:1141
+#: src/xine-engine/xine.c:1158
#, c-format
msgid "subtitle mrl opened '%s'\n"
msgstr "abierto mrl de subtítulos '%s'\n"
-#: src/xine-engine/xine.c:1145
+#: src/xine-engine/xine.c:1162
msgid "xine: error opening subtitle mrl\n"
msgstr "xine: error abriendo mrl de subtítulos\n"
-#: src/xine-engine/xine.c:1177
+#: src/xine-engine/xine.c:1194
#, c-format
msgid "xine: error while parsing MRL\n"
msgstr "xine: error al interpretar MRL\n"
-#: src/xine-engine/xine.c:1184
+#: src/xine-engine/xine.c:1201
#, 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:1204
+#: src/xine-engine/xine.c:1221
#, 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:1220
+#: src/xine-engine/xine.c:1237
#, c-format
msgid "xine: found demuxer plugin: %s\n"
msgstr "xine: encontrado complemento demultiplexor: %s\n"
-#: src/xine-engine/xine.c:1242
-#, fuzzy, c-format
+#: src/xine-engine/xine.c:1259
+#, 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:1244
+#: src/xine-engine/xine.c:1261
#, c-format
msgid "xine: demuxer failed to start\n"
msgstr "xine: fallo al iniciar el demultiplexor\n"
-#: src/xine-engine/xine.c:1310
+#: src/xine-engine/xine.c:1327
#, c-format
msgid "xine_play: no demux available\n"
msgstr "xine_play: no hay disponible un demultiplexor\n"
-#: src/xine-engine/xine.c:1380
+#: src/xine-engine/xine.c:1397
#, c-format
msgid "xine_play: demux failed to start\n"
msgstr "xine_play: fallo al iniciar el demultiplexor\n"
-#: src/xine-engine/xine.c:1657
+#: src/xine-engine/xine.c:1674
#, 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:1662
+#: src/xine-engine/xine.c:1679
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:1690
+#: src/xine-engine/xine.c:1707
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:1699
+#: src/xine-engine/xine.c:1716
msgid "media format detection strategy"
msgstr "estrategia de detecciónde formato"
-#: src/xine-engine/xine.c:1700
+#: src/xine-engine/xine.c:1717
msgid ""
"xine offers various methods to detect the media format of input to play. The "
"individual values are:\n"
@@ -6086,11 +6085,11 @@ msgstr ""
"extension\n"
"Detectar sólo por la extensión del nombre del fichero.\n"
-#: src/xine-engine/xine.c:1718
+#: src/xine-engine/xine.c:1735
msgid "directory for saving streams"
msgstr "directorio para guardar flujos de bits"
-#: src/xine-engine/xine.c:1719
+#: src/xine-engine/xine.c:1736
msgid ""
"When using the stream save feature, files will be written only into this "
"directory.\n"
@@ -6106,11 +6105,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:1730
+#: src/xine-engine/xine.c:1747
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:1731
+#: src/xine-engine/xine.c:1748
msgid ""
"If enabled, you allow xine to change your configuration without explicit "
"actions from your side. For example configuration changes demanded by MRLs "
@@ -6127,11 +6126,11 @@ msgstr ""
"arbitrariamente cambiar su configuración, usted podría acabar con un xine "
"totalmente enredado."
-#: src/xine-engine/xine.c:1745
+#: src/xine-engine/xine.c:1762
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:1746
+#: src/xine-engine/xine.c:1763
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 "
@@ -6142,15 +6141,15 @@ 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:2098
+#: src/xine-engine/xine.c:2115
msgid "messages"
msgstr "mensajes"
-#: src/xine-engine/xine.c:2099
+#: src/xine-engine/xine.c:2116
msgid "plugin"
msgstr "complemento"
-#: src/xine-engine/xine.c:2100
+#: src/xine-engine/xine.c:2117
msgid "trace"
msgstr "traza"
@@ -6206,11 +6205,11 @@ msgstr "Error de permisos"
msgid "File is empty:"
msgstr "El fichero está vacío:"
-#: src/xine-utils/memcpy.c:479
+#: src/xine-utils/memcpy.c:478
msgid "memcopy method used by xine"
msgstr "método \"memcopy\" usado por xine"
-#: src/xine-utils/memcpy.c:480
+#: src/xine-utils/memcpy.c:479
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 "
@@ -6221,252 +6220,6 @@ msgstr ""
"ajustados para hacer este copiado. Usualmente, el método mejor se detecta "
"automáticamente."
-#: src/xine-utils/memcpy.c:507
+#: src/xine-utils/memcpy.c:506
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"
-
-#~ msgid "xine audio output plugin using kde artsd"
-#~ msgstr "complemento de xine de salida de audio usando artsd de kde"
-
-#~ msgid "dvbsub: cannot create timer thread\n"
-#~ msgstr "dvbsub: no puedo crear hilo temporizador\n"
-
-#~ 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"
-
-#~ msgid "video_out_xcbxv: Xv extension not present.\n"
-#~ msgstr "video_out_xcbxv: la extensión Xv no está presente.\n"
-
-#~ msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n"
-#~ msgstr "video_out_xcbxv: éste adaptador soporta el formato yv12.\n"
-
-#~ msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n"
-#~ msgstr "video_out_xcbxv: éste adaptador soporta el formato yuy2.\n"
-
-#~ msgid "deinterlace method (deprecated)"
-#~ msgstr "método de desentrelazado (obsolescente)"
-
-#~ msgid ""
-#~ "This config setting is deprecated. You should use the new deinterlacing "
-#~ "post processing settings instead.\n"
-#~ "\n"
-#~ "From the old days of analog television, where the even and odd numbered "
-#~ "lines of a video frame would be displayed at different times comes the "
-#~ "idea to increase motion smoothness by also recording the lines at "
-#~ "different times. This is called \"interlacing\". But unfortunately, "
-#~ "todays displays show the even and odd numbered lines as one complete "
-#~ "frame all at the same time (called \"progressive display\"), which "
-#~ "results in ugly frame errors known as comb artifacts. Software "
-#~ "deinterlacing is an approach to reduce these artifacts. The individual "
-#~ "values are:\n"
-#~ "\n"
-#~ "none\n"
-#~ "Disables software deinterlacing.\n"
-#~ "\n"
-#~ "bob\n"
-#~ "Interpolates between the lines for moving parts of the image.\n"
-#~ "\n"
-#~ "weave\n"
-#~ "Similar to bob, but with a tendency to preserve the full resolution, "
-#~ "better for high detail in low movement scenes.\n"
-#~ "\n"
-#~ "greedy\n"
-#~ "Very good adaptive deinterlacer, but needs a lot of CPU power.\n"
-#~ "\n"
-#~ "onefield\n"
-#~ "Always interpolates and reduces vertical resolution.\n"
-#~ "\n"
-#~ "onefieldxv\n"
-#~ "Same as onefield, but does the interpolation in hardware.\n"
-#~ "\n"
-#~ "linearblend\n"
-#~ "Applies a slight vertical blur to remove the comb artifacts. Good results "
-#~ "with medium CPU usage."
-#~ msgstr ""
-#~ "Este ajuste de configuración es obsolescente. Debería usar los ajustes "
-#~ "del postprocesado de desentrelazado nuevo en su lugar.\n"
-#~ "\n"
-#~ "De los antiguos dias de la televisión analógica, donde las lineas pares e "
-#~ "impares de los cuadros de vídeo se visualizan en tiempos distintos viene "
-#~ "la idea de mejorar el suavizado del movimiento grabando también las "
-#~ "lineas en tiempos distintos. Esto se llama \"entrelazado\". Pero "
-#~ "desafortunadamente, las pantallas cotidianas muestran las lineas pares e "
-#~ "impares como un cuadro completo, todas de golpe (se llama \"progressive "
-#~ "display\", visualización progresiva), lo que resulta en feos errores de "
-#~ "cuadro conocidos como artifactos de peine. Desentrelazado en software es "
-#~ "un which results in ugly frame errors known as comb artifacts. Software "
-#~ "deinterlacing is an enfoque para reducir estos artifactos. Los valores "
-#~ "individuales son:\n"
-#~ "\n"
-#~ "none (nada)\n"
-#~ "Desactiva el desentrelazado en software.\n"
-#~ "\n"
-#~ "bob\n"
-#~ "Interpola entre las lineas para las partes en movimiento de la imagen.\n"
-#~ "\n"
-#~ "weave (tejido)\n"
-#~ "Similar a bob, pero con tendencia a preservar la resolución completa, "
-#~ "mejor para mayor detalle de las escenas con poco movimiento.\n"
-#~ "\n"
-#~ "greedy (codicioso)\n"
-#~ "Desentrelazador adaptativo muy bueno, pero necesita un montón de potencia "
-#~ "de CPU.\n"
-#~ "\n"
-#~ "onefield (un campo)\n"
-#~ "Siempre interpoa y reduce la resolución vertical.\n"
-#~ "\n"
-#~ "onefieldxv\n"
-#~ "Igual que onefield, pero hace la interpolación en hardware.\n"
-#~ "\n"
-#~ "linearblend (mezcla lineal)\n"
-#~ "Aplica un ligero borrón vertical para eliminar los artifactos de peine. "
-#~ "Buenos resultados con uso de CPU mediano."
-
-#~ msgid ""
-#~ "video_out_xshm: shared memory error when allocating image\n"
-#~ "video_out_xshm: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xshm: error de memoria compartida al ubizar imagen\n"
-#~ "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ msgid ""
-#~ "video_out_xshm: %s: allocating image\n"
-#~ "video_out_xshm: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xshm: %s: ubicando imagen\n"
-#~ "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ 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: error de memoria compartida (error de dirección) al "
-#~ "ubicar imagen\n"
-#~ "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ msgid ""
-#~ "video_out_xshm: x11 error during shared memory XImage creation\n"
-#~ "video_out_xshm: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xshm: x11 error durante creación de XImage en memoria "
-#~ "compartida\n"
-#~ "video_out_xshm: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ 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"
-
-#~ 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"
-
-#~ msgid ""
-#~ "video_out_xv: XvShmCreateImage failed\n"
-#~ "video_out_xv: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xv: falló XvShmCreateImage\n"
-#~ "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ msgid ""
-#~ "video_out_xv: XvShmCreateImage returned a zero size\n"
-#~ "video_out_xv: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xv: XvShmCreateImage retornó un tamaño cero\n"
-#~ "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ msgid ""
-#~ "video_out_xv: x11 error during shared memory XImage creation\n"
-#~ "video_out_xv: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xv: x11 error durante creación de XImage en memoria compartida\n"
-#~ "video_out_xv: => no usando la extensión de memoria compartida MIT (MIT "
-#~ "Shared Memory).\n"
-
-#~ 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: la extensión Xv está presente pero no pude encontrar un "
-#~ "puerto yuv12 usable.\n"
-#~ " ¡¿Parece que su driver de hardware gráfico no soporta Xv?!\n"
-
-#~ msgid "video_out_xv: this adaptor supports the yv12 format.\n"
-#~ msgstr "video_out_xv: éste adaptador soporta el formato yv12.\n"
-
-#~ msgid "video_out_xv: this adaptor supports the yuy2 format.\n"
-#~ msgstr "video_out_xv: éste adaptador soporta el formato yuy2.\n"
-
-#~ msgid ""
-#~ "video_out_xxmc: XvShmCreateImage failed\n"
-#~ "video_out_xxmc: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xxmc: falló XvShmCreateImage \n"
-#~ "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory"
-#~ "\" (memoria compartida MIT).\n"
-
-#~ msgid ""
-#~ "video_out_xxmc: XvShmCreateImage returned a zero size\n"
-#~ "video_out_xxmc: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xxmc: XvShmCreateImage retornó un tamaño cero\n"
-#~ "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory"
-#~ "\" (memoria compartida MIT).\n"
-
-#~ msgid ""
-#~ "video_out_xxmc: shared memory error in shmget: %s\n"
-#~ "video_out_xxmc: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xxmc: error de memoria compartida en \"shmget\": %s\n"
-#~ "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory"
-#~ "\" (memoria compartida MIT).\n"
-
-#~ msgid ""
-#~ "video_out_xxmc: x11 error during shared memory XImage creation\n"
-#~ "video_out_xxmc: => not using MIT Shared Memory extension.\n"
-#~ msgstr ""
-#~ "video_out_xxmc: x11 error durante la creación de \"XImage\" en memoria "
-#~ "compartida\n"
-#~ "video_out_xxmc: => no se usará la extensión \"MIT Shared Memory"
-#~ "\" (memoria compartida MIT).\n"
-
-#~ msgid "video_out_xxmc: Xv extension not present.\n"
-#~ msgstr "video_out_xxmc: extensión Xv no presente.\n"
-
-#~ 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: la extensión Xv está presente pero no pude encontrar un "
-#~ "puerto yuv12 usable.\n"
-#~ " ¿Parece como que su driver de hardware gráfico no soporta "
-#~ "Xv?!\n"
-
-#~ msgid ""
-#~ "video_out_xxmc: using Xv port %ld from adaptor %s for hardware colorspace "
-#~ "conversion and scaling.\n"
-#~ 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"
-
-#~ msgid "video_out_xxmc: this adaptor supports the yv12 format.\n"
-#~ msgstr "video_out_xxmc: éste adaptador soporta el formato yv12.\n"
-
-#~ msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n"
-#~ msgstr "video_out_xxmc: éste adaptador soporta el formato yuy2.\n"
diff --git a/po/eu.po b/po/eu.po
index 3f3aaf6b1..f786ff022 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+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"
@@ -1532,12 +1532,12 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr "%s: Ezin da %s-ra konektatu: %d\n"
-#: src/input/input_cdda.c:1633
-#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+#: src/input/input_cdda.c:1631
+#, fuzzy, 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:1638
+#: src/input/input_cdda.c:1636
#, 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"
@@ -2783,8 +2783,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/fr.po b/po/fr.po
index 8cacbe9b8..2c50962f5 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,57 +1,60 @@
-# Frensh xine-lib.po file.
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# Daniel Caujolle-Bert <segfault@club-internet.fr>, 2001
-#
+# translation of fr.po to français
+# Daniel Caujolle-Bert <segfault@club-internet.fr>, 2001.
+# Christophe Giraud <chris256gnu@gmail.com>, 2007, 2008.
+# French xine-lib.po file.
+# Copyright (C) 2002, 2007, 2008 Free Software Foundation, Inc.
msgid ""
msgstr ""
-"Project-Id-Version: xine-lib 0.9.13\n"
+"Project-Id-Version: xine-lib 1.1.9\n"
"Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2007-12-30 15:46+0000\n"
-"PO-Revision-Date: 2002-06-07 15:08 +0200\n"
-"Last-Translator: Daniel Caujolle-Bert <segfault@club-internet.fr>\n"
-"Language-Team: French <fr@li.org>\n"
+"POT-Creation-Date: 2008-01-06 21:08+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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: KBabel 1.11.4\n"
#: lib/hstrerror.c:17
msgid "No error"
-msgstr ""
+msgstr "Aucune erreur"
#: lib/hstrerror.c:18
msgid "Unknown host"
-msgstr ""
+msgstr "Hôte inconnu"
#: lib/hstrerror.c:19
msgid "No address associated with name"
-msgstr ""
+msgstr "Aucune adresse associée à ce nom"
#: lib/hstrerror.c:20
msgid "Unknown server error"
-msgstr ""
+msgstr "Erreur du serveur inconnue"
#: lib/hstrerror.c:21
msgid "Host name lookup failure"
-msgstr ""
+msgstr "La recherche du nom d'hôte a échouée"
#: lib/hstrerror.c:22
msgid "Unknown error"
-msgstr ""
+msgstr "Erreur inconnue"
#: src/audio_out/audio_alsa_out.c:350
#, c-format
msgid "audio_alsa_out:Already open...WHY!"
-msgstr ""
+msgstr "audio_alsa_out: Déjà ouvert...POURQUOI!"
#: src/audio_out/audio_alsa_out.c:378
#, c-format
msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n"
-msgstr ""
+msgstr "audio_alsa_out: snd_pcm_open() de %s a echoué: %s\n"
#: src/audio_out/audio_alsa_out.c:380
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"
#: src/audio_out/audio_alsa_out.c:393
#, c-format
@@ -59,10 +62,12 @@ msgid ""
"audio_alsa_out: broken configuration for this PCM: no configurations "
"available: %s\n"
msgstr ""
+"audio_alsa_out: Mauvaise configuration pour ce PCM: aucune configuration "
+"disponible: %s\n"
#: src/audio_out/audio_alsa_out.c:1295
msgid "notify changes to the hardware mixer"
-msgstr ""
+msgstr "Notifie les changements au mixeur matériel"
#: src/audio_out/audio_alsa_out.c:1296
msgid ""
@@ -70,15 +75,18 @@ 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 ."
#: src/audio_out/audio_alsa_out.c:1361
#, c-format
msgid "snd_lib_error_set_handler() failed: %d"
-msgstr ""
+msgstr "snd_lib_error_set_handler() a échoué: %d"
#: src/audio_out/audio_alsa_out.c:1368
msgid "sound card can do mmap"
-msgstr ""
+msgstr "La carte son peut utiliser mmap"
#: src/audio_out/audio_alsa_out.c:1369
msgid ""
@@ -86,6 +94,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 ."
#: src/audio_out/audio_alsa_out.c:1378
msgid "device used for mono output"
@@ -96,6 +108,9 @@ msgid ""
"xine will use this alsa device to output mono sound.\n"
"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."
#: src/audio_out/audio_alsa_out.c:1387
msgid "device used for stereo output"
@@ -106,6 +121,9 @@ msgid ""
"xine will use this alsa device to output stereo sound.\n"
"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"
#: src/audio_out/audio_alsa_out.c:1396
msgid "device used for 4-channel output"
@@ -116,6 +134,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."
#: src/audio_out/audio_alsa_out.c:1406 src/audio_out/audio_alsa_out.c:1416
msgid "device used for 5.1-channel output"
@@ -127,6 +149,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."
#: src/audio_out/audio_alsa_out.c:1417
msgid ""
@@ -134,20 +160,24 @@ 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."
#: src/audio_out/audio_alsa_out.c:1437
-#, fuzzy, c-format
+#, c-format
msgid "snd_pcm_open() failed:%d:%s\n"
-msgstr "input_cda: open(%s) a échoué: %s.\n"
+msgstr "snd_pcm_open() a échoué:%d:%s\n"
#: src/audio_out/audio_alsa_out.c:1439
#, c-format
msgid ">>> Check if another program already uses PCM <<<\n"
-msgstr ""
+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
msgid "speaker arrangement"
-msgstr ""
+msgstr "Arrangement des haut-parleurs"
#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927
msgid ""
@@ -180,70 +210,100 @@ 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"
+"\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"
+"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"
+"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"
+"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"
+"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. "
#: src/audio_out/audio_alsa_out.c:1500
msgid "audio_alsa_out : supported modes are "
-msgstr ""
+msgstr "audio_alsa_out : les modes supportés sont "
#: src/audio_out/audio_alsa_out.c:1503
msgid "8bit "
-msgstr ""
+msgstr "8bit "
#: src/audio_out/audio_alsa_out.c:1508
msgid "16bit "
-msgstr ""
+msgstr "16bit "
#: src/audio_out/audio_alsa_out.c:1512
msgid "24bit "
-msgstr ""
+msgstr "24bit "
#: src/audio_out/audio_alsa_out.c:1516
msgid "32bit "
-msgstr ""
+msgstr "32bit "
#: src/audio_out/audio_alsa_out.c:1527
msgid "mono "
-msgstr ""
+msgstr "mono "
#: src/audio_out/audio_alsa_out.c:1531
msgid "stereo "
-msgstr ""
+msgstr "stéréo "
#: src/audio_out/audio_alsa_out.c:1536
-#, fuzzy
msgid "4-channel "
-msgstr "canal"
+msgstr "4-canaux"
#: src/audio_out/audio_alsa_out.c:1539
msgid "(4-channel not enabled in xine config) "
-msgstr ""
+msgstr "(sortie 4 canaux non activée dans la configuration de xine)"
#: src/audio_out/audio_alsa_out.c:1544
-#, fuzzy
msgid "4.1-channel "
-msgstr "canal"
+msgstr "sortie 4.1 canaux"
#: src/audio_out/audio_alsa_out.c:1547
msgid "(4.1-channel not enabled in xine config) "
-msgstr ""
+msgstr "(sortie 4.1 canaux non activée dans la configuration de xine)"
#: src/audio_out/audio_alsa_out.c:1552
-#, fuzzy
msgid "5-channel "
-msgstr "canal"
+msgstr "Sortie 5 canaux"
#: src/audio_out/audio_alsa_out.c:1555
msgid "(5-channel not enabled in xine config) "
-msgstr ""
+msgstr "(Sortie 5 canaux non activée dans la configuration de xine)"
#: src/audio_out/audio_alsa_out.c:1560
-#, fuzzy
msgid "5.1-channel "
-msgstr "canal"
+msgstr "Sortie 5.1 canaux"
#: src/audio_out/audio_alsa_out.c:1563
msgid "(5.1-channel not enabled in xine config) "
-msgstr ""
+msgstr "(Sortie 5.1 canaux non activée dans la configuration de xine)"
#: src/audio_out/audio_alsa_out.c:1586
msgid "a/52 and DTS pass-through\n"
@@ -251,7 +311,7 @@ msgstr ""
#: src/audio_out/audio_alsa_out.c:1589
msgid "(a/52 and DTS pass-through not enabled in xine config)\n"
-msgstr ""
+msgstr "(a/52 et DTS pass-through non activés dans la configuration de xine)\n"
#: src/audio_out/audio_alsa_out.c:1596
msgid "alsa mixer device"
@@ -262,105 +322,108 @@ 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."
#: src/audio_out/audio_alsa_out.c:1675
msgid "xine audio output plugin using alsa-compliant audio devices/drivers"
msgstr ""
-"plugin de sortie audio de xine utilisant les pilotes/périphériques alsa"
+"plugin de sortie audio xine utilisant les pilotes/périphériques compatible "
+"alsa "
#: src/audio_out/audio_coreaudio_out.c:575
-#, fuzzy
msgid "xine output plugin for Coreaudio/Mac OS X"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine pour Coreaudio/Mac OS X"
#: src/audio_out/audio_directx2_out.c:161
msgid "Error"
-msgstr ""
+msgstr "Erreur"
#: src/audio_out/audio_directx2_out.c:168
msgid "success"
-msgstr ""
+msgstr "succès"
#: src/audio_out/audio_directx2_out.c:170
msgid "access denied"
-msgstr ""
+msgstr "accès interdit"
#: src/audio_out/audio_directx2_out.c:172
msgid "resource is already in use"
-msgstr ""
+msgstr "la ressource est déjà en cours d'utilisation"
#: src/audio_out/audio_directx2_out.c:173
msgid "object was already initialized"
-msgstr ""
+msgstr "L'objet était déjà initialisé"
#: src/audio_out/audio_directx2_out.c:174
msgid "specified wave format is not supported"
-msgstr ""
+msgstr "Le format wave spécifié n'est pas supporté"
#: src/audio_out/audio_directx2_out.c:175
msgid "memory buffer has been lost and must be restored"
-msgstr ""
+msgstr "le tampon mémoire a été perdu et doit être restauré"
#: src/audio_out/audio_directx2_out.c:176
msgid "requested buffer control is not available"
-msgstr ""
+msgstr "Le contrôle du buffer requis n'est pas disponible"
#: src/audio_out/audio_directx2_out.c:177
msgid "undetermined error inside DirectSound subsystem"
-msgstr ""
+msgstr "Erreur interne indéterminée du sous-système DirectSound"
#: src/audio_out/audio_directx2_out.c:179
msgid "DirectSound hardware device is unavailable"
-msgstr ""
+msgstr "Le périphérique matériel DirectSound est indisponible"
#: src/audio_out/audio_directx2_out.c:181
msgid "function is not valid for the current state of the object"
-msgstr ""
+msgstr "La fonction n'est pas valide pour l'état actuel de l'objet"
#: src/audio_out/audio_directx2_out.c:182
msgid "invalid parameter was passed"
-msgstr ""
+msgstr "Un paramètre invalide a été passé"
#: src/audio_out/audio_directx2_out.c:183
msgid "object doesn't support aggregation"
-msgstr ""
+msgstr "L'objet ne supporte pas l'agrégation"
#: src/audio_out/audio_directx2_out.c:184
msgid "no sound driver available for use"
-msgstr ""
+msgstr "pas de pilote son disponible"
#: src/audio_out/audio_directx2_out.c:185
msgid "requested COM interface not available"
-msgstr ""
+msgstr "L'interface COM requise n'est pas disponible"
#: src/audio_out/audio_directx2_out.c:186
msgid "another application has a higher priority level"
-msgstr ""
+msgstr "une autre application a un niveau de priorité plus élevé"
#: src/audio_out/audio_directx2_out.c:187
msgid "insufficient memory"
-msgstr ""
+msgstr "mémoire insuffisante"
#: src/audio_out/audio_directx2_out.c:188
msgid "low priority level for this function"
-msgstr ""
+msgstr "Niveau de priorité bas pour cette fonction"
#: src/audio_out/audio_directx2_out.c:189
msgid "DirectSound wasn't initialized"
-msgstr ""
+msgstr "DirectSound n'était pas initialisé"
#: src/audio_out/audio_directx2_out.c:190
msgid "function is not supported"
-msgstr ""
+msgstr "cette fonction n'est pas supportée"
#: src/audio_out/audio_directx2_out.c:191
msgid "unknown error"
-msgstr ""
+msgstr "erreur inconnue"
#: src/audio_out/audio_directx2_out.c:201
#, c-format
msgid "Unable to create direct sound object."
-msgstr ""
+msgstr "Impossible de créer l'objet direct sound."
#: src/audio_out/audio_directx2_out.c:207
#, c-format
@@ -369,7 +432,7 @@ msgstr ""
#: src/audio_out/audio_directx2_out.c:281
msgid "Unable to create secondary direct sound buffer"
-msgstr ""
+msgstr "Impossible de créer un second tampon pour direct sound "
#: src/audio_out/audio_directx2_out.c:305
#, c-format
@@ -378,7 +441,7 @@ msgstr ""
#: src/audio_out/audio_directx2_out.c:313
msgid "Unable to get notification interface"
-msgstr ""
+msgstr "Impossible d'obtenir une notification de l'interface"
#: src/audio_out/audio_directx2_out.c:318
msgid "Unable to set notification positions"
@@ -386,41 +449,41 @@ msgstr ""
#: src/audio_out/audio_directx2_out.c:338
msgid "Couldn't play sound buffer"
-msgstr ""
+msgstr "Ne peut pas utiliser le buffer audio"
#: src/audio_out/audio_directx2_out.c:350
msgid "Couldn't stop sound buffer"
-msgstr ""
+msgstr "Ne peut pas stopper le buffer audio"
#: src/audio_out/audio_directx2_out.c:363
msgid "Can't get buffer position"
-msgstr ""
+msgstr "Ne peut pas obtenir la position du buffer"
#: src/audio_out/audio_directx2_out.c:377
msgid "Can't set buffer position"
-msgstr ""
+msgstr "Ne peut pas ajuster la position du buffer"
#: src/audio_out/audio_directx2_out.c:409
msgid "Can't set sound volume"
-msgstr ""
+msgstr "Impossible de régler le volume sonore"
#: src/audio_out/audio_directx2_out.c:427
#, c-format
msgid ": buffer lost, tryig to restore\n"
-msgstr ""
+msgstr ": buffer perdu, tentative de restauration\n"
#: src/audio_out/audio_directx2_out.c:431
msgid "Couldn't lock direct sound buffer"
-msgstr ""
+msgstr "Impossible de verrouiller le buffer de direct sound"
#: src/audio_out/audio_directx2_out.c:442
msgid "Couldn't unlock direct sound buffer"
-msgstr ""
+msgstr "Impossible de déverrouiller le buffer de direct sound"
#: src/audio_out/audio_directx2_out.c:539
-#, fuzzy, c-format
+#, c-format
msgid "Unable to create primary direct sound buffer."
-msgstr "incapable d'allouer le buffer d'entrée.\n"
+msgstr "incapable d'allouer le buffer d'entré."
#: src/audio_out/audio_directx2_out.c:632
#, c-format
@@ -430,66 +493,64 @@ msgstr ""
#: src/audio_out/audio_directx2_out.c:650
#, c-format
msgid ": delayed by %ld msec\n"
-msgstr ""
+msgstr ": retardé de %ld msec\n"
#: src/audio_out/audio_directx2_out.c:754
-#, fuzzy, c-format
+#, c-format
msgid ": can't create pthread condition: %s\n"
-msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n"
+msgstr ": ne peux pas créer la condition pthread: %s\n"
#: src/audio_out/audio_directx2_out.c:758
-#, fuzzy, c-format
+#, c-format
msgid ": can't create pthread mutex: %s\n"
-msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n"
+msgstr ": ne peut pas créer pthread mutex: %s\n"
#: src/audio_out/audio_directx2_out.c:765
-#, fuzzy, c-format
+#, c-format
msgid ": can't create buffer pthread: %s\n"
-msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n"
+msgstr ": ne peut pas créer le pthread du buffer: %s\n"
#: src/audio_out/audio_directx2_out.c:872
-#, fuzzy, c-format
+#, c-format
msgid ": can't destroy buffer pthread: %s\n"
-msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n"
+msgstr ": ne peut pas détruire le pthread du buffer: %s\n"
#: src/audio_out/audio_directx2_out.c:879
#, c-format
msgid ": can't destroy pthread condition: %s\n"
-msgstr ""
+msgstr ":ne peut pas détruire la condition pthread: %s\n"
#: src/audio_out/audio_directx2_out.c:882
#, c-format
msgid ": can't destroy pthread mutex: %s\n"
-msgstr ""
+msgstr ": ne peut pas détruire pthread mutex: %s\n"
#: src/audio_out/audio_directx2_out.c:942
#, c-format
msgid ": unknown control command %d\n"
-msgstr ""
+msgstr ": commande inconnu %d\n"
#: src/audio_out/audio_directx2_out.c:1002
-#, fuzzy
msgid "second xine audio output plugin using directx"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "second plugin de sortie audio xine utilisant directx"
#: src/audio_out/audio_directx_out.c:836
-#, fuzzy
msgid "xine audio output plugin for win32 using directx"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine pour win32 utilisant directx"
#: src/audio_out/audio_esd_out.c:165
#, c-format
msgid "audio_esd_out: connecting to ESD server %s: %s\n"
-msgstr ""
+msgstr "audio_esd_out: connexion au serveur ESD en cours %s: %s\n"
#: src/audio_out/audio_esd_out.c:497
msgid "audio_esd_out: connecting to esd server...\n"
-msgstr ""
+msgstr "audio_esd_out: connexion au serveur esd en cours...\n"
#: src/audio_out/audio_esd_out.c:509
#, c-format
msgid "audio_esd_out: can't connect to %s ESD server: %s\n"
-msgstr ""
+msgstr "audio_esd_out: ne peut pas se connecter au %s serveur ESD: %s\n"
#: src/audio_out/audio_esd_out.c:539
msgid "esd audio output latency (adjust a/v sync)"
@@ -501,21 +562,21 @@ msgid ""
"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"
+"L'unité de valeur est un PTS tick, ce qui représente 1/90000 de seconde."
#: src/audio_out/audio_esd_out.c:576
-#, fuzzy
msgid "xine audio output plugin using esound"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine utilisant esound"
#: src/audio_out/audio_file_out.c:368
-#, fuzzy
msgid "xine file audio output plugin"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine utilisant un fichier "
#: src/audio_out/audio_irixal_out.c:385
-#, fuzzy
msgid "irixal audio output maximum gap length"
-msgstr "taille maximale du gap pour la sortie audio irixal en 1/90000s"
+msgstr ""
#: src/audio_out/audio_irixal_out.c:386
msgid ""
@@ -527,28 +588,28 @@ msgstr ""
#: src/audio_out/audio_irixal_out.c:415
msgid "xine audio output plugin using IRIX libaudio"
-msgstr "Sortie audio de Xine utilise IRIX libaudio"
+msgstr "plugin de sortie audio xine utilisant IRIX libaudio"
#: src/audio_out/audio_jack_out.c:408
-#, fuzzy
msgid "xine output plugin for JACK Audio Connection Kit"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine pour JACK Audio Connection Kit"
#: src/audio_out/audio_none_out.c:229
-#, fuzzy
msgid "xine dummy audio output plugin"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine utilisant dummy"
#: src/audio_out/audio_oss_out.c:196
#, c-format
msgid "audio_oss_out: Opening audio device %s: %s\n"
-msgstr ""
+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"
#: src/audio_out/audio_oss_out.c:230
#, c-format
@@ -557,7 +618,7 @@ msgstr ""
#: src/audio_out/audio_oss_out.c:743
msgid "OSS audio device name"
-msgstr ""
+msgstr "Nom du périphérique audio OSS"
#: src/audio_out/audio_oss_out.c:744
msgid ""
@@ -565,6 +626,10 @@ msgid ""
"number is appended to get the full device name.\n"
"Select \"auto\" if you want xine to auto detect the corret setting."
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."
#: src/audio_out/audio_oss_out.c:751
msgid "OSS audio device number, -1 for none"
@@ -591,7 +656,7 @@ msgstr ""
#: src/audio_out/audio_oss_out.c:780
#, c-format
msgid "audio_oss_out: using device >%s<\n"
-msgstr ""
+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
#, c-format
@@ -599,11 +664,12 @@ msgid ""
"audio_oss_out: opening audio device %s failed:\n"
"%s\n"
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
-#, fuzzy
msgid "a/v sync method to use by OSS"
-msgstr "méthode A/V sync a utiliser par OSS, dépend du pilote/périphérique"
+msgstr "méthode A/V sync à utiliser par OSS"
#: src/audio_out/audio_oss_out.c:808
msgid ""
@@ -643,9 +709,8 @@ msgid ""
msgstr ""
#: src/audio_out/audio_oss_out.c:863
-#, fuzzy
msgid "OSS audio output latency (adjust a/v sync)"
-msgstr "Temps de latence de la sortie audio esd (ajustement de 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 ""
@@ -675,36 +740,36 @@ msgid ""
msgstr ""
#: src/audio_out/audio_oss_out.c:1075
-#, fuzzy, c-format
+#, c-format
msgid "audio_oss_out: open() mixer %s failed: %s\n"
-msgstr "input_cda: open(%s) a échoué: %s.\n"
+msgstr "audio_oss_out: l'ouverture() du mixeur %s a échouée: %s\n"
#: src/audio_out/audio_oss_out.c:1152
msgid "xine audio output plugin using oss-compliant audio devices/drivers"
-msgstr "plugin de sortie audio de xine utilisant les pilotes/périphériques oss"
+msgstr ""
+"plugin de sortie audio xine utilisant les pilotes/périphériques audio "
+"compatible oss"
#: src/audio_out/audio_pulse_out.c:548
-#, fuzzy
msgid "device used for pulseaudio"
-msgstr "périphérique utilisé pour la sortie 4 canaux"
+msgstr "périphérique utilisé pour pulseaudio"
#: src/audio_out/audio_pulse_out.c:549
msgid "use 'server[:sink]' for setting the pulseaudio sink device."
msgstr ""
#: src/audio_out/audio_pulse_out.c:603
-#, fuzzy
msgid "xine audio output plugin using pulseaudio sound server"
-msgstr "plugin de sortie audio de xine utilisant esd"
+msgstr "plugin de sortie audio xine utilisant le serveur de son pulseaudio"
#: src/audio_out/audio_sun_out.c:455 src/audio_out/audio_sun_out.c:948
#, c-format
msgid "audio_sun_out: opening audio device %s failed: %s\n"
-msgstr ""
+msgstr "audio_sun_out: l'ouverture du périphérique audio %s a échouée : %s\n"
#: src/audio_out/audio_sun_out.c:923
msgid "Sun audio device name"
-msgstr ""
+msgstr "Nom du périphérique audio Sun"
#: src/audio_out/audio_sun_out.c:924
msgid ""
@@ -715,43 +780,50 @@ msgid ""
msgstr ""
#: src/audio_out/audio_sun_out.c:966
-#, fuzzy, c-format
+#, c-format
msgid "audio_sun_out: audio ioctl on device %s failed: %s\n"
-msgstr "input_cda: open(%s) a échoué: %s.\n"
+msgstr "audio_sun_out: audio ioctl sur le périphérique %s a échoué: %s\n"
#: src/audio_out/audio_sun_out.c:1023
msgid "xine audio output plugin using sun-compliant audio devices/drivers"
-msgstr "plugin de sortie audio de xine utilisant les pilotes/périphériques sun"
+msgstr ""
+"plugin de sortie audio xine utilisant les pilotes/périphériques compatible "
+"sun"
#: src/combined/xine_ogg_demuxer.c:813
#, 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"
#: src/combined/xine_ogg_demuxer.c:2080
+#, fuzzy
msgid "Annodex demux plugin"
-msgstr ""
+msgstr "plugin de sortie audio de xine utilisant esd"
#: src/combined/xine_ogg_demuxer.c:2098
+#, fuzzy
msgid "OGG demux plugin"
-msgstr ""
+msgstr "plugin de sortie audio de xine utilisant esd"
#: src/demuxers/demux_asf.c:426
#, c-format
msgid "demux_asf: warning: The stream id=%d is encrypted.\n"
-msgstr ""
+msgstr "demux_asf: attention: Le flux id=%d est crypté.\n"
#: src/demuxers/demux_asf.c:428
msgid "Media stream scrambled/encrypted"
-msgstr ""
+msgstr "Flux média brouillé/crypté"
#: src/demuxers/demux_asf.c:2091
+#, fuzzy
msgid "ASF demux plugin"
-msgstr ""
+msgstr "plugin de sortie audio de xine utilisant esd"
#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642
msgid "Restoring index..."
-msgstr ""
+msgstr "Restauration de l'index..."
#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683
#, c-format
@@ -792,23 +864,23 @@ msgid "unsupported FLV version (%d).\n"
msgstr ""
#: src/demuxers/demux_flv.c:185
-#, fuzzy
msgid "neither video nor audio stream in this file.\n"
-msgstr "metronom: fin de flux audio ignoré\n"
+msgstr "aucun flux audio ou vidéo n'est présent dans ce fichier.\n"
#: src/demuxers/demux_flv.c:879
+#, fuzzy
msgid "Flash Video file demux plugin"
-msgstr ""
+msgstr "plugin de sortie audio de xine utilisant esd"
#: src/demuxers/demux_iff.c:233
#, c-format
msgid "iff-8svx/16sv: unknown compression: %d\n"
-msgstr ""
+msgstr "iff-8svx/16sv: compression inconnue: %d\n"
#: src/demuxers/demux_iff.c:367
#, c-format
msgid "iff-ilbm: unknown compression: %d\n"
-msgstr ""
+msgstr "iff-ilbm: compression inconnue: %d\n"
#: src/demuxers/demux_iff.c:568
#, c-format
@@ -845,13 +917,13 @@ msgid "demux_mpeg_block: warning: PES header reserved 10 bits not found\n"
msgstr ""
#: src/demuxers/demux_mpeg_block.c:647
-#, fuzzy, c-format
+#, c-format
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 sera 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_block.c:1493
msgid "DVD/VOB demux plugin"
@@ -863,6 +935,8 @@ 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"
#: src/demuxers/demux_mpeg_pes.c:424
#, c-format
@@ -875,13 +949,13 @@ msgid "demux_mpeg_pes: warning: PES header reserved 10 bits not found\n"
msgstr ""
#: src/demuxers/demux_mpeg_pes.c:816
-#, fuzzy, c-format
+#, 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 sera 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
#, c-format
@@ -889,10 +963,13 @@ 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"
#: src/demuxers/demux_mpeg_pes.c:1754
+#, fuzzy
msgid "mpeg pes demux plugin"
-msgstr ""
+msgstr "plugin de sortie audio de xine utilisant esd"
#: src/demuxers/demux_snd.c:102
#, c-format
@@ -900,13 +977,14 @@ msgid "demux_snd: bad header parameters\n"
msgstr ""
#: src/demuxers/demux_snd.c:147
-#, fuzzy, c-format
+#, c-format
msgid "demux_snd: unsupported audio type: %d\n"
-msgstr "demus_avi: type audio inconnu 0x%lx\n"
+msgstr "demux_snd: type audio non supporté: %d\n"
#: src/demuxers/demux_snd.c:358
+#, fuzzy
msgid "SND/AU file demux plugin"
-msgstr ""
+msgstr "plugin de sortie audio de xine utilisant esd"
#: src/demuxers/demux_tta.c:85
msgid "demux_tta: total frames count too high\n"
@@ -1025,9 +1103,10 @@ msgid ""
msgstr ""
#: src/dxr3/dxr3_decode_video.c:507
-#, fuzzy, c-format
+#, c-format
msgid "dxr3_decode_video: Failed to open video device %s (%s)\n"
-msgstr "input_dvd: impossible d'ouvrir le périphérique dvd (%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:575
msgid "dxr3_decode_video: write to device would block. flushing\n"
@@ -1094,7 +1173,7 @@ msgstr ""
#: src/dxr3/dxr3_mpeg_encoders.c:240
#, c-format
msgid "dxr3_mpeg_encoder: cannot start encoding: %s\n"
-msgstr ""
+msgstr "dxr3_mpeg_encoder: ne peut pas démarrer l'encodage: %s\n"
#: src/dxr3/dxr3_mpeg_encoders.c:370
msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n"
@@ -1156,14 +1235,14 @@ msgid ""
msgstr ""
#: src/dxr3/video_out_dxr3.c:269
-#, fuzzy, c-format
+#, c-format
msgid "video_out_dxr3: Failed to open control device %s (%s)\n"
-msgstr "input_dvd: impossible d'ouvrir le périphérique dvd (%s): %s\n"
+msgstr ""
#: src/dxr3/video_out_dxr3.c:277
-#, fuzzy, c-format
+#, c-format
msgid "video_out_dxr3: Failed to open video device %s (%s)\n"
-msgstr "input_dvd: impossible d'ouvrir le périphérique dvd (%s): %s\n"
+msgstr "video_out_dxr3: L'ouverture du périphérique vidéo a échouée %s (%s)\n"
#: src/dxr3/video_out_dxr3.c:323
msgid "encoder for non mpeg content"
@@ -1316,37 +1395,38 @@ msgstr ""
msgid "video_out_dxr3: ERROR Reading overlay init file. Run autocal!\n"
msgstr ""
-#: src/input/input_cdda.c:1586
-#, fuzzy, c-format
+#: src/input/input_cdda.c:1584
+#, c-format
msgid "%s: can't connect to %s:%d\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "%s: ne peut pas se connecter à %s:%d\n"
-#: src/input/input_cdda.c:1633
-#, fuzzy, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
-msgstr "input_cda: serveur '%s:%d' connecté avec succés.\n"
+#: src/input/input_cdda.c:1631
+#, 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:1638
-#, fuzzy, c-format
+#: src/input/input_cdda.c:1636
+#, c-format
msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "input_cdda: impossible de se connecter au serveur cddb '%s:%d' (%s).\n"
-#: src/input/input_cdda.c:2687
+#: src/input/input_cdda.c:2685
msgid "CD Digital Audio (aka. CDDA)"
msgstr ""
-#: src/input/input_cdda.c:2700
-#, fuzzy
+#: src/input/input_cdda.c:2698
msgid "device used for CD audio"
-msgstr "périphérique utilisé pour la sortie 4 canaux"
+msgstr "périphérique utilisé pour les cd audio"
-#: src/input/input_cdda.c:2701
+#: src/input/input_cdda.c:2699
msgid ""
"The path to the device, usually a CD or DVD drive, which you intend to use "
"for playing audio CDs."
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:2707
+#: src/input/input_cdda.c:2705
msgid "query CDDB"
msgstr ""
@@ -1359,11 +1439,11 @@ msgid ""
"listening habits."
msgstr ""
-#: src/input/input_cdda.c:2715
+#: src/input/input_cdda.c:2713
msgid "CDDB server name"
-msgstr ""
+msgstr "Nom du serveur CDDB"
-#: src/input/input_cdda.c:2715
+#: src/input/input_cdda.c:2713
msgid ""
"The CDDB server used to retrieve the title and track information from.\n"
"This setting is security critical, because the sever will receive "
@@ -1371,11 +1451,11 @@ msgid ""
"malicious replies. Be sure to enter a server you can trust."
msgstr ""
-#: src/input/input_cdda.c:2723
+#: src/input/input_cdda.c:2721
msgid "CDDB server port"
-msgstr ""
+msgstr "Port du serveur CDDB "
-#: src/input/input_cdda.c:2723
+#: src/input/input_cdda.c:2721
msgid "The server port used to retrieve the title and track information from."
msgstr ""
@@ -1393,17 +1473,16 @@ msgid ""
msgstr ""
#: src/input/input_dvb.c:883
-#, fuzzy, c-format
+#, c-format
msgid "input_dvb: failed to open dvb channel file '%s': %s\n"
-msgstr "input_file: tente d'ouvrir le fichier de sous-titre '%s'\n"
+msgstr ""
#: src/input/input_dvb.c:889
-#, fuzzy, c-format
+#, c-format
msgid "input_dvb: dvb channel file '%s' is not a plain file\n"
-msgstr "input_file: tente d'ouvrir le fichier de sous-titre '%s'\n"
+msgstr ""
#: src/input/input_dvb.c:2127 src/input/input_dvb.c:2967
-#, fuzzy
msgid "input_dvb: tuner_set_channel failed\n"
msgstr "input_cda: fopen(%s) à échoué: %s\n"
@@ -1413,9 +1492,8 @@ msgid "input_dvb: DVB GUI %s\n"
msgstr ""
#: src/input/input_dvb.c:2767 src/input/input_dvb.c:3183
-#, fuzzy
msgid "input_dvb: cannot open dvb device\n"
-msgstr "input_dvd: ne peux pas ouvrir le périphérique dvd >%s<\n"
+msgstr "input_dvb: ne peux pas ouvrir le périphérique dvb\n"
#: src/input/input_dvb.c:2791
#, c-format
@@ -1423,9 +1501,9 @@ msgid "input_dvb: channel %d out of range, defaulting to 0\n"
msgstr ""
#: src/input/input_dvb.c:2802
-#, fuzzy, c-format
+#, c-format
msgid "input_dvb: searching for channel %s\n"
-msgstr "input_file: tente d'ouvrir le fichier de sous-titre '%s'\n"
+msgstr "input_dvb: recherche pour le canal %s\n"
#: src/input/input_dvb.c:2825
#, c-format
@@ -1433,9 +1511,9 @@ msgid "input_dvb: exact match for %s not found: trying partial matches\n"
msgstr ""
#: src/input/input_dvb.c:2832
-#, fuzzy, c-format
+#, c-format
msgid "input_dvb: found matching channel %s\n"
-msgstr "input_file: tente d'ouvrir le fichier de sous-titre '%s'\n"
+msgstr ""
#: src/input/input_dvb.c:2845
#, c-format
@@ -1477,14 +1555,13 @@ msgid ""
msgstr ""
#: src/input/input_dvb.c:2973
-#, fuzzy, c-format
+#, c-format
msgid "input_dvb: cannot open dvr device '%s'\n"
-msgstr "input_dvd: ne peux pas ouvrir le périphérique dvd >%s<\n"
+msgstr "input_dvb: ne peut pas ouvrir le périhérique dvr '%s'\n"
#: src/input/input_dvb.c:2996
-#, fuzzy
msgid "input_dvb: cannot create EPG updater thread\n"
-msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n"
+msgstr ""
#: src/input/input_dvb.c:3058
msgid "use DVB 'center cutout' (zoom)"
@@ -1555,24 +1632,24 @@ msgid "input_dvd: Error getting next block from DVD (%s)\n"
msgstr ""
#: src/input/input_dvd.c:1498
-#, fuzzy
msgid "input_dvd: Error opening DVD device\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "input_dvd: Erreur à l'ouverture du périphérique DVD\n"
#: src/input/input_dvd.c:1759
msgid "DVD Navigator"
msgstr ""
#: src/input/input_dvd.c:1776
-#, fuzzy
msgid "device used for DVD playback"
-msgstr "périphérique utilisé pour la sortie mono"
+msgstr "périphérique utilisé pour la lecture des DVD"
#: src/input/input_dvd.c:1777
msgid ""
"The path to the device, usually a DVD drive, which you intend to use for "
"playing DVDs."
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:1794
msgid "raw device set up for DVD access"
@@ -1613,7 +1690,7 @@ msgstr ""
#: src/input/input_dvd.c:1831
msgid "default language for DVD playback"
-msgstr ""
+msgstr "langue par défaut pour la lecture des DVD"
#: src/input/input_dvd.c:1832
msgid ""
@@ -1696,19 +1773,19 @@ msgid "input_file: read error (%s)\n"
msgstr "input_file: erreur de lecture (%s)\n"
#: src/input/input_file.c:358
-#, fuzzy, c-format
+#, c-format
msgid "input_file: Permission denied: >%s<\n"
-msgstr "input_cda: fopen(%s) à échoué: %s\n"
+msgstr "input_file: Permission refusée: >%s<\n"
#: src/input/input_file.c:362
-#, fuzzy, c-format
+#, c-format
msgid "input_file: File not found: >%s<\n"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "input_file: Fichier non trouvé: >%s<\n"
#: src/input/input_file.c:402 src/input/input_gnome_vfs.c:279
-#, fuzzy, c-format
+#, c-format
msgid "input_file: File empty: >%s<\n"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "input_file: Fichier vide: >%s<\n"
#: src/input/input_file.c:967
msgid "file input plugin"
@@ -1724,42 +1801,43 @@ msgstr ""
#: src/input/input_file.c:992
msgid "list hidden files"
-msgstr ""
+msgstr "lister les fichiers cachés"
#: src/input/input_file.c:993
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."
#: src/input/input_gnome_vfs.c:367
-#, fuzzy
msgid "gnome-vfs input plugin as shipped with xine"
-msgstr "plugin d'entrée réseau fournis avec xine"
+msgstr "plugin d'entré gnome-vfs fourni avec xine"
#: src/input/input_http.c:173
-#, fuzzy, c-format
+#, c-format
msgid "input_http: gethostbyname(%s) failed: %s\n"
-msgstr "input_cda: fopen(%s) à échoué: %s\n"
+msgstr "input_http: gethostbyname(%s) a echoué: %s\n"
#: src/input/input_http.c:418 src/input/input_http.c:1014
-#, fuzzy, c-format
+#, c-format
msgid "input_http: read error %d\n"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "input_http: erreur de lecture %d\n"
#: src/input/input_http.c:646
msgid "Connecting HTTP server..."
-msgstr ""
+msgstr "Connexion au serveur HTTP..."
#: src/input/input_http.c:840
#, c-format
msgid "input_http: invalid http answer\n"
-msgstr ""
+msgstr "input_http: réponse http invalide\n"
#: src/input/input_http.c:846
-#, fuzzy, c-format
+#, c-format
msgid "input_http: 3xx redirection: >%d %s<\n"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "input_http: 3xx redirection: >%d %s<\n"
#: src/input/input_http.c:851 src/input/input_http.c:856
#: src/input/input_http.c:862 src/input/input_http.c:869
@@ -1773,13 +1851,13 @@ msgid "input_http: content length = %<PRIdMAX> bytes\n"
msgstr ""
#: src/input/input_http.c:965
-#, fuzzy, c-format
+#, c-format
msgid "input_http: buffer exhausted after %d bytes."
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "input_http: buffer épuisé après %d bytes."
#: src/input/input_http.c:1087
msgid "http input plugin"
-msgstr ""
+msgstr "plugin d'entré http"
#: src/input/input_http.c:1124
msgid "HTTP proxy host"
@@ -1787,7 +1865,7 @@ msgstr ""
#: src/input/input_http.c:1124
msgid "The hostname of the HTTP proxy."
-msgstr ""
+msgstr "Le nom d'hôte pour le proxy HTTP."
#: src/input/input_http.c:1128
msgid "HTTP proxy port"
@@ -1842,7 +1920,7 @@ msgstr ""
#: src/input/input_mms.c:478
msgid "MMS protocol"
-msgstr ""
+msgstr "Protocole MMS"
#: src/input/input_mms.c:479
msgid ""
@@ -1863,60 +1941,62 @@ msgstr "input_net: connect(): %s\n"
#: 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: impossible de resoudre '%s'.\n"
+msgstr "input_net: impossible de résoudre '%s'.\n"
#: 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: impossible de se connecter à '%s'.\n"
-#: src/input/input_net.c:517
+#: src/input/input_net.c:523
msgid "net input plugin as shipped with xine"
-msgstr "plugin d'entrée réseau fournis avec xine"
+msgstr "plugin d'entré réseau fournis avec xine"
#: src/input/input_pnm.c:272
msgid "pnm streaming input plugin"
msgstr ""
#: src/input/input_pvr.c:593
-#, fuzzy, c-format
+#, c-format
msgid "input_pvr: error creating pvr file (%s)\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "input_pvr: erreur à la création du fichier pvr (%s)\n"
#: src/input/input_pvr.c:750
-#, fuzzy, c-format
+#, c-format
msgid "input_pvr: error opening pvr file (%s)\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "input_pvr: erreur à l'ouverture du fichier pvr (%s)\n"
#: src/input/input_pvr.c:826
-#, fuzzy, c-format
+#, c-format
msgid "input_pvr: read error (%s)\n"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "input_pvr: erreur de lecture (%s)\n"
-#: src/input/input_pvr.c:1142 src/input/input_pvr.c:1395
-#, fuzzy, c-format
+#: src/input/input_pvr.c:1165 src/input/input_pvr.c:1418
+#, c-format
msgid "input_pvr: error opening device %s\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "input_pvr: erreur à l'ouverture du périphérique %s\n"
-#: src/input/input_pvr.c:1148 src/input/input_pvr.c:1401
+#: src/input/input_pvr.c:1171 src/input/input_pvr.c:1424
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"
-#: src/input/input_pvr.c:1156 src/input/input_pvr.c:1410
+#: src/input/input_pvr.c:1179 src/input/input_pvr.c:1433
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"
-#: src/input/input_pvr.c:1528
+#: src/input/input_pvr.c:1551
msgid "device used for WinTV-PVR 250/350 (pvr plugin)"
-msgstr ""
+msgstr "périphérique utilisé pour WinTV-PVR 250/350 (pvr plugin)"
-#: src/input/input_pvr.c:1529
+#: src/input/input_pvr.c:1552
msgid "The path to the device of your WinTV card."
-msgstr ""
+msgstr "Le chemin d'accès vers le périphérique de votre carte WinTV."
-#: src/input/input_pvr.c:1535
+#: src/input/input_pvr.c:1558
msgid "WinTV-PVR 250/350 input plugin"
-msgstr ""
+msgstr "plugin d'entré WinTV-PVR 250/350"
#: src/input/input_rtp.c:183
#, c-format
@@ -1925,17 +2005,17 @@ msgstr "socket(): %s.\n"
#: src/input/input_rtp.c:193
msgid "IP address specified is multicast\n"
-msgstr ""
+msgstr "L'adresse IP spécifiée est multicast\n"
#: src/input/input_rtp.c:202
-#, fuzzy, c-format
+#, c-format
msgid "setsockopt(SO_RCVBUF): %s.\n"
-msgstr "socket(): %s.\n"
+msgstr "setsockopt(SO_RCVBUF): %s.\n"
#: src/input/input_rtp.c:210
-#, fuzzy, c-format
+#, c-format
msgid "setsockopt(SO_REUSEADDR): %s.\n"
-msgstr "socket(): %s.\n"
+msgstr ""
#: src/input/input_rtp.c:217
#, c-format
@@ -1958,18 +2038,18 @@ msgid "unable to resolve '%s'.\n"
msgstr "incapable de resoudre '%s'.\n"
#: src/input/input_rtp.c:287
-#, fuzzy, c-format
+#, c-format
msgid "unable to bind to '%s'.\n"
msgstr "incapable de se connecter à '%s'.\n"
#: src/input/input_rtp.c:336
-#, fuzzy, c-format
+#, c-format
msgid "recv(): %s.\n"
-msgstr "socket(): %s.\n"
+msgstr ""
#: src/input/input_rtp.c:631
msgid "RTP: stopping reading thread...\n"
-msgstr ""
+msgstr "RTP: arrêt de la lecture du thread...\n"
#: src/input/input_rtp.c:634
msgid "RTP: reading thread terminated\n"
@@ -1986,9 +2066,8 @@ 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:778
-#, fuzzy
msgid "RTP and UDP input plugin as shipped with xine"
-msgstr "plugin d'entrée réseau fournis avec xine"
+msgstr "plugin d'entré RTP et UDP fournis avec xine"
#: src/input/input_rtsp.c:292
msgid "rtsp streaming input plugin"
@@ -1996,7 +2075,7 @@ msgstr ""
#: src/input/input_smb.c:503
msgid "CIFS/SMB input plugin based on libsmbclient"
-msgstr ""
+msgstr "plugin d'entré CIFS/SMB basé sur libsmbclient"
#: src/input/input_stdin_fifo.c:165
#, c-format
@@ -2004,9 +2083,9 @@ msgid "stdin: cannot seek back! (%<PRIdMAX> > %<PRIdMAX>)\n"
msgstr ""
#: src/input/input_stdin_fifo.c:253
-#, fuzzy, c-format
+#, c-format
msgid "stdin: failed to open '%s'\n"
-msgstr "incapable de resoudre '%s'.\n"
+msgstr "stdin: impossible d'ouvrir '%s'\n"
#: src/input/input_stdin_fifo.c:357
msgid "stdin streaming input plugin"
@@ -2026,20 +2105,19 @@ msgstr ""
#: src/input/input_v4l.c:683
msgid "Tuner name not found\n"
-msgstr ""
+msgstr "Tuner non trouvé\n"
#: src/input/input_v4l.c:1914
msgid "v4l tv input plugin"
-msgstr ""
+msgstr "plugin d'entré tv V4l"
#: src/input/input_v4l.c:1922
-#, fuzzy
msgid "v4l video device"
-msgstr "périphérique du mixeur alsa"
+msgstr "périphérique vidéo v4l"
#: src/input/input_v4l.c:1923
msgid "The path to your Video4Linux video device."
-msgstr ""
+msgstr "Le chemin d'accès vers votre périphérique vidéo Video4Linux"
#: src/input/input_v4l.c:1927
msgid "v4l TV standard"
@@ -2052,75 +2130,76 @@ msgstr ""
#: src/input/input_v4l.c:1946
msgid "v4l radio input plugin"
-msgstr ""
+msgstr "plugin d'entré radio v4l"
#: src/input/input_v4l.c:1954
-#, fuzzy
msgid "v4l radio device"
-msgstr "périphérique du mixeur alsa"
+msgstr "périphérique radio v4l"
#: src/input/input_v4l.c:1955
msgid "The path to your Video4Linux radio device."
-msgstr ""
+msgstr "Le chemin d'accès vers votre périphérique radio Video4Linux"
#: src/input/input_vcd.c:850
-#, fuzzy
msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n"
-msgstr "input_cda: MRL malformée. Utilisez cda://<piste #>\n"
+msgstr "input_vcd: MRL mal formée. Utilisez vcdo:/<track #>\n"
#: src/input/input_vcd.c:856
-#, fuzzy, c-format
+#, c-format
msgid "input_vcd: invalid track %d (valid range: 0 .. %d)\n"
-msgstr "input_cda: piste %d invalide (limites correctes: 1 .. %d)\n"
+msgstr "input_vcd: piste %d invalide (limites correctes: 0 .. %d)\n"
#: src/input/input_vcd.c:959
-#, fuzzy, c-format
+#, c-format
msgid "unable to open %s: %s.\n"
-msgstr "incapable de resoudre '%s'.\n"
+msgstr "incapable d'ouvrir %s: %s.\n"
#: src/input/input_vcd.c:1035
-#, fuzzy, c-format
+#, c-format
msgid "input_vcd: unable to open %s: %s.\n"
-msgstr "input_dvd: impossible d'ouvrir le périphérique dvd (%s): %s\n"
+msgstr "input_vcd: incapable d'ouvrir %s: %s.\n"
#: src/input/input_vcd.c:1082
msgid "Video CD input plugin"
-msgstr ""
+msgstr "plugin d'entré Video CD"
#: src/input/input_vcd.c:1089
-#, fuzzy
msgid "device used for VCD playback"
-msgstr "périphérique utilisé pour la sortie mono"
+msgstr "périphérique utilisé pour la lecture des VCD"
#: src/input/input_vcd.c:1090
msgid ""
"The path to the device, usually a CD or DVD drive, you intend to play your "
"VideoCDs with."
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:435
#, c-format
msgid "rtsp: bad mrl: %s\n"
-msgstr ""
+msgstr "rtsp: mauvaise mrl: %s\n"
#: src/input/librtsp/rtsp.c:493
-#, fuzzy, c-format
+#, c-format
msgid "rtsp: failed to connect to '%s'\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "rtsp: impossible de se connecter à '%s'\n"
#: src/input/librtsp/rtsp_session.c:107
-#, fuzzy, c-format
+#, c-format
msgid "rtsp_session: failed to connect to server %s\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "rtsp_session: impossible de se connecter au serveur %s\n"
#: src/input/librtsp/rtsp_session.c:141
msgid "rtsp_session: session can not be established.\n"
-msgstr ""
+msgstr "rtsp_session: la session ne peut pas être établie.\n"
#: src/input/librtsp/rtsp_session.c:159
#, 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"
#: src/input/media_helper.c:148
#, c-format
@@ -2129,7 +2208,7 @@ msgstr ""
#: src/input/mms.c:559
msgid "Connecting MMS server (over tcp)..."
-msgstr ""
+msgstr "Connexion au serveur MMS (over tcp)..."
#: src/input/mmsh.c:199
msgid "libmmsh: send error\n"
@@ -2138,12 +2217,12 @@ msgstr ""
#: src/input/mmsh.c:244
#, c-format
msgid "libmmsh: bad response format\n"
-msgstr ""
+msgstr "libmmsh: mauvais format de réponse\n"
#: src/input/mmsh.c:250
-#, fuzzy, c-format
+#, c-format
msgid "libmmsh: 3xx redirection not implemented: >%d %s<\n"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "libmmsh: 3xx redirection non effectuée: >%d %s<\n"
#: src/input/mmsh.c:257
#, c-format
@@ -2181,14 +2260,13 @@ msgid ""
msgstr ""
#: src/input/pnm.c:753
-#, fuzzy, c-format
+#, c-format
msgid "input_pnm: failed to connect '%s'\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "input_pnm: impossible de se connecter '%s'\n"
#: src/input/pnm.c:764
-#, fuzzy
msgid "input_pnm: failed to set up stream\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
#: src/input/vcd/vcdio.c:222
msgid "SEEK_CUR not implemented for non-zero offset"
@@ -2252,7 +2330,7 @@ msgstr ""
#: src/input/vcd/xineplug_inp_vcd.c:1137
msgid "Unknown event type: "
-msgstr ""
+msgstr "type d'évènement inconnu:"
#: src/input/vcd/xineplug_inp_vcd.c:1433 src/input/vcd/xineplug_inp_vcd.c:1480
msgid "The above message had unknown vcdimager log level"
@@ -2383,6 +2461,7 @@ msgstr ""
#, 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/combined/ffmpeg/ff_audio_decoder.c:163
#, c-format
@@ -2404,7 +2483,7 @@ msgstr ""
#: src/combined/ffmpeg/ff_dvaudio_decoder.c:277
#, c-format
msgid "dvaudio: increasing buffer to %d to avoid overflow.\n"
-msgstr ""
+msgstr "dvaudio: augmentation du buffer à %d pour éviter sa saturation.\n"
#: src/combined/ffmpeg/ff_dvaudio_decoder.c:388
#, fuzzy
@@ -2434,8 +2513,9 @@ msgid ""
msgstr ""
#: src/combined/ffmpeg/ffmpeg_encoder.c:177
+#, fuzzy
msgid "minimum compression"
-msgstr ""
+msgstr "iff-ilbm: compression inconnue: %d\n"
#: src/combined/ffmpeg/ffmpeg_encoder.c:178
msgid "The minimum compression to apply to an image in constant quality mode."
@@ -2474,16 +2554,17 @@ msgstr ""
#, 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:1536
+#: src/combined/ffmpeg/ff_video_decoder.c:1574
msgid "ffmpeg based video decoder plugin"
msgstr ""
-#: src/combined/ffmpeg/ff_video_decoder.c:1548
+#: src/combined/ffmpeg/ff_video_decoder.c:1586
msgid "MPEG-4 postprocessing quality"
-msgstr ""
+msgstr "Qualité du post-traitement MPEG-4"
-#: src/combined/ffmpeg/ff_video_decoder.c:1549
+#: src/combined/ffmpeg/ff_video_decoder.c:1587
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 "
@@ -2491,8 +2572,15 @@ msgid ""
"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:1557
+#: src/combined/ffmpeg/ff_video_decoder.c:1595
msgid "FFmpeg video decoding thread count"
msgstr ""
@@ -2501,13 +2589,38 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
msgid "path to RealPlayer codecs"
-msgstr ""
+msgstr "chemin d'accès vers les codecs RealPlayer"
#: src/libreal/real_common.c:140
msgid ""
@@ -2828,15 +2941,15 @@ msgstr ""
#: src/audio_dec/xine_faad_decoder.c:131
msgid "libfaad: libfaad NeAACDecOpen() failed.\n"
-msgstr ""
+msgstr "libfaad: libfaad NeAACDecOpen() a échoué.\n"
#: src/audio_dec/xine_faad_decoder.c:140
msgid "libfaad: libfaad NeAACDecInit2 failed.\n"
-msgstr ""
+msgstr "libfaad: libfaad NeAACDecInit2 a échoué.\n"
#: src/audio_dec/xine_faad_decoder.c:151
msgid "libfaad: libfaad NeAACDecInit failed.\n"
-msgstr ""
+msgstr "libfaad: libfaad NeAACDecInit a échoué.\n"
#: src/audio_dec/xine_faad_decoder.c:458
msgid "Freeware Advanced Audio Decoder"
@@ -3367,12 +3480,11 @@ msgstr ""
#: src/video_out/video_out_aa.c:298
msgid "xine video output plugin using the ascii-art library"
-msgstr "plugin de sortie video de xine utilisant la librairie ascii-art"
+msgstr "plugin de sortie video xine utilisant la bibliothèque ascii-art"
#: src/video_out/video_out_caca.c:302
-#, fuzzy
msgid "xine video output plugin using the Color AsCii Art library"
-msgstr "plugin de sortie video de xine utilisant la librairie ascii-art"
+msgstr "plugin de sortie video xine utilisant la bibliothèque Color AsCii Art"
#: src/video_out/video_out_directfb.c:1341
msgid "video layer buffering mode"
@@ -3492,37 +3604,33 @@ msgid "video_out_directfb: using display layer #%d.\n"
msgstr ""
#: src/video_out/video_out_directfb.c:1901
-#, fuzzy
msgid "xine video output plugin using DirectFB."
-msgstr "plugin de sortie audio de xine utilisant libvidix"
+msgstr "plugin de sortie vidéo xine utilisant DirectFB."
#: src/video_out/video_out_directfb.c:1994
msgid "video_out_directfb: no usable display layer was found!\n"
msgstr ""
#: src/video_out/video_out_directfb.c:2106
-#, fuzzy
msgid "xine video output plugin using DirectFB under XDirectFB."
-msgstr "plugin de sortie audio de xine utilisant libvidix"
+msgstr "plugin de sortie vidéo xine utilisant DirectFB sous XDirectFB."
#: src/video_out/video_out_directx.c:1241
-#, fuzzy
msgid "xine video output plugin for win32 using directx"
-msgstr "plugin de sortie audio de xine utilisant libvidix"
+msgstr "plugin de sortie vidéo xine pour win32 utilisant directx"
-#: src/video_out/video_out_fb.c:746
+#: src/video_out/video_out_fb.c:758
#, c-format
msgid ""
"video_out_fb: only packed truecolour/directcolour is supported (%d).\n"
" Check 'fbset -i' or try 'fbset -depth 16'.\n"
msgstr ""
-#: src/video_out/video_out_fb.c:806 src/video_out/video_out_vidix.c:1220
-#, fuzzy
+#: src/video_out/video_out_fb.c:818 src/video_out/video_out_vidix.c:1232
msgid "framebuffer device name"
-msgstr "périphérique framebuffer"
+msgstr "Nom du périphérique framebuffer"
-#: src/video_out/video_out_fb.c:807 src/video_out/video_out_vidix.c:1221
+#: src/video_out/video_out_fb.c:819 src/video_out/video_out_vidix.c:1233
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, "
@@ -3563,16 +3671,14 @@ msgid ""
"\n"
msgstr ""
-#: src/video_out/video_out_fb.c:1055
-#, fuzzy
+#: src/video_out/video_out_fb.c:1067
msgid "Xine video output plugin using the Linux frame buffer device"
msgstr ""
-"plugin de sortie video de xine utilisant le périphérique framebuffer de linux"
+"plugin de sortie video xine utilisant le périphérique framebuffer de linux"
#: src/video_out/video_out_none.c:279
-#, fuzzy
msgid "xine video output plugin which displays nothing"
-msgstr "plugin de sortie video de xine pour cartes dxr3"
+msgstr "plugin de sortie video xine qui n'affiche rien"
#: src/video_out/video_out_opengl.c:1886
msgid "OpenGL renderer"
@@ -3631,18 +3737,17 @@ msgid ""
msgstr ""
#: src/video_out/video_out_opengl.c:1962
-#, fuzzy
msgid "xine video output plugin using the OpenGL 3D graphics API"
-msgstr "plugin de sortie audio de xine utilisant libvidix"
+msgstr "plugin de sortie vidéo xine utilisant l'API graphique 3D OpenGL"
#: src/video_out/video_out_pgx32.c:187
msgid "video_out_pgx32: Error: can't grab DGA drawable for video window\n"
msgstr ""
#: src/video_out/video_out_pgx32.c:206 src/video_out/video_out_pgx32.c:220
-#, fuzzy, c-format
+#, c-format
msgid "video_out_pgx32: Error: ioctl failed, bad device (%s)\n"
-msgstr "input_dvd: impossible d'ouvrir le périphérique dvd (%s): %s\n"
+msgstr "video_out_pgx32: Erreur: ioctl a échoué, mauvais périphérique (%s)\n"
#: src/video_out/video_out_pgx32.c:213
#, c-format
@@ -3660,21 +3765,27 @@ msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n"
msgstr ""
#: src/video_out/video_out_pgx64.c:296
-#, fuzzy, c-format
+#, c-format
msgid "video_out_pgx64: Error: can't open framebuffer device '%s'\n"
-msgstr "input_dvd: impossible d'ouvrir le périphérique dvd (%s): %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"
#: 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"
#: src/video_out/video_out_pgx64.c:337
msgid ""
@@ -3699,11 +3810,11 @@ msgstr ""
#: src/video_out/video_out_pgx64.c:1386
msgid "video_out_pgx64: Error: ioctl failed (FBIOGATTR)\n"
-msgstr ""
+msgstr "video_out_pgx64: Erreur: ioctl a échoué (FBIOGATTR)\n"
-#: src/video_out/video_out_pgx64.c:1453 src/video_out/video_out_xcbxv.c:1266
-#: src/video_out/video_out_xv.c:1319 src/video_out/video_out_xvmc.c:1414
-#: src/video_out/video_out_xxmc.c:2561
+#: src/video_out/video_out_pgx64.c:1453 src/video_out/video_out_xcbxv.c:1278
+#: src/video_out/video_out_xv.c:1331 src/video_out/video_out_xvmc.c:1426
+#: src/video_out/video_out_xxmc.c:2573
msgid "video overlay colour key"
msgstr ""
@@ -3759,15 +3870,14 @@ msgstr ""
msgid "video_out_sdl: fullscreen mode is NOT supported\n"
msgstr ""
-#: src/video_out/video_out_sdl.c:582
-#, fuzzy
+#: src/video_out/video_out_sdl.c:590
msgid "xine video output plugin using the Simple Direct Media Layer"
-msgstr "plugin de sortie video de xine utilisant Simple DirectMedia Layer"
+msgstr "plugin de sortie video xine utilisant Simple Direct Media Layer"
#: src/video_out/video_out_stk.c:454
-#, fuzzy
msgid "xine video output plugin using the Libstk Surface Set-top Toolkit"
-msgstr "plugin de sortie video de xine utilisant la librairie ascii-art"
+msgstr ""
+"plugin de sortie video xine utilisant le toolkit Libstk Surface Set-top"
#: src/video_out/video_out_syncfb.c:280
msgid "video_out_syncfb: error. (YUY2 not supported by your graphic card)\n"
@@ -3903,16 +4013,14 @@ msgstr ""
msgid "video overlay colour key blue component"
msgstr ""
-#: src/video_out/video_out_vidix.c:1195
-#, fuzzy
+#: src/video_out/video_out_vidix.c:1207
msgid "xine video output plugin using libvidix for x11"
-msgstr "plugin de sortie audio de xine utilisant libvidix"
+msgstr "plugin de sortie vidéo xine utilisant libvidix pour x11"
-#: src/video_out/video_out_vidix.c:1269
-#, fuzzy
+#: src/video_out/video_out_vidix.c:1281
msgid "xine video output plugin using libvidix for linux frame buffer"
msgstr ""
-"plugin de sortie video de xine utilisant le périphérique framebuffer de linux"
+"plugin de sortie video xine utilisant libvidix pour le framebuffer linux"
#: src/video_out/video_out_xcbshm.c:150 src/video_out/video_out_xshm.c:211
#, c-format
@@ -4055,15 +4163,17 @@ msgstr ""
msgid "pitch alignment workaround"
msgstr ""
-#: src/video_out/video_out_xcbxv.c:1350 src/video_out/video_out_xv.c:1414
-#: src/video_out/video_out_xxmc.c:2664
+#: src/video_out/video_out_xcbxv.c:1362 src/video_out/video_out_xv.c:1426
+#: src/video_out/video_out_xxmc.c:2676
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:1377 src/video_out/video_out_xv.c:1460
-#: src/video_out/video_out_xxmc.c:2757
+#: src/video_out/video_out_xcbxv.c:1389 src/video_out/video_out_xv.c:1472
+#: src/video_out/video_out_xxmc.c:2769
msgid "xine video output plugin using the MIT X video extension"
-msgstr "plugin de sortie video de xine utilisant l'extension video MIT X"
+msgstr "plugin de sortie video xine utilisant l'extension video MIT X"
#: src/video_out/video_out_xshm.c:194
#, c-format
@@ -4116,12 +4226,11 @@ msgstr ""
msgid " With Overlay = %d; UnsignedIntra = %d.\n"
msgstr ""
-#: src/video_out/video_out_xvmc.c:1670
-#, fuzzy
+#: src/video_out/video_out_xvmc.c:1682
msgid "xine video output plugin using the XvMC X video extension"
-msgstr "plugin de sortie video de xine utilisant l'extension video MIT X"
+msgstr "plugin de sortie video xine utilisant l'extension video XvMC "
-#: src/video_out/video_out_xxmc.c:2669
+#: src/video_out/video_out_xxmc.c:2681
msgid "Make XvMC allocate more frames for better buffering."
msgstr ""
@@ -4404,25 +4513,25 @@ msgid ": open() function should never be called\n"
msgstr ""
#: src/xine-engine/input_cache.c:354
-#, fuzzy, c-format
+#, c-format
msgid ": input plugin not defined!\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr ": plugin d'entré non défini!\n"
#: src/xine-engine/input_rip.c:139 src/xine-engine/input_rip.c:259
-#, fuzzy, c-format
+#, c-format
msgid "input_rip: reading of saved data failed: %s\n"
-msgstr "input_cda: l'ouverture du serveur '%s:%d' a échouée: %s\n"
+msgstr "input_rip: la lecture des données sauvegardées a échouée: %s\n"
#: src/xine-engine/input_rip.c:154
-#, fuzzy, c-format
+#, c-format
msgid "input_rip: reading by input plugin failed\n"
-msgstr "input_dvd: erreur de lecture dans le plugin input_dvd\n"
+msgstr "input_rip: la lecture par le plugin d'entré a echoué\n"
#: src/xine-engine/input_rip.c:162 src/xine-engine/input_rip.c:291
#: src/xine-engine/input_rip.c:657
-#, fuzzy, c-format
+#, c-format
msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr ""
#: src/xine-engine/input_rip.c:183
#, c-format
@@ -4430,14 +4539,14 @@ msgid "input_rip: open() function should never be called\n"
msgstr ""
#: src/xine-engine/input_rip.c:314 src/xine-engine/input_rip.c:419
-#, fuzzy, c-format
+#, c-format
msgid "input_rip: seeking failed\n"
-msgstr "input_cda: fopen(%s) à échoué: %s\n"
+msgstr "input_rip: la recherche a échouée\n"
#: src/xine-engine/input_rip.c:371 src/xine-engine/input_rip.c:389
-#, fuzzy, c-format
+#, c-format
msgid "input_rip: seeking failed: %s\n"
-msgstr "input_cda: fopen(%s) à échoué: %s\n"
+msgstr "input_rip: la recherche a échouée: %s\n"
#: src/xine-engine/input_rip.c:397
#, c-format
@@ -4479,9 +4588,9 @@ msgid "input_rip: file name not given!\n"
msgstr ""
#: src/xine-engine/input_rip.c:627
-#, fuzzy, c-format
+#, c-format
msgid "input_rip: error opening file %s: %s\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "input_rip: erreur à l'ouverture du fichier %s: %s\n"
#: src/xine-engine/io_helper.c:252
#, c-format
@@ -4489,9 +4598,9 @@ msgid "io_helper: waiting abandoned\n"
msgstr ""
#: src/xine-engine/io_helper.c:259
-#, fuzzy, c-format
+#, c-format
msgid "io_helper: waiting failed: %s\n"
-msgstr "input_cda: fopen(%s) à échoué: %s\n"
+msgstr ""
#: src/xine-engine/io_helper.c:314
msgid "failed to get status of socket"
@@ -4500,17 +4609,17 @@ msgstr ""
#: src/xine-engine/io_helper.c:389
#, c-format
msgid "io_helper: Permission denied\n"
-msgstr ""
+msgstr "io_helper: Permission refusée\n"
#: src/xine-engine/io_helper.c:393
#, c-format
msgid "io_helper: File not found\n"
-msgstr ""
+msgstr "io_helper: Fichier non trouvé\n"
#: src/xine-engine/io_helper.c:397
#, c-format
msgid "io_helper: Connection Refused\n"
-msgstr ""
+msgstr "io_helper: Connexion refusée\n"
#: src/xine-engine/load_plugins.c:213
#, c-format
@@ -4555,9 +4664,9 @@ msgid "load_plugins: plugin %s found\n"
msgstr ""
#: src/xine-engine/load_plugins.c:494
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: static plugin found\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
#: src/xine-engine/load_plugins.c:501
#, c-format
@@ -4575,21 +4684,23 @@ msgid "load_plugins: unknown plugin type %d in %s\n"
msgstr ""
#: src/xine-engine/load_plugins.c:525
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: unknown statically linked plugin type %d\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
#: src/xine-engine/load_plugins.c:585
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: unable to stat %s\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
#: src/xine-engine/load_plugins.c:626
-#, fuzzy, c-format
+#, c-format
msgid ""
"load_plugins: cannot open plugin lib %s:\n"
"%s\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
+"load_plugins: impossible d'ouvrir plugin lib %s:\n"
+"%s\n"
#: src/xine-engine/load_plugins.c:641
#, c-format
@@ -4599,9 +4710,9 @@ msgid ""
msgstr ""
#: src/xine-engine/load_plugins.c:659
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: skipping unreadable plugin directory %s.\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
#: src/xine-engine/load_plugins.c:708
#, c-format
@@ -4618,22 +4729,22 @@ msgstr ""
#: src/xine-engine/load_plugins.c:1097 src/xine-engine/load_plugins.c:1106
#, fuzzy, c-format
msgid "Unable to create %s directory: %s\n"
-msgstr "incapable d'allouer le buffer d'entrée.\n"
+msgstr "Impossible de créer l'objet direct sound."
#: src/xine-engine/load_plugins.c:1343
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: unknown content detection strategy %d\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
#: src/xine-engine/load_plugins.c:1468
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: using demuxer '%s'\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "load_plugins: utilise le demuxer '%s'\n"
#: src/xine-engine/load_plugins.c:1763 src/xine-engine/load_plugins.c:1810
-#, fuzzy, c-format
+#, c-format
msgid "load_plugins: failed to load audio output plugin <%s>\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr "load_plugins: impossible de charger le plugin de sortie audio <%s>\n"
#: src/xine-engine/load_plugins.c:1813
msgid ""
@@ -4642,11 +4753,13 @@ msgid ""
msgstr ""
#: src/xine-engine/load_plugins.c:2116
-#, fuzzy, c-format
+#, c-format
msgid ""
"load_plugins: cannot unload plugin lib %s:\n"
"%s\n"
-msgstr "input_net: impossible de se connecter à '%s'.\n"
+msgstr ""
+"load_plugins: ne peut pas décharger plugin lib %s:\n"
+"%s\n"
#: src/xine-engine/osd.c:829
#, c-format
@@ -4705,7 +4818,7 @@ msgstr ""
#: src/xine-engine/osd.c:1209
#, c-format
msgid "osd: unsupported conversion %s -> %s, no conversion performed\n"
-msgstr ""
+msgstr "osd: conversion non supportée %s -> %s, pas de conversion effectuée\n"
#: src/xine-engine/osd.c:1264 src/xine-engine/osd.c:1432
msgid "osd: font isn't defined\n"
@@ -4863,19 +4976,19 @@ msgid "xine: error while parsing mrl\n"
msgstr ""
#: src/xine-engine/xine.c:873
-#, fuzzy, c-format
+#, c-format
msgid "xine: found input plugin : %s\n"
-msgstr "plugin de sortie video de xine pour cartes dxr3"
+msgstr "xine: plugin d'entré trouvé : %s\n"
#: src/xine-engine/xine.c:891
-#, fuzzy, c-format
+#, c-format
msgid "xine: input plugin cannot open MRL [%s]\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "xine: le plugin d'entré ne peut pas ouvrir la MRL [%s]\n"
#: src/xine-engine/xine.c:902
-#, fuzzy, c-format
+#, c-format
msgid "xine: cannot find input plugin for MRL [%s]\n"
-msgstr "plugin de sortie video de xine pour cartes dxr3"
+msgstr ""
#: src/xine-engine/xine.c:928
#, c-format
@@ -4888,9 +5001,8 @@ msgid "xine: join rip input plugin\n"
msgstr ""
#: src/xine-engine/xine.c:971
-#, fuzzy
msgid "xine: error opening rip input plugin instance\n"
-msgstr "input_dvd: erreur de lecture dans le plugin input_dvd\n"
+msgstr ""
#: src/xine-engine/xine.c:1002
#, c-format
@@ -4919,9 +5031,8 @@ msgid "subtitle mrl opened '%s'\n"
msgstr ""
#: src/xine-engine/xine.c:1145
-#, fuzzy
msgid "xine: error opening subtitle mrl\n"
-msgstr "input_dvd: ne peux pas ouvrir le fichier >%s<\n"
+msgstr "xine: erreur à l'ouverture des sous-titres de la mrl\n"
#: src/xine-engine/xine.c:1177
#, c-format
@@ -5043,7 +5154,7 @@ msgstr "messages"
#: src/xine-engine/xine.c:2099
msgid "plugin"
-msgstr ""
+msgstr "plugin"
#: src/xine-engine/xine.c:2100
msgid "trace"
@@ -5051,62 +5162,57 @@ msgstr ""
#: src/xine-engine/xine_interface.c:946
msgid "Warning:"
-msgstr ""
+msgstr "Attention:"
#: src/xine-engine/xine_interface.c:947
msgid "Unknown host:"
-msgstr ""
+msgstr "Hôte inconnu:"
#: src/xine-engine/xine_interface.c:948
msgid "Unknown device:"
-msgstr ""
+msgstr "Périphérique inconnu:"
#: src/xine-engine/xine_interface.c:949
msgid "Network unreachable"
-msgstr ""
+msgstr "Réseau inaccessible"
#: src/xine-engine/xine_interface.c:950
msgid "Connection refused:"
-msgstr ""
+msgstr "Connexion refusée:"
#: src/xine-engine/xine_interface.c:951
-#, fuzzy
msgid "File not found:"
-msgstr "input_file: erreur de lecture (%s)\n"
+msgstr "Fichier non trouvé:"
#: src/xine-engine/xine_interface.c:952
msgid "Read error from:"
-msgstr ""
+msgstr "Erreur de lecture provenant de:"
#: src/xine-engine/xine_interface.c:953
msgid "Error loading library:"
msgstr ""
#: src/xine-engine/xine_interface.c:954
-#, fuzzy
msgid "Encrypted media stream detected"
-msgstr ""
-"ogg: flux audio vorbis detecté\n"
-"\n"
+msgstr "Flux média crypté détecté"
#: src/xine-engine/xine_interface.c:955
msgid "Security message:"
-msgstr ""
+msgstr "Message de sécurité:"
#: src/xine-engine/xine_interface.c:956
-#, fuzzy
msgid "Audio device unavailable"
-msgstr "fifo non disponible (%d)\n"
+msgstr "Périphérique audio non disponible"
#: src/xine-engine/xine_interface.c:957
msgid "Permission error"
-msgstr ""
+msgstr "Erreur de permission"
#: src/xine-engine/xine_interface.c:958
msgid "File is empty:"
-msgstr ""
+msgstr "Le fichier est vide:"
-#: src/xine-utils/memcpy.c:479
+#: src/xine-utils/memcpy.c:478
msgid "memcopy method used by xine"
msgstr ""
@@ -5121,15 +5227,14 @@ msgstr ""
msgid "Benchmarking memcpy methods (smaller is better):\n"
msgstr ""
+#~ msgid "xine audio output plugin using kde artsd"
+#~ msgstr "plugin de sortie audio xine utilisant arts de kde"
+
#, fuzzy
#~ msgid "demux_asf: Wrong ASX version: %s\n"
#~ msgstr "demux_asf: copyright : %s\n"
#, fuzzy
-#~ msgid "xine audio output plugin using kde artsd"
-#~ msgstr "plugin de sortie audio de xine utilisant esd"
-
-#, fuzzy
#~ msgid "dvbsub: cannot create timer thread\n"
#~ msgstr "input_rtp: ne peux pas créer le nouveau thread (%s)\n"
diff --git a/po/it.po b/po/it.po
index b3524cf76..0594f9c2e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+0000\n"
"PO-Revision-Date: 2006-06-18 23:05+0200\n"
"Last-Translator: Diego 'Flameeyes' Pettenò <flameeyes@gentoo.org>\n"
"Language-Team: Italian\n"
@@ -1597,12 +1597,12 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr "%s: impossibile connettersi a %s: %d\n"
-#: src/input/input_cdda.c:1633
-#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+#: src/input/input_cdda.c:1631
+#, fuzzy, 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:1638
+#: src/input/input_cdda.c:1636
#, 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"
@@ -2954,8 +2954,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/libxine2.pot b/po/libxine2.pot
index 3e24545ab..abf0bda62 100644
--- a/po/libxine2.pot
+++ b/po/libxine2.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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-26 23:28+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"
@@ -1300,12 +1300,12 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr ""
-#: src/input/input_cdda.c:1633
+#: src/input/input_cdda.c:1631
#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n"
msgstr ""
-#: src/input/input_cdda.c:1638
+#: src/input/input_cdda.c:1636
#, c-format
msgid "input_cdda: failed to connect to cddb server '%s:%d' (%s).\n"
msgstr ""
@@ -2020,6 +2020,16 @@ msgid ""
"Selects the TV standard of the input signals. Either: PAL, NTSC and SECAM. "
msgstr ""
+#: src/input/input_v4l.c:1941
+msgid "v4l ALSA audio input device"
+msgstr ""
+
+#: src/input/input_v4l.c:1942
+msgid ""
+"The name of the audio device which corresponds to your Video4Linux video "
+"device."
+msgstr ""
+
#: src/input/input_v4l.c:1946
msgid "v4l radio input plugin"
msgstr ""
@@ -2084,6 +2094,12 @@ msgstr ""
msgid "rtsp_session: session can not be established.\n"
msgstr ""
+#: src/input/librtsp/rtsp_session.c:153
+msgid ""
+"rtsp_session: rtsp server returned overly-large headers, session can not be "
+"established.\n"
+msgstr ""
+
#: src/input/librtsp/rtsp_session.c:159
#, c-format
msgid "rtsp_session: rtsp server type '%s' not supported yet. sorry.\n"
@@ -2466,8 +2482,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/pl.po b/po/pl.po
index d0e65505d..2ffcf6fce 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+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"
@@ -1417,13 +1417,14 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr "http: nie mogę się podłączyć do >%s<\n"
-#: src/input/input_cdda.c:1633
-#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
-msgstr ""
+# src/input/input_net.c:138
+#: src/input/input_cdda.c:1631
+#, fuzzy, c-format
+msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n"
+msgstr "input_net: nie mogę podłączyć się do '%s'.\n"
# src/input/input_net.c:138
-#: src/input/input_cdda.c:1638
+#: src/input/input_cdda.c:1636
#, 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"
@@ -2668,8 +2669,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libw32dll/w32codec.c:1404 src/libw32dll/w32codec.c:1453
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 59d4ff9f9..5a8b9fe00 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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+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"
@@ -1313,12 +1313,12 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr "http: unable to connect to >%s<\n"
-#: src/input/input_cdda.c:1633
+#: src/input/input_cdda.c:1631
#, fuzzy, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+msgid "input_cdda: successfully connected to cddb server '%s:%d'.\n"
msgstr "input_cda: server '%s:%d' successfuly connected.\n"
-#: src/input/input_cdda.c:1638
+#: src/input/input_cdda.c:1636
#, 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"
@@ -2499,8 +2499,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/sk.po b/po/sk.po
index ae7271f53..213c187f6 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -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-30 15:46+0000\n"
+"POT-Creation-Date: 2008-01-06 21:08+0000\n"
"PO-Revision-Date: 2004-09-15 13:53+0100\n"
"Last-Translator: \n"
"Language-Team: Slovak <ski18n@lists.isternet.sk>\n"
@@ -1401,12 +1401,12 @@ msgstr ""
msgid "%s: can't connect to %s:%d\n"
msgstr "rtsp: nemožno sa pripojiť k '%s'\n"
-#: src/input/input_cdda.c:1633
-#, c-format
-msgid "input_cdda: successfuly connected to cddb server '%s:%d'.\n"
+#: src/input/input_cdda.c:1631
+#, fuzzy, 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:1638
+#: src/input/input_cdda.c:1636
#, 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"
@@ -2625,8 +2625,33 @@ 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."
+"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:1605
+msgid "Skip loop filter"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1606
+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:1615
+msgid "Choose speed over specification compliance"
+msgstr ""
+
+#: src/combined/ffmpeg/ff_video_decoder.c:1616
+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/libreal/real_common.c:139
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 000000000..a4fb503b8
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,5424 @@
+# translation of libxine1.po to Türkçe
+# translation of libxine1.po to
+# Copyright (C) YEAR Copyright (C) 2000-2006 the xine project
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Serdar Soytetir <serdar@kde.org.tr>, 2007.
+# Server Acim <sacim@kde.org.tr>, 2007, 2008.
+# Serdar Soytetir <tulliana@gmail.com>, 2008.
+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"
+"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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: lib/hstrerror.c:17
+msgid "No error"
+msgstr "Hata yok"
+
+#: lib/hstrerror.c:18
+msgid "Unknown host"
+msgstr "Bilinmeyen makine"
+
+#: lib/hstrerror.c:19
+msgid "No address associated with name"
+msgstr "Bu isim ile ile ilişkilendirilmiş bir adres yok"
+
+#: lib/hstrerror.c:20
+msgid "Unknown server error"
+msgstr "Bilinmeyen sunucu hatası"
+
+#: lib/hstrerror.c:21
+msgid "Host name lookup failure"
+msgstr "Makine adını bakma hatası"
+
+#: lib/hstrerror.c:22
+msgid "Unknown error"
+msgstr "Bilinmeyen hata"
+
+#: src/audio_out/audio_alsa_out.c:350
+#, c-format
+msgid "audio_alsa_out:Already open...WHY!"
+msgstr "audio_alsa_out:Zaten açık...NEDEN!"
+
+#: 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() of %s başarısız oldu: %s\n"
+
+#: src/audio_out/audio_alsa_out.c:380
+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"
+
+#: 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"
+
+#: src/audio_out/audio_alsa_out.c:1295
+msgid "notify changes to the hardware mixer"
+msgstr "donanım karıştırıcısına değişiklikleri bildir"
+
+#: 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 "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
+msgid "snd_lib_error_set_handler() failed: %d"
+msgstr "snd_lib_error_set_handler() başarısız oldu: %d"
+
+#: src/audio_out/audio_alsa_out.c:1368
+msgid "sound card can do mmap"
+msgstr "ses kartı mmap işlerimi yapamıyor"
+
+#: 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 ""
+"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"
+msgstr "mono çıktı için kullanılan aygıt"
+
+#: 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 ""
+"xine mono 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:1387
+msgid "device used for stereo output"
+msgstr "stereo çıktı için kullanılan aygıt"
+
+#: 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 ""
+"xine stereo 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:1396
+msgid "device used for 4-channel output"
+msgstr "4-kanal çıktı için kullanılan aygıt"
+
+#: 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 ""
+"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
+msgid "device used for 5.1-channel output"
+msgstr "5.1-kanal çıktı için kullanılan aygıt"
+
+#: 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 ""
+"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
+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 ""
+"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
+#, c-format
+msgid "snd_pcm_open() failed:%d:%s\n"
+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"
+
+#: src/audio_out/audio_alsa_out.c:1470 src/audio_out/audio_oss_out.c:926
+msgid "speaker arrangement"
+msgstr "hoparlör ayarları"
+
+#: src/audio_out/audio_alsa_out.c:1471 src/audio_out/audio_oss_out.c:927
+msgid ""
+"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."
+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"
+"\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."
+
+#: src/audio_out/audio_alsa_out.c:1500
+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:1512
+msgid "24bit "
+msgstr "24bit "
+
+#: src/audio_out/audio_alsa_out.c:1516
+msgid "32bit "
+msgstr "32bit "
+
+#: src/audio_out/audio_alsa_out.c:1527
+msgid "mono "
+msgstr "mono "
+
+#: src/audio_out/audio_alsa_out.c:1531
+msgid "stereo "
+msgstr "stereo "
+
+#: src/audio_out/audio_alsa_out.c:1536
+msgid "4-channel "
+msgstr "4-kanal "
+
+#: 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:1544
+msgid "4.1-channel "
+msgstr "4.1-kanal"
+
+#: 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ş) "
+
+#: src/audio_out/audio_alsa_out.c:1552
+msgid "5-channel "
+msgstr "5-kanal"
+
+#: 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:1560
+msgid "5.1-channel "
+msgstr "5.1-kanal "
+
+#: 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:1586
+msgid "a/52 and DTS pass-through\n"
+msgstr "a/52 and DTS pass-through\n"
+
+#: 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"
+
+#: src/audio_out/audio_alsa_out.c:1596
+msgid "alsa mixer device"
+msgstr "alsa karıştırıcı aygıtı"
+
+#: src/audio_out/audio_alsa_out.c:1597
+msgid ""
+"xine will use this alsa mixer device to change the volume.\n"
+"See the alsa documentation for information on alsa devices."
+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
+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"
+
+#: src/audio_out/audio_arts_out.c:371
+msgid "xine audio output plugin using kde artsd"
+msgstr "Kde arts kullanan xine ses çıktısı eklentisi"
+
+#: src/audio_out/audio_coreaudio_out.c:569
+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
+msgid "Error"
+msgstr "Hata"
+
+#: src/audio_out/audio_directx2_out.c:168
+msgid "success"
+msgstr "başarılı"
+
+#: src/audio_out/audio_directx2_out.c:170
+msgid "access denied"
+msgstr "erişim engellendi"
+
+#: src/audio_out/audio_directx2_out.c:172
+msgid "resource is already in use"
+msgstr "kaynak zaten kullanımda"
+
+#: src/audio_out/audio_directx2_out.c:173
+msgid "object was already initialized"
+msgstr "nesne zaten algılanmıştı"
+
+#: src/audio_out/audio_directx2_out.c:174
+msgid "specified wave format is not supported"
+msgstr "belirtilen dalga biçimi desteklenmiyor"
+
+#: src/audio_out/audio_directx2_out.c:175
+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
+msgid "requested buffer control is not available"
+msgstr "istenen ara bellek kontrolü uygun değil"
+
+#: src/audio_out/audio_directx2_out.c:177
+msgid "undetermined error inside DirectSound subsystem"
+msgstr "DirectSound alt sistemi içinde belirlenemeyen hata"
+
+#: src/audio_out/audio_directx2_out.c:179
+msgid "DirectSound hardware device is unavailable"
+msgstr "DirectSound donanım aygıtı geçerli değil"
+
+#: src/audio_out/audio_directx2_out.c:181
+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
+msgid "invalid parameter was passed"
+msgstr "geçersiz parametre geçirildi"
+
+#: src/audio_out/audio_directx2_out.c:183
+msgid "object doesn't support aggregation"
+msgstr "nesne kümeyi desteklemiyor"
+
+#: src/audio_out/audio_directx2_out.c:184
+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
+msgid "requested COM interface not available"
+msgstr "istenilen COM arayüzü kullanılabilir değil"
+
+#: src/audio_out/audio_directx2_out.c:186
+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
+msgid "insufficient memory"
+msgstr "yetersiz bellek"
+
+#: src/audio_out/audio_directx2_out.c:188
+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
+msgid "DirectSound wasn't initialized"
+msgstr "DirectSound başlatılamadı"
+
+#: src/audio_out/audio_directx2_out.c:190
+msgid "function is not supported"
+msgstr "fonksiyon desteklenmiyor"
+
+#: src/audio_out/audio_directx2_out.c:191
+msgid "unknown error"
+msgstr "bilinmeyen hata"
+
+#: src/audio_out/audio_directx2_out.c:201
+#, c-format
+msgid "Unable to create direct sound object."
+msgstr "Doğrudan ses nesnesi oluşturulamadı."
+
+#: src/audio_out/audio_directx2_out.c:207
+#, 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
+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
+msgid "Couldn't play sound buffer"
+msgstr "Ses önbelleği çalınamadı"
+
+#: src/audio_out/audio_directx2_out.c:350
+msgid "Couldn't stop sound buffer"
+msgstr "Ses önbelleği durdurulamadı"
+
+#: src/audio_out/audio_directx2_out.c:363
+msgid "Can't get buffer position"
+msgstr "Önbellek konumu alınamadı"
+
+#: src/audio_out/audio_directx2_out.c:377
+msgid "Can't set buffer position"
+msgstr "Önbellek konumu ayarlanamadı"
+
+#: src/audio_out/audio_directx2_out.c:409
+msgid "Can't set sound volume"
+msgstr "Ses düzeyi ayarlanamadı"
+
+#: src/audio_out/audio_directx2_out.c:427
+#, 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
+msgid "Couldn't lock direct sound buffer"
+msgstr "Doğrudan ses önbelleğinin kilitlenemedi"
+
+#: src/audio_out/audio_directx2_out.c:442
+msgid "Couldn't unlock direct sound buffer"
+msgstr "Doğrudan ses önbelleğinin kilidi açılamadı"
+
+#: src/audio_out/audio_directx2_out.c:539
+#, 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"
+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
+#, 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
+#, 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
+#, 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
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid ": unknown control command %d\n"
+msgstr ": bilinmeyen denetim komutu %d\n"
+
+#: src/audio_out/audio_directx2_out.c:998
+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
+msgid "xine audio output plugin for win32 using directx"
+msgstr "win32 için directx kullanan xine ses çıktısı eklentisi"
+
+#: 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: ESD sunucusuna bağlanılıyor %s: %s\n"
+
+#: src/audio_out/audio_esd_out.c:497
+msgid "audio_esd_out: connecting to esd server...\n"
+msgstr "audio_esd_out: esd sunucusuna bağlanılıyor...\n"
+
+#: 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: %s ESD sunucusuna bağlanılamadı: %s\n"
+
+#: src/audio_out/audio_esd_out.c:539
+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
+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"
+"Değerin birimi saniyenin 90000de bir olan bir PTS tıklamasıdır."
+
+#: src/audio_out/audio_esd_out.c:572
+msgid "xine audio output plugin using esound"
+msgstr "esound kullanan xine ses çıktısı eklentisi"
+
+#: src/audio_out/audio_file_out.c:362
+msgid "xine file audio output plugin"
+msgstr "xine dosyası ses çıkışı eklentisi"
+
+#: src/audio_out/audio_irixal_out.c:385
+msgid "irixal audio output maximum gap length"
+msgstr "iriksiyal ses çıkışı en fazla boşluk uzunluğu"
+
+#: 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"
+"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"
+"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
+msgid "xine output plugin for JACK Audio Connection Kit"
+msgstr "JACK Audio Connection Kit kullanan xine ses çıktısı eklentisi"
+
+#: src/audio_out/audio_none_out.c:223
+msgid "xine dummy audio output plugin"
+msgstr "xine sahte ses çıktısı eklentisi"
+
+#: src/audio_out/audio_oss_out.c:196
+#, c-format
+msgid "audio_oss_out: Opening audio device %s: %s\n"
+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"
+
+#: 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
+msgid "OSS audio device name"
+msgstr "OSS ses aygıtı adı"
+
+#: src/audio_out/audio_oss_out.c:744
+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."
+
+#: src/audio_out/audio_oss_out.c:751
+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
+msgid ""
+"The full audio device name is created by concatenating the OSS device name "
+"and the audio device number.\n"
+"If you do not need a number because you are happy with your system's default "
+"audio device, set this to -1.\n"
+"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."
+
+#: src/audio_out/audio_oss_out.c:761
+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
+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
+#, 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
+#, c-format
+msgid ""
+"audio_oss_out: opening audio device %s failed:\n"
+"%s\n"
+msgstr ""
+"audio_oss_out: %s ses aygıtının açılamadı:\n"
+"%s\n"
+
+#: src/audio_out/audio_oss_out.c:807
+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
+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 "
+"using. Try the various methods, if you experience sync problems.\n"
+"\n"
+"The meaning of the values is as follows:\n"
+"\n"
+"auto\n"
+"xine attempts to automatically detect the optimal setting\n"
+"\n"
+"getodelay\n"
+"uses the SNDCTL_DSP_GETODELAY ioctl to achieve true a/v sync even if the "
+"driver claims not to support realtime playback\n"
+"\n"
+"getoptr\n"
+"uses the SNDCTL_DSP_GETOPTR ioctl to achieve true a/v sync even if the "
+"driver supports the preferred SNDCTL_DSP_GETODELAY ioctl\n"
+"\n"
+"softsync\n"
+"uses software synchronization with the system clock; audio and video can get "
+"severely out of sync if the system clock speed does not precisely match your "
+"sound card's playback speed\n"
+"\n"
+"probebuffer\n"
+"probes the sound card buffer size on initialization to calculate the latency "
+"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"
+"\n"
+"Değerlerin anlamları aşağıdadır:\n"
+"\n"
+"otomatik\n"
+"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"
+"\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"
+"\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"
+"\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"
+
+#: src/audio_out/audio_oss_out.c:856
+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 ""
+"audio_oss_out: Ses sürücüsü gerçek zamanlı senkron etkisizleştirildi...\n"
+"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
+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: ...there may be audio/video synchronization issues\n"
+msgstr ""
+"%d bytes\n"
+"audio_oss_out: ...burada ses/görüntü senkronizasyon sorunları olabilir\n"
+
+#: src/audio_out/audio_oss_out.c:1023
+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
+msgid ""
+"The full mixer device name is created by taking the OSS device name, "
+"replacing \"dsp\" with \"mixer\" and adding the mixer number.\n"
+"If you do not need a number because you are happy with your system's default "
+"mixer device, set this to -1.\n"
+"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."
+
+#: src/audio_out/audio_oss_out.c:1081
+#, 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
+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
+msgid "device used for pulseaudio"
+msgstr "pulseaudio için kullanılan aygıt"
+
+#: src/audio_out/audio_pulse_out.c:549
+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
+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"
+
+#: 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: ses aygıtı açılması başarılamadı %s failed: %s\n"
+
+#: src/audio_out/audio_sun_out.c:925
+msgid "Sun audio device name"
+msgstr "Sun ses aygıtı adı"
+
+#: 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, "
+"xine can be used to fill this file with arbitrary content. So you should be "
+"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."
+
+#: 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"
+
+#: 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
+#, 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
+msgid "Media stream scrambled/encrypted"
+msgstr "Ortam akışı şifrelidir"
+
+#: src/demuxers/demux_avi.c:528 src/demuxers/demux_avi.c:642
+msgid "Restoring index..."
+msgstr "İndeks Yeniden Yükleniyor..."
+
+#: src/demuxers/demux_avi.c:628 src/demuxers/demux_avi.c:1683
+#, 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
+#, c-format
+msgid "demux_avi: avi index is broken\n"
+msgstr "demux_avi: avi indeksi bozuk\n"
+
+#: src/demuxers/demux_avi.c:831
+#, 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"
+
+#: src/demuxers/demux_film.c:186
+#, c-format
+msgid "invalid FILM chunk size\n"
+msgstr "geçersiz FILM yığını\n"
+
+#: src/demuxers/demux_film.c:340
+#, c-format
+msgid "unrecognized FILM chunk\n"
+msgstr "tanınmayan FILM yığını\n"
+
+#: src/demuxers/demux_flv.c:178
+#, c-format
+msgid "unsupported FLV version (%d).\n"
+msgstr "desteklenmeyen FLV sürümü (%d).\n"
+
+#: src/demuxers/demux_flv.c:185
+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_iff.c:233
+#, c-format
+msgid "iff-8svx/16sv: unknown compression: %d\n"
+msgstr "iff-8svx/16sv: bilinmeyen sıkıştırma: %d\n"
+
+#: src/demuxers/demux_iff.c:367
+#, c-format
+msgid "iff-ilbm: unknown compression: %d\n"
+msgstr "iff-ilbm: bilinmeyen sıkıştırma: %d\n"
+
+#: src/demuxers/demux_iff.c:568
+#, c-format
+msgid "iff: unknown Chunk: %s\n"
+msgstr "iff: bilinmeyen Yığın: %s\n"
+
+#: src/demuxers/demux_mpc.c:210
+msgid "demux_mpc: frame too big for buffer"
+msgstr "demux_mpc: çerçeve önbellek için çok büyük"
+
+#: src/demuxers/demux_mpeg_block.c:294
+#, c-format
+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"
+
+#: src/demuxers/demux_mpeg_block.c:305
+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"
+
+#: 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"
+
+#: 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"
+
+#: src/demuxers/demux_mpeg_pes.c:415
+#, 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"
+
+#: src/demuxers/demux_mpeg_pes.c:424
+#, 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"
+
+#: src/demuxers/demux_mpeg_pes.c:806
+#, 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
+#, 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"
+
+#: src/demuxers/demux_mpeg_pes.c:1090
+#, 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"
+
+#: 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
+#, 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
+#, c-format
+msgid "demux_snd: unsupported audio type: %d\n"
+msgstr "demux_snd: desteklenmeyen ses tipi: %d\n"
+
+#: src/demuxers/demux_tta.c:86
+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"
+
+#: 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"
+
+#: 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
+#, 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"
+
+#: src/dxr3/dxr3.h:30
+msgid "DXR3 device number"
+msgstr "DXR3 aygıt numarası"
+
+#: 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 "Eğer bilgisayarınızda birden fazla DXR3 varsa, burada hangisini kullanacağınızı belirlemelisiniz."
+
+#: 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: spu device %s (%s) yüklenemedi\n"
+
+#: src/dxr3/dxr3_decode_spu.c:661
+msgid "requested button not available\n"
+msgstr "istenilen düğme kullanılabilir değil\n"
+
+#: 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: Denetim aygıtı %s (%s) açılamadı\n"
+
+#: src/dxr3/dxr3_decode_video.c:254
+msgid "use Pan & Scan info"
+msgstr "Panla & Tara bilgisini kullanın"
+
+#: 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"
+"\n"
+"only when forced\n"
+"Use Pan & Scan only, when the content you are playing enforces it.\n"
+"\n"
+"use MPEG hint\n"
+"Enable Pan & Scan based on information embedded in the MPEG video stream.\n"
+"\n"
+"use DVB hint\n"
+"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"
+"\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"
+"\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"
+"\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."
+
+#: src/dxr3/dxr3_decode_video.c:274
+msgid "try to sync video every frame"
+msgstr "her çerçevede görüntüyü eşzamanlamayı dene"
+
+#: 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 "
+"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"
+"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
+msgid "use smooth play mode"
+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."
+
+#: src/dxr3/dxr3_decode_video.c:285
+msgid "correct frame durations in broken streams"
+msgstr "kırık akışlarda çerçeve sürelerini düzelt"
+
+#: 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 "
+"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."
+
+#: 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: Aygıt açılamadı %s (%s)\n"
+
+#: src/dxr3/dxr3_decode_video.c:613
+msgid "dxr3_decode_video: write to device would block. flushing\n"
+msgstr "dxr3_decode_video: kızarmayı önlemesi için aygıta yazar\n"
+
+#: src/dxr3/dxr3_decode_video.c:617
+#, c-format
+msgid "dxr3_decode_video: video device write failed (%s)\n"
+msgstr "dxr3_decode_video: görüntü aygıtına yazılamadı (%s)\n"
+
+#: src/dxr3/dxr3_decode_video.c:732
+#, c-format
+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"
+
+#: src/dxr3/dxr3_mpeg_encoders.c:123
+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
+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"
+
+#: src/dxr3/dxr3_mpeg_encoders.c:168
+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
+msgid "dxr3_mpeg_encoder: could not create codec.\n"
+msgstr "dxr3_mpeg_encoder: kodlayıcı oluşturulamadı.\n"
+
+#: src/dxr3/dxr3_mpeg_encoders.c:187
+msgid "rte mpeg output bitrate (kbit/s)"
+msgstr "rte mpeg çıktısı bit oranı (kbit/s)"
+
+#: 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 "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
+msgid "dxr3_mpeg_encoder: cannot init the context: %s\n"
+msgstr "dxr3_mpeg_encoder: bağlam başlatılamadı: %s\n"
+
+#: src/dxr3/dxr3_mpeg_encoders.c:240
+#, c-format
+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
+msgid "dxr3_mpeg_encoder: Couldn't start the FAME library\n"
+msgstr "dxr3_mpeg_encoder: FAME kütüphanesi başlatılamadı\n"
+
+#: src/dxr3/dxr3_mpeg_encoders.c:385
+msgid "fame mpeg encoding quality"
+msgstr "fame mpeg kodlama kalitesi"
+
+#: 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 "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"
+msgstr "SCR eklenti önceliği"
+
+#: 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 "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"
+msgstr "tek ve çift satırları değiştir"
+
+#: 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 ""
+"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."
+
+#: src/dxr3/video_out_dxr3.c:265
+msgid "add black bars to correct aspect ratio"
+msgstr "görünüm oranını düzeltmek için siyah çubuklar ekle"
+
+#: 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 "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."
+
+#: 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: Denetim aygıtı %s (%s) açılamadı\n"
+
+#: 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: Görüntü aygıtı %s (%s) açılamadı\n"
+
+#: src/dxr3/video_out_dxr3.c:334
+msgid "encoder for non mpeg content"
+msgstr "mpeg olmayan içerik için kodlayıcı"
+
+#: 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"
+"Depending on what is supported by your xine, this setting can be \"fame\", "
+"\"rte\", \"libavcodec\" or \"none\".\n"
+"The \"libavcodec\" encoder makes use of the ffmpeg plugin that already ships "
+"with xine, so you do not need to install any additional library for that. "
+"Even better is that libavcodec also provides high quality with low CPU "
+"usage. Using \"libavcodec\" is therefore strongly suggested.\n"
+"\"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."
+
+#: src/dxr3/video_out_dxr3.c:346
+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
+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
+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
+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"
+"video_out_dxr3: you will not be able to play non-mpeg content using this "
+"video out\n"
+"video_out_dxr3: driver. See the README.dxr3 for details on configuring an "
+"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"
+
+#: src/dxr3/video_out_dxr3.c:371
+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"
+"video_out_dxr3: you will not be able to play non-mpeg content using this "
+"video out\n"
+"video_out_dxr3: driver. See the README.dxr3 for details on configuring an "
+"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"
+
+#: src/dxr3/video_out_dxr3.c:386
+msgid "video output mode (TV or overlay)"
+msgstr "görüntü çıktı kipi (TV ya da üstyazım)"
+
+#: 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"
+"\n"
+"letterboxed tv\n"
+"Send video to the TV out connector only. This is the mode used for the "
+"standard 4:3 television set. Anamorphic (16:9) video will be displayed "
+"letterboxed, pan&scan material will have the image cropped at the left and "
+"right side. This is the common setting for TV viewing and acts like a "
+"standalone DVD player.\n"
+"\n"
+"widescreen tv\n"
+"Send video to the tv out connector only. This mode is intended for 16:9 "
+"widescreen TV sets. Anamorphic and pan&scan content will fill the entire "
+"screen, but you have to set the TV's aspect ratio manually to 16:9 using "
+"your.\n"
+"\n"
+"letterboxed overlay\n"
+"Overlay Video output on the computer screen with the option of on-the-fly "
+"switching to TV out by hiding the video window. The overlay will be "
+"displayed with black borders if it is anamorphic (16:9).\n"
+"This setting is only useful in the rare case of a DVD subtitle channel that "
+"would only display properly in letterbox mode. A good example for that are "
+"the animated commentator's silhouettes on \"Ghostbusters\".\n"
+"\n"
+"widescreen overlay\n"
+"Overlay Video output on the computer screen with the option of on-the-fly "
+"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"
+"\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"
+"\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"
+"\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"
+"\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."
+
+#: src/dxr3/video_out_dxr3.c:434
+msgid "overlay colorkey value"
+msgstr "katman renk değeri"
+
+#: src/dxr3/video_out_dxr3.c:434
+msgid ""
+"Hexadecimal RGB value of the key color.\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."
+
+#: src/dxr3/video_out_dxr3.c:439
+msgid "overlay colorkey tolerance"
+msgstr "katman renk toleransı"
+
+#: src/dxr3/video_out_dxr3.c:439
+msgid ""
+"A greater value widens the tolerance for the overlay keycolor.\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."
+
+#: src/dxr3/video_out_dxr3.c:445
+msgid "crop the overlay area at top and bottom"
+msgstr "Üst ve altın katman bölgesini kesin"
+
+#: 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."
+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
+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"
+
+#: src/dxr3/video_out_dxr3.c:460
+msgid "preferred tv mode"
+msgstr "tercih edilen tv kipi"
+
+#: src/dxr3/video_out_dxr3.c:460
+msgid ""
+"Selects the TV mode to be used by the DXR3. The values mean:\n"
+"\n"
+"ntsc: NTSC at 60Hz\n"
+"pal: PAL at 50Hz\n"
+"pal60: PAL at 60Hz\n"
+"default: keep the card's setting"
+msgstr ""
+"DXR3 kullanarak TV kipini seçer. Değerlerin anlamları şöyledir:\n"
+"\n"
+"ntsc: saniyede 60Hz hızındaki NTSC\n"
+"pal: saniyede 50Hz hızındaki PAL\n"
+"pal60: saniyede 60Hz hızındaki PAL\n"
+"varsayılan: ekran kartının ayarlarını korur"
+
+#: src/dxr3/video_out_dxr3.c:482
+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
+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: Detaylar için README.dxr3 dosyasını okuyun.\n"
+
+#: src/dxr3/video_out_dxr3.c:1371
+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"
+
+#: src/input/input_cdda.c:1616
+#, 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"
+msgstr "input_cdda: cddb sunucusuna başarılı bir şekilde bağlandı '%s:%d'.\n"
+
+#: src/input/input_cdda.c:1668
+#, 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"
+
+#: src/input/input_cdda.c:2702
+msgid "CD Digital Audio (aka. CDDA)"
+msgstr "CD Dijital Ses (CDDA olarak da bilinir)"
+
+#: src/input/input_cdda.c:2755
+msgid "device used for CD audio"
+msgstr "CD sesi için kullanılan aygıt"
+
+#: src/input/input_cdda.c:2756
+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ü."
+
+#: src/input/input_cdda.c:2762
+msgid "query CDDB"
+msgstr "CDDB sorgusu"
+
+#: src/input/input_cdda.c:2762
+msgid ""
+"Enables CDDB queries, which will give you convenient title and track names "
+"for your audio CDs.\n"
+"Keep in mind that, unless you use your own private CDDB, this information is "
+"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."
+
+#: src/input/input_cdda.c:2770
+msgid "CDDB server name"
+msgstr "CDDB sunucu adı"
+
+#: src/input/input_cdda.c:2770
+msgid ""
+"The CDDB server used to retrieve the title and track information from.\n"
+"This setting is security critical, because the sever will receive "
+"information about your listening habits and could answer the queries with "
+"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."
+
+#: src/input/input_cdda.c:2778
+msgid "CDDB server port"
+msgstr "CDDB sunucu portu"
+
+#: src/input/input_cdda.c:2778
+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
+msgid "CDDB cache directory"
+msgstr "CDDB önbellek dizini"
+
+#: src/input/input_cdda.c:2784
+msgid ""
+"The replies from the CDDB server will be cached in this directory.\n"
+"This setting is security critical, because files with uncontrollable names "
+"will be created in this directory. Be sure to use a dedicated directory not "
+"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."
+
+#: src/input/input_cdda.c:2792
+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
+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 "
+"playback, the high datarates that require the fast rotation are not needed, "
+"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"
+"Buradaki sıfır değeri yavaşlamayı devre dışı bırakacaktır."
+
+#: src/input/input_dvb.c:895
+#, 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
+#, 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
+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
+msgid "input_dvb: cannot open dvb device\n"
+msgstr "input_dvb: dvb aygıtı açılamadı\n"
+
+#: src/input/input_dvb.c:2795
+#, 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
+#, 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
+#, 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"
+
+#: src/input/input_dvb.c:2836
+#, 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
+#, 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"
+
+#: src/input/input_dvb.c:2855
+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"
+
+#: src/input/input_dvb.c:2861
+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
+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"
+
+#: src/input/input_dvb.c:2893
+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"
+
+#: src/input/input_dvb.c:2916
+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"
+
+#: src/input/input_dvb.c:2942
+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"
+
+#: src/input/input_dvb.c:2977
+#, 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
+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
+msgid "use DVB 'center cutout' (zoom)"
+msgstr "DVB merkez kesmesini kullan (yakınlaştır)"
+
+#: src/input/input_dvb.c:3062
+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."
+
+#: src/input/input_dvb.c:3155
+msgid "DVB (Digital TV) input plugin"
+msgstr "DVB (Dijital TV) girdi eklentisi"
+
+#: src/input/input_dvb.c:3284
+msgid "Remember last DVB channel watched"
+msgstr "Son izlenen DVB kanalını hatırla"
+
+#: src/input/input_dvb.c:3285
+msgid ""
+"On autoplay, xine will remember and switch to the channel indicated in media."
+"dvb.last_channel. "
+msgstr ""
+"Otomatik çalmada, xine hatırlayacak ve ortamdaki ilgili kanala geçecektir. "
+"dvb.son_kanal."
+
+#: src/input/input_dvb.c:3292
+msgid "Last DVB channel viewed"
+msgstr "Görüntülenen son DVB kanalı"
+
+#: src/input/input_dvb.c:3293
+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
+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
+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."
+
+#: src/input/input_dvb.c:3305
+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."
+msgstr "Eğer sisteminizde birden fazla kart yoksa bunu sıfırda bırakın."
+
+#: src/input/input_dvd.c:588
+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
+#, 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
+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
+msgid "device used for DVD playback"
+msgstr "DVD oynatmak için kullanılacak aygıt"
+
+#: src/input/input_dvd.c:1785
+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ü."
+
+#: src/input/input_dvd.c:1803
+msgid "raw device set up for DVD access"
+msgstr "DVD girişi için yeni aygıt ayarı"
+
+#: src/input/input_dvd.c:1804
+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 "
+"and of bypassing the block device cache, which avoids throwing away "
+"important cache content by keeping DVD data cached. Using the block device "
+"cache for DVDs is useless, because almost all DVD data will be used only "
+"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"
+"Daha fazla bilgi için yeni aygıt ayarı (man raw) belgesine bakınız."
+
+#: src/input/input_dvd.c:1817
+msgid "CSS decryption method"
+msgstr "CSS şifre çözme yöntemi"
+
+#: src/input/input_dvd.c:1818
+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."
+
+#: src/input/input_dvd.c:1826
+msgid "path to the title key cache"
+msgstr "anahtar bellek başlığı yolu"
+
+#: src/input/input_dvd.c:1827
+msgid ""
+"Since cracking the copy protection of scrambled DVDs can be quite time "
+"consuming, libdvdcss will cache the cracked keys in this directory.\n"
+"This setting is security critical, because files with uncontrollable names "
+"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."
+
+#: src/input/input_dvd.c:1849
+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
+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."
+
+#: src/input/input_dvd.c:1856
+msgid "default language for DVD playback"
+msgstr "DVD oynatmak için öntanımlı dil"
+
+#: src/input/input_dvd.c:1857
+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"
+"Dil kodu değerinin iki karakterli ISO639 dil kodu olması gereklidir."
+
+#: src/input/input_dvd.c:1863
+msgid "read-ahead caching"
+msgstr "tamponlama boyunca oku"
+
+#: src/input/input_dvd.c:1864
+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."
+
+#: src/input/input_dvd.c:1870
+msgid "unit for the skip action"
+msgstr "atlama eylemi için birim"
+
+#: src/input/input_dvd.c:1871
+msgid ""
+"You can configure the behaviour when issuing a skip command (using the skip "
+"buttons for example). The individual values mean:\n"
+"\n"
+"skip program\n"
+"will skip a DVD program, which is a navigational unit similar to the index "
+"marks on an audio CD; this is the normal behaviour for DVD players\n"
+"\n"
+"skip part\n"
+"will skip a DVD part, which is a structural unit similar to the track marks "
+"on an audio CD; parts usually coincide with programs, but parts can be "
+"larger than programs\n"
+"\n"
+"skip title\n"
+"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"
+"\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"
+"\n"
+"başlığı atla\n"
+"DVD'deki tüm özellikleri gösteren yapısal bir birim olan DVD başılığını atlayacaktır"
+
+#: src/input/input_dvd.c:1886
+msgid "unit for seeking"
+msgstr "arama birimi"
+
+#: src/input/input_dvd.c:1887
+msgid ""
+"You can configure the domain spanned by the seek slider. The individual "
+"values mean:\n"
+"\n"
+"seek in program chain\n"
+"seeking will span an entire DVD program chain, which is a navigational unit "
+"representing the entire video stream of the current feature\n"
+"\n"
+"seek in program\n"
+"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"
+"\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"
+
+#: src/input/input_dvd.c:1898
+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
+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"
+"\n"
+"entire dvd\n"
+"play the entire dvd starting on the specified position.\n"
+"\n"
+"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"
+"\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
+#, c-format
+msgid "input_file: read error (%s)\n"
+msgstr "input_file: okuma hatası (%s)\n"
+
+#: src/input/input_file.c:361
+#, c-format
+msgid "input_file: Permission denied: >%s<\n"
+msgstr "input_file: İzin verilmedi: >%s<\n"
+
+#: src/input/input_file.c:365
+#, 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
+#, c-format
+msgid "input_file: File empty: >%s<\n"
+msgstr "input_file: Dosya boş: >%s<\n"
+
+#: src/input/input_file.c:624
+msgid "file input plugin"
+msgstr "dosya girdi eklentisi"
+
+#: src/input/input_file.c:993
+msgid "file browsing start location"
+msgstr "dosya açma başlangıç konumu"
+
+#: src/input/input_file.c:994
+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
+msgid "list hidden files"
+msgstr "gizli dosyaları listele"
+
+#: src/input/input_file.c:1002
+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."
+
+#: src/input/input_gnome_vfs.c:216
+msgid "gnome-vfs input plugin as shipped with xine"
+msgstr "xine ile birlikte gelen gnome vfs girişi"
+
+#: src/input/input_http.c:176
+#, 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
+#, c-format
+msgid "input_http: read error %d\n"
+msgstr "input_http: okuma hatası %d\n"
+
+#: src/input/input_http.c:648
+msgid "Connecting HTTP server..."
+msgstr "HTTP sunucusuna bağlanılıyor..."
+
+#: src/input/input_http.c:840
+#, c-format
+msgid "input_http: invalid http answer\n"
+msgstr "input_http: geçersiz http yanıtı\n"
+
+#: src/input/input_http.c:846
+#, 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
+#, 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
+#, 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
+#, 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
+msgid "http input plugin"
+msgstr "http girdi eklentisi"
+
+#: src/input/input_http.c:1121
+msgid "HTTP proxy host"
+msgstr "HTTP vekil sunucu makinesi"
+
+#: src/input/input_http.c:1121
+msgid "The hostname of the HTTP proxy."
+msgstr "HTTP vekil sunucusu için makine adı."
+
+#: src/input/input_http.c:1125
+msgid "HTTP proxy port"
+msgstr "HTTP vekil sunucu portu"
+
+#: src/input/input_http.c:1125
+msgid "The port number of the HTTP proxy."
+msgstr "HTTP vekil sunucusu için port numarası."
+
+#: src/input/input_http.c:1135
+msgid "HTTP proxy username"
+msgstr "HTTP vekil sunucu kullanıcı adı"
+
+#: src/input/input_http.c:1136
+msgid "The user name for the HTTP proxy."
+msgstr "HTTP vekil sunucusu için kullanıcı adı."
+
+#: src/input/input_http.c:1139
+msgid "HTTP proxy password"
+msgstr "HTTP vekil sunucu parolası"
+
+#: src/input/input_http.c:1140
+msgid "The password for the HTTP proxy."
+msgstr "HTTP vekil sunucusu için parola."
+
+#: src/input/input_http.c:1143
+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
+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)."
+
+#: src/input/input_mms.c:441
+msgid "mms streaming input plugin"
+msgstr "mms yayın girdi eklentisi"
+
+#: src/input/input_mms.c:477 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
+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."
+
+#: src/input/input_mms.c:487
+msgid "MMS protocol"
+msgstr "MMS protokolü"
+
+#: src/input/input_mms.c:488
+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."
+
+#: 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: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:180 src/input/input_net.c:222
+#, c-format
+msgid "input_net: unable to resolve '%s'.\n"
+msgstr "input_net: '%s' çözümlenemedi.\n"
+
+#: 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: '%s' konumuna bağlanılamadı.\n"
+
+#: src/input/input_net.c:508
+msgid "net input plugin as shipped with xine"
+msgstr "xine ile birlikte gelen ağ girişi eklentisi"
+
+#: src/input/input_pnm.c:262
+msgid "pnm streaming input plugin"
+msgstr "pnm yayın girdi eklentisi"
+
+#: src/input/input_pvr.c:601
+#, 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
+#, 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
+#, 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
+#, 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
+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"
+
+#: src/input/input_pvr.c:1164 src/input/input_pvr.c:1418
+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"
+
+#: src/input/input_pvr.c:1526
+msgid "WinTV-PVR 250/350 input plugin"
+msgstr "WinTV-PVR 250/350 girdi eklentisi"
+
+#: src/input/input_pvr.c:1552
+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
+msgid "The path to the device of your WinTV card."
+msgstr "WinTV kartınızın aygıt yolu."
+
+#: src/input/input_rtp.c:183
+#, c-format
+msgid "socket(): %s.\n"
+msgstr "socket(): %s.\n"
+
+#: src/input/input_rtp.c:193
+msgid "IP address specified is multicast\n"
+msgstr "IP adresi çoklu yayın olarak belirlendi\n"
+
+#: 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:210
+#, c-format
+msgid "setsockopt(SO_REUSEADDR): %s.\n"
+msgstr "setsockopt(SO_REUSEADDR): %s.\n"
+
+#: src/input/input_rtp.c:217
+#, c-format
+msgid "bind(): %s.\n"
+msgstr "bind(): %s.\n"
+
+#: src/input/input_rtp.c:237
+#, c-format
+msgid "Can't find address for iface %s:%s\n"
+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"
+
+#: src/input/input_rtp.c:277
+#, c-format
+msgid "unable to resolve '%s'.\n"
+msgstr "'%s' çözümlenemedi.\n"
+
+#: src/input/input_rtp.c:287
+#, c-format
+msgid "unable to bind to '%s'.\n"
+msgstr "Buraya bağlanamadı %s'.\n"
+
+#: src/input/input_rtp.c:336
+#, c-format
+msgid "recv(): %s.\n"
+msgstr "recv(): %s.\n"
+
+#: src/input/input_rtp.c:630
+msgid "RTP: stopping reading thread...\n"
+msgstr "RTP: okuma işini durduruyor...\n"
+
+#: src/input/input_rtp.c:633
+msgid "RTP: reading thread terminated\n"
+msgstr "RTP: okuma işi kapatıldı\n"
+
+#: src/input/input_rtp.c:648
+#, 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
+#, 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
+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
+msgid "rtsp streaming input plugin"
+msgstr "rtsp yayın girdi eklentisi"
+
+#: src/input/input_smb.c:156
+msgid "CIFS/SMB input plugin based on libsmbclient"
+msgstr "libsmbclient temelli CIFS/SMB girdi eklentisi"
+
+#: src/input/input_stdin_fifo.c:164
+#, 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
+#, c-format
+msgid "stdin: failed to open '%s'\n"
+msgstr "stdin: '%s' açılamadı\n"
+
+#: src/input/input_stdin_fifo.c:348
+msgid "stdin streaming input plugin"
+msgstr "stdin yayın girdi eklentisi"
+
+#: src/input/input_v4l.c:379
+msgid "Buffer underrun..."
+msgstr "Tampon bellek zayıfladı..."
+
+#: src/input/input_v4l.c:383
+msgid "Buffer overrun..."
+msgstr "Tampon bellek aşımı..."
+
+#: src/input/input_v4l.c:386
+msgid "Adjusting..."
+msgstr "Ayarlanıyor..."
+
+#: src/input/input_v4l.c:658
+msgid "Tuner name not found\n"
+msgstr "Tuner adı bulunamadı\n"
+
+#: src/input/input_v4l.c:1874
+msgid "v4l tv input plugin"
+msgstr "v4l tv girdi eklentisi"
+
+#: src/input/input_v4l.c:1878
+msgid "v4l radio input plugin"
+msgstr "v4l radyo girdi eklentisi"
+
+#: src/input/input_v4l.c:1910
+msgid "v4l video device"
+msgstr "v4l görüntü aygıtı"
+
+#: src/input/input_v4l.c:1911
+msgid "The path to your Video4Linux video device."
+msgstr "Video4Linux görüntü aygıtının yolu."
+
+#: src/input/input_v4l.c:1936
+msgid "v4l radio device"
+msgstr "v4l radyo aygıtı"
+
+#: src/input/input_v4l.c:1937
+msgid "The path to your Video4Linux radio device."
+msgstr "Video4Linux radyo aygıtının yolu."
+
+#: src/input/input_vcd.c:847
+msgid "input_vcd: malformed MRL. Use vcdo:/<track #>\n"
+msgstr "input_vcd: bozuk MRL. vcdo:/<track #> kullanın\n"
+
+#: src/input/input_vcd.c:853
+#, c-format
+msgid "input_vcd: invalid track %d (valid range: 0 .. %d)\n"
+msgstr "input_vcd: geçersiz iz %d (geçerli oran: 0 .. %d)\n"
+
+#: src/input/input_vcd.c:920
+msgid "Video CD input plugin"
+msgstr "Video CD girdi eklentisi"
+
+#: src/input/input_vcd.c:965
+#, c-format
+msgid "unable to open %s: %s.\n"
+msgstr "%s açılamadı: %s.\n"
+
+#: src/input/input_vcd.c:1041
+#, 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
+msgid "device used for VCD playback"
+msgstr "VCD oynatmak için kullanılan aygıt"
+
+#: src/input/input_vcd.c:1096
+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."
+
+#: src/input/librtsp/rtsp.c:448
+#, c-format
+msgid "rtsp: bad mrl: %s\n"
+msgstr "rtsp: bozuk mrl: %s\n"
+
+#: src/input/librtsp/rtsp.c:508
+#, c-format
+msgid "rtsp: failed to connect to '%s'\n"
+msgstr "rtsp: '%s' konumuna bağlanılamadı\n"
+
+#: src/input/librtsp/rtsp_session.c:107
+#, c-format
+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
+msgid "rtsp_session: session can not be established.\n"
+msgstr "rtsp_session: oturuma erişilemedi.\n"
+
+#: src/input/librtsp/rtsp_session.c:159
+#, 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"
+
+#: src/input/media_helper.c:148
+#, c-format
+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
+msgid "Connecting MMS server (over tcp)..."
+msgstr "MMS sunucusuna bağlanılıyor (tcp üzerinden)..."
+
+#: src/input/mmsh.c:199
+msgid "libmmsh: send error\n"
+msgstr "libmmsh: gönderme hatası\n"
+
+#: src/input/mmsh.c:244
+#, c-format
+msgid "libmmsh: bad response format\n"
+msgstr "libmmsh: kötü yanıt biçimi\n"
+
+#: src/input/mmsh.c:250
+#, 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
+#, 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
+#, c-format
+msgid "libmmsh: Location redirection not implemented\n"
+msgstr "libmmsh: Konum yeniden yönlendirmesi uygulamaya eklenmedi\n"
+
+#: src/input/mmsh.c:474
+msgid "Connecting MMS server (over http)..."
+msgstr "MMS sunucuya bağlanılıyor (http üzerinden)..."
+
+#: src/input/mmsh.c:655
+#, c-format
+msgid "invalid url\n"
+msgstr "geçersiz adres\n"
+
+#: src/input/mmsh.c:660
+#, c-format
+msgid "unsupported protocol\n"
+msgstr "desteklenmeyen protokol\n"
+
+#: src/input/net_buf_ctrl.c:89
+msgid "Buffering..."
+msgstr "Önbelleğe alınıyor..."
+
+#: src/input/pnm.c:615
+#, c-format
+msgid ""
+"input_pnm: got message from server while reading stream:\n"
+"%s\n"
+msgstr ""
+"input_pnm: yayın akışıniı okurken sunucdan mesaj geldi:\n"
+"%s\n"
+
+#: src/input/pnm.c:753
+#, c-format
+msgid "input_pnm: failed to connect '%s'\n"
+msgstr "input_pnm: '%s' konumuna bağlanılamadı\n"
+
+#: src/input/pnm.c:764
+msgid "input_pnm: failed to set up stream\n"
+msgstr "input_pnm: akış ayarlaması başarısız oldu\n"
+
+#: src/input/vcd/vcdio.c:222
+msgid "SEEK_CUR not implemented for non-zero offset"
+msgstr "SEEK_CUR sıfır-dışı kolu için yerine getirilemedi"
+
+#: src/input/vcd/vcdio.c:250
+msgid "SEEK_END not implemented yet."
+msgstr "SEEK_END henüz tamamlanmadı."
+
+#: src/input/vcd/vcdio.c:253
+msgid "seek not implemented yet for"
+msgstr "için arama henüz tamamlanmadı"
+
+#: src/input/vcd/vcdplayer.c:94
+msgid "bad item type"
+msgstr "hatalı öge tipi"
+
+#: src/input/vcd/vcdplayer.c:458
+msgid "bad entry number"
+msgstr "hatalı girdi numarası"
+
+#: src/input/vcd/vcdplayer.c:491
+msgid "bad segment number"
+msgstr "hatalı parça numarası"
+
+#: src/input/vcd/vcdplayer.c:501
+msgid "Error in getting current segment number"
+msgstr "Geçerli bölüm numarası alma hatası"
+
+#: src/input/vcd/vcdplayer.c:589
+msgid "Should have converted this above"
+msgstr "Bunun yukarıdakine dönüştürülmesi gerekirdi"
+
+#: src/input/vcd/xineplug_inp_vcd.c:191
+msgid "failed to find a device with a VCD"
+msgstr "VCD içeren aygıt bulunamadı"
+
+#: src/input/vcd/xineplug_inp_vcd.c:328
+msgid "was passed a null class parameter"
+msgstr "geçersiz sınıf parametresi atlandı"
+
+#: src/input/vcd/xineplug_inp_vcd.c:990
+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:1115
+msgid "selection has no RETURN entry"
+msgstr "seçim hiç RETURN girişe sahip değil"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1144
+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
+msgid "selection has no NEXT entry"
+msgstr "seçim hiç NEXT girişe sahip değil"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1157
+msgid "selection has no PREVIOUS entry"
+msgstr "seçim hiç PREVIOUS girişe sahip değil"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1164
+msgid "Unknown event type: "
+msgstr "Bilinmeyen olay tipi: "
+
+#: src/input/vcd/xineplug_inp_vcd.c:1460 src/input/vcd/xineplug_inp_vcd.c:1507
+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
+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
+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:"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1849
+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
+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."
+
+#: src/input/vcd/xineplug_inp_vcd.c:1860
+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:1869
+msgid "VCD read-ahead caching?"
+msgstr "Bellekleme yerine doğrudan VCD'yi okusun mu?"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1870
+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
+msgid "automatically advance VCD track/entry"
+msgstr "VCD iz/giriş yapılarında otomatik ilerleme"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1881
+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."
+
+#: src/input/vcd/xineplug_inp_vcd.c:1890
+msgid "show 'rejected' VCD LIDs"
+msgstr "reddedilen VCD'leri göster"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1891
+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."
+
+#: src/input/vcd/xineplug_inp_vcd.c:1902
+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
+msgid ""
+"VCD format used in the GUI Title. Similar to the Unix date command. Format "
+"specifiers start with a percent sign. Specifiers are:\n"
+" %A : The album information\n"
+" %C : The VCD volume count - the number of CD's in the collection.\n"
+" %c : The VCD volume num - the number of the CD in the collection.\n"
+" %F : The VCD Format, e.g. VCD 1.0, VCD 1.1, VCD 2.0, or SVCD\n"
+" %I : The current entry/segment/playback type, e.g. ENTRY, TRACK, ...\n"
+" %L : The playlist ID prefixed with \" LID\" if it exists\n"
+" %N : The current number of the above - a decimal number\n"
+" %P : The publisher ID\n"
+" %p : The preparer ID\n"
+" %S : If we are in a segment (menu), the kind of segment\n"
+" %T : The track number\n"
+" %V : The volume set ID\n"
+" %v : The volume ID\n"
+" 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"
+" %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"
+" %F : Şu anki girdi/kesit/çalma türü, v.b. GİRDİ, İZ, ...\n"
+" %L : Eğer varsa \" LID\" önekli liste bilgisi\n"
+" %N : Yukardakinin numarası - bir ondalık sayı\n"
+" %P : Yayımcı kimliği\n"
+" %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"
+".......Ses ayarı sayısı ile 1 arası bir sayı.\n"
+" %% : a %\n"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1928
+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
+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"
+"Bunların anlamları için başlık_kipi yardım dosyasına bakınız."
+
+#: src/input/vcd/xineplug_inp_vcd.c:1941
+msgid "VCD debug flag mask"
+msgstr "VCD hata ayıklaması bayrak maskesi"
+
+#: src/input/vcd/xineplug_inp_vcd.c:1942
+msgid ""
+"For tracking down bugs in the VCD plugin. Mask values are:\n"
+" 1: Meta information\n"
+" 2: input (keyboard/mouse) events\n"
+" 4: MRL parsing\n"
+" 8: Calls from external routines\n"
+" 16: routine calls\n"
+" 32: LSN changes\n"
+" 64: Playback control\n"
+" 128: Debugging from CDIO\n"
+" 256: Seeks to set location\n"
+" 512: Seeks to find current location\n"
+"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"
+"...1: Meta bilgisi\n"
+"...2: giriş (klavye/fare) olayları\n"
+"...4: MRL incelemesi\n"
+"...8: Dış yordamlar gelen çağrılar\n"
+"..16: yordam çağrıları\n"
+"..32: LSN değişiklikleri\n"
+" 64: Çalma denetimi\n"
+".128: CDIO'dan hata ayıklama\n"
+".256: Bölgeyi ayarlama için yapılan arama\n"
+" 512: Şu anki bölgesi bulmak için yapılan arama\n"
+"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
+msgid "HELP! a mono-only audio driver?!\n"
+msgstr "YARDIM! sadece mono olan bir ses sürücüsü mü?!\n"
+
+#: src/liba52/xine_a52_decoder.c:820
+msgid "A/52 volume"
+msgstr "A/52 sesi"
+
+#: 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, "
+"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."
+
+#: src/liba52/xine_a52_decoder.c:829
+msgid "use A/52 dynamic range compression"
+msgstr "dinamik alan sıkıştırılması için A/52 kullan"
+
+#: 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 "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"
+msgstr "sesi 2 kanal surround stereo'ya indirge"
+
+#: 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 "
+"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"
+
+#: src/libfaad/xine_faad_decoder.c:128
+msgid "libfaad: libfaad NeAACDecOpen() failed.\n"
+msgstr "libfaad: libfaad NeAACDecOpen() başarılamadı.\n"
+
+#: src/libfaad/xine_faad_decoder.c:137
+msgid "libfaad: libfaad NeAACDecInit2 failed.\n"
+msgstr "libfaad: libfaad NeAACDecInit2 başarılamadı.\n"
+
+#: src/libfaad/xine_faad_decoder.c:148
+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
+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
+msgid "libmusepack: mpc_decoder_initialise failed\n"
+msgstr "libmusepack: mpc_decoder_initialise başarılamadı\n"
+
+#: 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 başarılamadı: %d\n"
+
+#: src/libreal/real_common.c:139
+msgid "path to RealPlayer codecs"
+msgstr "RealPlayer kodları yolu"
+
+#: 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 "
+"\"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."
+
+#: src/libreal/xine_real_video_decoder.c:162
+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
+#, 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
+#, 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
+#, 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
+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
+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:197
+msgid "closed-captioning foreground/background scheme"
+msgstr "kapalı başlık ön/arka şeması"
+
+#: src/libspucc/xine_cc_decoder.c:198
+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
+msgid "standard closed captioning font"
+msgstr "standart kapalı başlık yazı tipi"
+
+#: src/libspucc/xine_cc_decoder.c:205
+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
+msgid "italic closed captioning font"
+msgstr "italik kapalı başlık yazı tipi"
+
+#: src/libspucc/xine_cc_decoder.c:212
+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
+msgid "closed captioning font size"
+msgstr "Kapalı başlık yazı tipi boyutu"
+
+#: src/libspucc/xine_cc_decoder.c:219
+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
+msgid "center-adjust closed captions"
+msgstr "Ortalanmış kapalı başlıklar"
+
+#: src/libspucc/xine_cc_decoder.c:224
+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
+msgid "font for external subtitles"
+msgstr "dış altyazılar için yazı tipi"
+
+#: src/libspucmml/xine_cmml_decoder.c:483
+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
+msgid "encoding of subtitles"
+msgstr "altyazıların kodlanması"
+
+#: src/libsputext/demux_sputext.c:1504
+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
+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."
+
+#: src/libsputext/xine_sputext_decoder.c:928
+msgid "subtitle size"
+msgstr "altyazı büyüklüğü"
+
+#: src/libsputext/xine_sputext_decoder.c:929
+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."
+
+#: src/libsputext/xine_sputext_decoder.c:935
+msgid "subtitle vertical offset"
+msgstr "altyazı dikey konumu"
+
+#: src/libsputext/xine_sputext_decoder.c:936
+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."
+
+#: src/libsputext/xine_sputext_decoder.c:942
+#: src/libsputext/xine_sputext_decoder.c:951
+msgid "font for subtitles"
+msgstr "altyazılar için yazı tipi"
+
+#: src/libsputext/xine_sputext_decoder.c:943
+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."
+
+#: src/libsputext/xine_sputext_decoder.c:952
+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)"
+
+#: src/libsputext/xine_sputext_decoder.c:958
+msgid "whether to use a freetype font"
+msgstr "bir freetype yazı tipinin kullanılıp kullanılmayacağı"
+
+#: src/libsputext/xine_sputext_decoder.c:965
+msgid "encoding of the subtitles"
+msgstr "alt yazılar kodlanıyor"
+
+#: src/libsputext/xine_sputext_decoder.c:966
+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."
+
+#: src/libsputext/xine_sputext_decoder.c:974
+msgid "use unscaled OSD if possible"
+msgstr "eğer mümkünse hesaplanmamış OSD kullanın"
+
+#: src/libsputext/xine_sputext_decoder.c:975
+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."
+
+#: src/libw32dll/common.c:17
+msgid "path to Win32 codecs"
+msgstr "lWin32 kodlayıcılarının yolu"
+
+#: src/libw32dll/common.c:18
+msgid ""
+"If you have the Windows or Apple Quicktime codec packs installed, specify "
+"the path the codec directory here. If xine can find the Windows or Apple "
+"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."
+
+#: 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"
+
+#: 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"
+
+#: src/libw32dll/w32codec.c:627
+#, c-format
+msgid "w32codec: ICDecompressQuery failed: Error %ld\n"
+msgstr "w32codec: ICDecompressQuery başarılamadı: Hata %ld\n"
+
+#: src/libw32dll/w32codec.c:638
+#, c-format
+msgid "w32codec: ICDecompressBegin failed: Error %ld\n"
+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"
+
+#: 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"
+
+#: src/libw32dll/w32codec.c:815 src/libw32dll/w32codec.c:1484
+#, c-format
+msgid "w32codec: decoder failed to start. Is '%s' installed?\n"
+msgstr "w32codec: kod çözümleyici başlayamadı. Yoksa '%s' kurulmadı mı?\n"
+
+#: src/libw32dll/w32codec.c:1218
+#, c-format
+msgid "w32codec: (ACM_Decoder) Unappropriate audio format\n"
+msgstr "w32codec: (ACM_Decoder) Uyumusuz ses kipi\n"
+
+#: src/libw32dll/w32codec.c:1221
+#, c-format
+msgid "w32codec: (ACM_Decoder) acmStreamOpen error %d\n"
+msgstr "w32codec: (ACM_Decoder) acmStreamOpen hatası %d\n"
+
+#: src/libw32dll/w32codec.c:1240
+#, c-format
+msgid "w32codec: Error initializing DirectShow Audio\n"
+msgstr "w32codec: DirectShow Audio sıfırlamada hata\n"
+
+#: src/libw32dll/w32codec.c:1258
+#, c-format
+msgid "w32codec: Error initializing DMO Audio\n"
+msgstr "w32codec: DMO Audio sıfırlamada hata\n"
+
+#: src/libxinevdec/bitplane.c:1270
+#, c-format
+msgid "bitplane: error doing ByteRun1 decompression\n"
+msgstr "bitplane: ByteRun1 sıkıştırmasında hata\n"
+
+#: src/libxinevdec/bitplane.c:1329
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid "bitplane: This anim-type is not supported at the moment\n"
+msgstr "bitplane: Bu hareket türü şu anda desteklenmiyor\n"
+
+#: 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, "
+"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"
+
+#: src/post/audio/upmix.c:134
+msgid ""
+"Upmix functions. e.g. Take stereo input and produce Surround 5.1 output.\n"
+"Parameters\n"
+" cut_off_freq\n"
+"\n"
+"Note: It is possible to use frontend's control window to set these "
+"parameters.\n"
+"\n"
+msgstr ""
+"Ç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"
+"Dikkat: Bu parametreleri öndeki denetim penceresinden ayarlamak mümkündür.\n"
+
+#: 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 "
+"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"
+
+#: src/post/audio/upmix_mono.c:144
+msgid ": upmixing Mono to Stereo.\n"
+msgstr ": Mono'dan Stereo'ya dönüştürme.\n"
+
+#: src/post/audio/upmix_mono.c:149
+#, fuzzy, 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] ": 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
+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"
+
+#: src/post/audio/volnorm.c:147
+msgid ""
+"Normalizes audio by maximizing the volume without distorting the sound.\n"
+"\n"
+"Parameters:\n"
+" method: 1: use a single sample to smooth the variations via the standard "
+"weighted mean over past samples (default); 2: use several samples to smooth "
+"the variations via the standard weighted mean over past samples.\n"
+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 "
+"ya da eski ses örneklerini temel alarak farklı örnekler kullanınız.\n"
+
+#: src/post/deinterlace/xine_plugin.c:202
+msgid ""
+"Advanced tvtime/deinterlacer plugin with pulldown detection\n"
+"This plugin aims to provide deinterlacing mechanisms comparable to high "
+"quality progressive DVD players and so called line-doublers, for use with "
+"computer monitors, projectors and other progressive display devices.\n"
+"\n"
+"Parameters\n"
+"\n"
+" Method: Select deinterlacing method/algorithm to use, see below for "
+"explanation of each method.\n"
+"\n"
+" Enabled: Enable/disable the plugin.\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"
+"\n"
+" Framerate_mode: Selecting 'full' will deinterlace every field to an unique "
+"frame for television quality and beyond. This feature will effetively double "
+"the frame rate, improving smoothness. Note, however, that full 59.94 FPS is "
+"not possible with plain 2.4 Linux kernel (that use a timer interrupt "
+"frequency of 100Hz). Newer RedHat and 2.6 kernels use higher HZ settings "
+"(512 and 1000, respectively) and should work fine.\n"
+"\n"
+" Judder_correction: Once 2-3 pulldown is enabled and a film material is "
+"detected, it is possible to reduce the frame rate to original rate used (24 "
+"FPS). This will make the frames evenly spaced in time, matching the speed "
+"they were shot and eliminating the judder effect.\n"
+"\n"
+" Use_progressive_frame_flag: Well mastered MPEG2 streams uses a flag to "
+"indicate progressive material. This setting control whether we trust this "
+"flag or not (some rare and buggy mpeg2 streams set it wrong).\n"
+"\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 "
+"this option to blur the chroma vertically after deinterlacing to remove the "
+"artifacts. Warning: cpu intensive.\n"
+"\n"
+" Cheap_mode: This will skip the expensive YV12->YUY2 image conversion, "
+"tricking tvtime/dscaler routines like if they were still handling YUY2 "
+"images. Of course, this is not correct, not all pixels will be evaluated by "
+"the algorithms to decide the regions to deinterlace and chroma will be "
+"processed separately. Nevertheless, it allows people with not so fast "
+"systems to try deinterlace algorithms, in a tradeoff between quality and cpu "
+"usage.\n"
+"\n"
+"* Uses several algorithms from tvtime and dscaler projects.\n"
+"Deinterlacing methods: (Not all methods are available for all plataforms)\n"
+"\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"
+"\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"
+"\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"
+"\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"
+"\n"
+
+#: src/post/deinterlace/xine_plugin.c:323
+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"
+
+#: src/post/goom/xine_goom.c:206
+msgid "frames per second to generate"
+msgstr "oluşturulmak üzere saniye başına kareler"
+
+#: 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."
+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"
+msgstr "goom resim genişliği"
+
+#: src/post/goom/xine_goom.c:213
+msgid "The width in pixels of the image to be generated."
+msgstr "İşlenecek olan resmin piksel olarak genişliği."
+
+#: src/post/goom/xine_goom.c:217
+msgid "goom image height"
+msgstr "goom resim yüksekliği"
+
+#: src/post/goom/xine_goom.c:218
+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"
+msgstr "renk dizgesi dönüştürme yöntemi "
+
+#: src/post/goom/xine_goom.c:225
+msgid ""
+"You can choose the colorspace 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"
+"Uygun seçimler açıklamalılar olabilir. "
+
+#: src/post/mosaico/mosaico.c:271
+msgid ""
+"Mosaico does simple picture in picture effects.\n"
+"\n"
+"Parameters\n"
+" pip_num: the number of the picture slot the following settings apply to\n"
+" x: the x coordinate of the left upper corner of the picture\n"
+" y: the y coordinate of the left upper corner of the picture\n"
+" w: the width of the picture\n"
+" h: the height of the picture\n"
+msgstr ""
+"Mosaico resim içinde resim efektidir.\n"
+"\n"
+"Parametreler\n"
+" pip_num: gelen ayarların uygulanacağı resimlerin aralığı\n"
+" x: x, resmin sol üst köşesine giden bağlantıdır\n"
+" y: y resmin sol üst köşesine giden bağlantıdır\n"
+" w: w resmin genişliğidir\n"
+" h: h resmin yüksekliğidir\n"
+
+#: src/post/mosaico/switch.c:228
+msgid ""
+"Switch can be used for fast switching between multiple inputs.\n"
+"\n"
+"Parameters\n"
+" select: the number of the input which will be passed to the output\n"
+msgstr ""
+"Düğme, çoklu girişler arasında hızlı geçiş yapmak için kullanılabilir.\n"
+"\n"
+"Parametreler\n"
+" seç: çıkışa gönderilecek olan girişin sayısı\n"
+
+#: src/post/planar/boxblur.c:101
+msgid ""
+"Box blur does a simple blurring of the image.\n"
+"\n"
+"Parameters\n"
+" Radius: size of the filter\n"
+" Power: how often the filter should be applied\n"
+"\n"
+"* mplayer's boxblur (C) 2002 Michael Niedermayer\n"
+msgstr ""
+"Kutu lekesi resmi basit olarak bulanıklaştırır.\n"
+"\n"
+"Parametreler\n"
+" Radius: süzgeçlerin sayısı\n"
+" Power: süzgeçin ne kadar sıklıkla uygulanacağı ile ilgilidir\n"
+"\n"
+"* mplayer's boxblur (C) 2002 Michael Niedermayer\n"
+
+#: 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 "
+"given from 0 to 3 parameters. If you omit a parameter, a reasonable value "
+"will be inferred.\n"
+"\n"
+"Parameters\n"
+" Luma: Spatial luma strength (default = 4)\n"
+" Chroma: Spatial chroma strength (default = 3)\n"
+" Time: Temporal strength (default = 6)\n"
+"\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"
+"\n"
+"Parametreler\n"
+" Luma: Uzamsal luma kuvveti (öntanımlı = 4)\n"
+" Chroma: Uzamsal renk berraklığı kuvveti (öntanımlı = 3)\n"
+" Time: Maddesel kuvvet (öntanımlı = 6)\n"
+"\n"
+"* mplayer's denoise3d (C) 2003 Daniel Moreno\n"
+
+#: 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 "
+"controls in hardware.\n"
+"\n"
+"Parameters\n"
+" brightness\n"
+" contrast\n"
+"\n"
+"Note: It is possible to use frontend's control window to set these "
+"parameters.\n"
+"\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"
+"\n"
+"Parametreler\n"
+" parlaklık\n"
+" zıtlık\n"
+"\n"
+"Dikkat: Bu parametreleri kullanmak için ön pencere denetimleri kullanabilir.\n"
+"\n"
+"* mplayer's eq (C) Richard Felker\n"
+
+#: 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 "
+"adjustment.\n"
+"Note that it uses the same MMX optimized code as 'eq' if all gamma values "
+"are 1.0.\n"
+"\n"
+"Parameters\n"
+" gamma\n"
+" brightness\n"
+" contrast\n"
+" saturation\n"
+" rgamma (gamma for the red component)\n"
+" ggamma (gamma for the green component)\n"
+" bgamma (gamma for the blue component)\n"
+"\n"
+"Value ranges are 0.1 - 10 for gammas, -2 - 2 for contrast (negative values "
+"result in a negative image), -1 - 1 for brightness and 0 - 3 for "
+"saturation.\n"
+"\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"
+"\n"
+"Parametreler\n"
+" gamma\n"
+" parlaklık\n"
+" zıtlık\n"
+" doyum\n"
+" rgamma (kırmızı bileşen için gamma)\n"
+" 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"
+"\n"
+"* mplayer's eq2 (C) Hampa Hug, Daniel Moreno, Richard Felker\n"
+
+#: src/post/planar/expand.c:251
+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 "
+"the top and bottom of the frame. This allows us to shift overlays down into "
+"the black area so they don't cover the image.\n"
+"\n"
+"Parameters (FIXME: better help)\n"
+" Enable_automatic_shift: Enable automatic overlay shifting\n"
+" Overlay_y_offset: Manually shift the overlay vertically\n"
+" aspect: The target aspect ratio (default 4:3)\n"
+" 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"
+"\n"
+"Parametreler (FIXME: daha çok yardım)\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"
+"\n"
+
+#: src/post/planar/noise.c:400
+msgid ""
+"Adds random noise to the video.\n"
+"\n"
+"Parameters:\n"
+" luma_strength: strength of noise added to luma channel (0-100, default: "
+"8)\n"
+" chroma_strength: strength of noise added to chroma channel (0-100, "
+"default: 5)\n"
+" quality: quality level of the noise. fixed: constant noise pattern; "
+"temporal: noise pattern changes between frames; averaged temporal: smoother "
+"noise pattern that changes between frames. (default: averaged temporal)\n"
+" type: Type of noise: uniform or gaussian. (default: gaussian)\n"
+" pattern: Mix random noise with a (semi)regular pattern. (default: False)\n"
+"\n"
+"* mplayer's noise (C) Michael Niedermayer\n"
+msgstr ""
+"Görüntüye rastgele gürültü ekler.\n"
+"\n"
+"Parametreler:\n"
+" luma_strength: luma kanalına eklenen gürültünün gücü (0-100, öntanımlı: "
+"8)\n"
+" 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"
+" 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"
+"\n"
+"* mplayer's noise (C) Michael Niedermayer\n"
+
+#: src/post/planar/pp.c:106
+msgid ""
+"FFmpeg libpostprocess plugin.\n"
+"\n"
+"Parameters\n"
+"\n"
+msgstr ""
+"FFmpeg libpostprocess eklentisi.\n"
+"\n"
+"Parametreler\n"
+"\n"
+
+#: src/post/planar/pp.c:112
+msgid ""
+"\n"
+"* libpostprocess (C) Michael Niedermayer\n"
+msgstr ""
+"\n"
+"* libpostprocess (C) Michael Niedermayer\n"
+
+#: src/post/planar/unsharp.c:218
+msgid ""
+"Unsharp mask / gaussian blur\n"
+"It is possible to set the width and height of the matrix, odd sized in both "
+"directions (min = 3x3, max = 13x11 or 11x13, usually something between 3x3 "
+"and 7x7) and the relative amount of sharpness/blur to add to the image (a "
+"sane range should be -1.5 - 1.5).\n"
+"\n"
+"Parameters\n"
+"\n"
+" Luma_matrix_width: Width of the matrix (must be odd)\n"
+"\n"
+" Luma_matrix_height: Height of the matrix (must be odd)\n"
+"\n"
+" Luma_amount: Relative amount of sharpness/blur (=0 disable, <0 blur, >0 "
+"sharpen)\n"
+"\n"
+" Chroma_matrix_width: Width of the matrix (must be odd)\n"
+"\n"
+" Chroma_matrix_height: Height of the matrix (must be odd)\n"
+"\n"
+" Chroma_amount: Relative amount of sharpness/blur (=0 disable, <0 blur, >0 "
+"sharpen)\n"
+"\n"
+"\n"
+"* 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"
+"\n"
+"Parametreler\n"
+"\n"
+" Luma_matrix_width: Dizey'in genişliği (tek sayı olmalı)\n"
+"\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"
+"\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"
+"\n"
+"\n"
+"* mplayer's unsharp (C) 2002 Remi Guyomarch\n"
+
+#: src/video_out/video_out_aa.c:308
+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
+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
+msgid "video layer buffering mode"
+msgstr "görüntü katmanı tamponlama kipi"
+
+#: src/video_out/video_out_directfb.c:1342
+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."
+
+#: src/video_out/video_out_directfb.c:1349
+msgid "wait for vertical retrace"
+msgstr "dikey takip için bekleyiniz"
+
+#: src/video_out/video_out_directfb.c:1350
+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\")."
+
+#: src/video_out/video_out_directfb.c:1357
+msgid "enable video color key"
+msgstr "görüntü renk anahtarını etkinleştirin"
+
+#: src/video_out/video_out_directfb.c:1358
+msgid ""
+"Enable using a color 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."
+
+#: src/video_out/video_out_directfb.c:1364
+msgid "video color key"
+msgstr "görüntü renk anahtarı"
+
+#: src/video_out/video_out_directfb.c:1365
+msgid ""
+"The color 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_directfb.c:1374
+msgid "flicker filtering"
+msgstr "titreme filtreleme"
+
+#: src/video_out/video_out_directfb.c:1375
+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."
+
+#: src/video_out/video_out_directfb.c:1382
+msgid "field parity"
+msgstr "alan eşliği"
+
+#: src/video_out/video_out_directfb.c:1383
+msgid ""
+"For an interlaced display, enable controlling the field parity (\"none"
+"\"=disabled)."
+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
+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
+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
+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
+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:1592
+#, 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
+#, 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
+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"
+
+#: src/video_out/video_out_directfb.c:1704
+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"
+
+#: src/video_out/video_out_directfb.c:1782
+msgid "video layer id (auto: -1)"
+msgstr "görüntü katman kimliği (otomatik: -1)"
+
+#: src/video_out/video_out_directfb.c:1783
+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
+#, 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
+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
+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
+msgid "xine video output plugin using DirectFB under XDirectFB."
+msgstr "xine video çıkış eklentisi XDirectFB altında yer alan DirectFB kullanıyor."
+
+#: src/video_out/video_out_directx.c:1236
+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
+msgid ""
+"video_out_fb: only packed truecolor/directcolor is supported (%d).\n"
+" Check 'fbset -i' or try 'fbset -depth 16'.\n"
+msgstr ""
+"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
+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
+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, "
+"xine can be used to fill this file with arbitrary content. So you should be "
+"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."
+
+#: src/video_out/video_out_fb.c:893
+msgid "video_out_fb: Your video mode was not recognized, sorry.\n"
+msgstr "video_out_fb: Video kipiniz tanınamadı, üzgünüm.\n"
+
+#: 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 video RAM ara belleği kullanılabilir.\n"
+
+#: src/video_out/video_out_fb.c:956
+#, c-format
+msgid ""
+"WARNING: video_out_fb: Zero copy buffers are DISABLED because only %d "
+"buffers\n"
+" 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"
+" ö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
+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"
+" ekran panlamasını desteklemez (çerçeve hareketleri için kullanılır.).\n"
+
+#: src/video_out/video_out_fb.c:1036
+#, c-format
+msgid ""
+"WARNING: video_out_fb: current display depth is %d. For better performance\n"
+" a depth of 16 bpp is recommended!\n"
+"\n"
+msgstr ""
+"UYARI: video_out_fb: şu anki görüntü derinliği %d. Daha iyi sonuç için\n"
+" 16 bpp'nin derinliği önerilir!\n"
+"\n"
+
+#: src/video_out/video_out_fb.c:1067
+msgid "Xine video output plugin using the Linux frame buffer device"
+msgstr "Linux çerçeve ara bellek aygıtı için Xine video çıkış eklentisi"
+
+#: src/video_out/video_out_none.c:277
+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
+msgid "OpenGL renderer"
+msgstr "OpenGL uygulayıcısı"
+
+#: src/video_out/video_out_opengl.c:1887
+msgid ""
+"The OpenGL plugin provides several render modules:\n"
+"\n"
+"2D_Tex_Fragprog\n"
+"This module downloads the images as YUV 2D textures and renders a textured "
+"slice\n"
+"using fragment programs for reconstructing RGB.\n"
+"This is the best and fastest method on modern graphics cards.\n"
+"\n"
+"2D_Tex\n"
+"This module downloads the images as 2D textures and renders a textured "
+"slice.\n"
+"2D_Tex_Tiled\n"
+"This module downloads the images as multiple 2D textures and renders a "
+"textured\n"
+"slice. Thus this works with smaller maximum texture sizes as well.\n"
+"Image_Pipeline\n"
+"This module uses glDraw() to render the images.\n"
+"Only accelerated on few drivers.\n"
+"Does not interpolate on scaling.\n"
+"\n"
+"Cylinder\n"
+"Shows images on a rotating cylinder. Nice effect :)\n"
+"\n"
+"Environment_Mapped_Torus\n"
+"Show images reflected in a spinning torus. Way cool =)"
+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"
+"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"
+"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"
+"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"
+"Ölçeklemeyi etkilemez.\n"
+"\n"
+"Cylinder\n"
+"Resimlerin dönen silindirde gösterir. Güzel efekt :)\n"
+"\n"
+"Environment_Mapped_Torus\n"
+"Resimleri eğilip bükülen halkada yansıtarak gösterir. Harika =)"
+
+#: src/video_out/video_out_opengl.c:1909
+msgid "OpenGL minimum framerate"
+msgstr "OpenGL en az çerçeve oranı"
+
+#: src/video_out/video_out_opengl.c:1910
+msgid ""
+"Minimum framerate for animated render routines.\n"
+"Ignored for static render routines.\n"
+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
+msgid "enable double buffering"
+msgstr "çift ara belleğe almayı etkinleştir"
+
+#: src/video_out/video_out_opengl.c:1916
+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"
+"aynı zamanda titremeyi de oldukça azaltır.\n"
+"Bunun performansa herhangi bir etkisi olmaz."
+
+#: src/video_out/video_out_opengl.c:1963
+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
+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"
+
+#: 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: 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"
+
+#: src/video_out/video_out_pgx64.c:278
+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"
+
+#: 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: Hata: çerçeve ara belleği aygıtını açamıyor '%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: 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"
+
+#: 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"
+
+#: src/video_out/video_out_pgx64.c:352
+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
+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"
+
+#: src/video_out/video_out_pgx64.c:840
+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
+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"
+
+#: src/video_out/video_out_pgx64.c:1394
+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
+msgid "video overlay colour key"
+msgstr "görüntü üstyazım renk anahtarı"
+
+#: 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 "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"
+msgstr "renk berraklığı anahtarlamayı etkinleştir"
+
+#: 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 "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"
+msgstr "çoklu-tamponlamayı etkinleştir"
+
+#: src/video_out/video_out_pgx64.c:1474
+msgid ""
+"Multi buffering increases performance at the expense of using more graphics "
+"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
+msgid "use hardware acceleration if available"
+msgstr "olanaklı ise donanım hızlandırması kullan"
+
+#: src/video_out/video_out_sdl.c:481
+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."
+
+#: src/video_out/video_out_sdl.c:523
+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"
+
+#: src/video_out/video_out_sdl.c:560
+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
+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"
+
+#: 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"
+
+#: src/video_out/video_out_syncfb.c:280
+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"
+
+#: src/video_out/video_out_syncfb.c:296
+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"
+
+#: src/video_out/video_out_syncfb.c:938
+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"
+
+#: src/video_out/video_out_syncfb.c:943
+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"
+
+#: src/video_out/video_out_syncfb.c:948
+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"
+
+#: src/video_out/video_out_syncfb.c:954
+msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n"
+msgstr "video_out_syncfb: bilgi. (SyncFB modülü YUY2) parametresini destekler\n"
+
+#: src/video_out/video_out_syncfb.c:961
+msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n"
+msgstr "video_out_syncfb: bilgi. (SyncFB modülü RGB565) parametresini destekler\n"
+
+#: src/video_out/video_out_syncfb.c:966
+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"
+
+#: src/video_out/video_out_syncfb.c:985
+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"
+
+#: src/video_out/video_out_syncfb.c:1009
+msgid "default number of frame repetitions"
+msgstr "çerçeve tekrarlarının öntanımlı numarası"
+
+#: src/video_out/video_out_syncfb.c:1010
+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."
+
+#: 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:1076
+msgid "SyncFB device name"
+msgstr "SyncFB aygıt ismi"
+
+#: src/video_out/video_out_syncfb.c:1077
+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, "
+"xine can be used to fill this file with arbitrary content. So you should be "
+"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."
+
+#: src/video_out/video_out_vidix.c:990
+msgid "red intensity"
+msgstr "kırmızı yoğunluğu"
+
+#: src/video_out/video_out_vidix.c:990
+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
+msgid "green intensity"
+msgstr "yeşil yoğunluğu"
+
+#: src/video_out/video_out_vidix.c:995
+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
+msgid "blue intensity"
+msgstr "mavi yoğunluğu"
+
+#: src/video_out/video_out_vidix.c:1000
+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
+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."
+
+#: src/video_out/video_out_vidix.c:1060
+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
+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
+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
+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
+#, 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
+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
+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
+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
+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
+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"
+
+#: src/video_out/video_out_xcbshm.c:155
+#, c-format
+msgid ""
+"video_out_xcbshm: %s: allocating image\n"
+"video_out_xcbshm: => not using MIT Shared Memory extension.\n"
+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
+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: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n"
+
+#: src/video_out/video_out_xcbshm.c:175
+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_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
+#, c-format
+msgid ""
+"\n"
+"\n"
+"WARNING: current display depth is %d. For better performance\n"
+"a depth of 16 bpp is recommended!\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"UYARI: şu anki görüntü derinliği %d. Ama, daha iyi performanstır\n"
+"16 bpp derinliği önerilir!\n"
+"\n"
+
+#: src/video_out/video_out_xcbshm.c:1111
+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"
+
+#: src/video_out/video_out_xcbshm.c:1210
+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
+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
+msgid ""
+"video_out_xcbxv: XvShmCreateImage returned a zero size\n"
+"video_out_xcbxv: => not using MIT Shared Memory extension.\n"
+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
+#, 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_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
+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_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
+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
+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"
+
+#: src/video_out/video_out_xcbxv.c:1339
+#, c-format
+msgid ""
+"video_out_xcbxv: using Xv port %d from adaptor %s for hardware colorspace "
+"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."
+
+#: 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:1455 src/video_out/video_out_xv.c:1508
+#: src/video_out/video_out_xxmc.c:2546
+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/video_out_xcbxv.c:1507
+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
+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
+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
+msgid ""
+"This config setting is deprecated. You should use the new deinterlacing post "
+"processing settings instead.\n"
+"\n"
+"From the old days of analog television, where the even and odd numbered "
+"lines of a video frame would be displayed at different times comes the idea "
+"to increase motion smoothness by also recording the lines at different "
+"times. This is called \"interlacing\". But unfortunately, todays displays "
+"show the even and odd numbered lines as one complete frame all at the same "
+"time (called \"progressive display\"), which results in ugly frame errors "
+"known as comb artifacts. Software deinterlacing is an approach to reduce "
+"these artifacts. The individual values are:\n"
+"\n"
+"none\n"
+"Disables software deinterlacing.\n"
+"\n"
+"bob\n"
+"Interpolates between the lines for moving parts of the image.\n"
+"\n"
+"weave\n"
+"Similar to bob, but with a tendency to preserve the full resolution, better "
+"for high detail in low movement scenes.\n"
+"\n"
+"greedy\n"
+"Very good adaptive deinterlacer, but needs a lot of CPU power.\n"
+"\n"
+"onefield\n"
+"Always interpolates and reduces vertical resolution.\n"
+"\n"
+"onefieldxv\n"
+"Same as onefield, but does the interpolation in hardware.\n"
+"\n"
+"linearblend\n"
+"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"
+"\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"
+"\n"
+"bob\n"
+"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"
+"\n"
+"greedy\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"
+"\n"
+"onefieldxv\n"
+"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."
+
+#: src/video_out/video_out_xcbxv.c:1582 src/video_out/video_out_xv.c:1665
+#: src/video_out/video_out_xxmc.c:2725
+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
+msgid ""
+"video_out_xshm: shared memory error when allocating image\n"
+"video_out_xshm: => not using MIT Shared Memory extension.\n"
+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
+#, c-format
+msgid ""
+"video_out_xshm: %s: allocating image\n"
+"video_out_xshm: => not using MIT Shared Memory extension.\n"
+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
+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: => MIT Paylaşılan Bellek uzantısını kullanmıyor.\n"
+
+#: src/video_out/video_out_xshm.c:242
+msgid ""
+"video_out_xshm: x11 error during shared memory XImage creation\n"
+"video_out_xshm: => not using MIT Shared Memory extension.\n"
+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
+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"
+
+#: src/video_out/video_out_xshm.c:1251
+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
+msgid ""
+"video_out_xv: XvShmCreateImage failed\n"
+"video_out_xv: => not using MIT Shared Memory extension.\n"
+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
+msgid ""
+"video_out_xv: XvShmCreateImage returned a zero size\n"
+"video_out_xv: => not using MIT Shared Memory extension.\n"
+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
+#, c-format
+msgid ""
+"video_out_xv: shared memory error in shmget: %s\n"
+"video_out_xv: => not using MIT Shared Memory extension.\n"
+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
+msgid ""
+"video_out_xv: x11 error during shared memory XImage creation\n"
+"video_out_xv: => not using MIT Shared Memory extension.\n"
+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
+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
+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"
+" 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
+msgid ""
+"video_out_xv: using Xv port %ld from adaptor %s for hardware colorspace "
+"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"
+
+#: src/video_out/video_out_xv.c:1557
+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
+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
+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
+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
+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"
+
+#: src/video_out/video_out_xvmc.c:1744
+#, c-format
+msgid ""
+"video_out_xvmc: using Xv port %ld from adaptor %s\n"
+" for hardware colorspace 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
+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
+msgid " motion compensation acceleration only\n"
+msgstr " sadece hareket bedeli hızlandırılması\n"
+
+#: src/video_out/video_out_xvmc.c:1753
+msgid " no XvMC support \n"
+msgstr " hiçbir XvMC desteği yok \n"
+
+#: src/video_out/video_out_xvmc.c:1754
+#, 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
+msgid ""
+"video_out_xxmc: XvShmCreateImage failed\n"
+"video_out_xxmc: => not using MIT Shared Memory extension.\n"
+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
+msgid ""
+"video_out_xxmc: XvShmCreateImage returned a zero size\n"
+"video_out_xxmc: => not using MIT Shared Memory extension.\n"
+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
+#, c-format
+msgid ""
+"video_out_xxmc: shared memory error in shmget: %s\n"
+"video_out_xxmc: => not using MIT Shared Memory extension.\n"
+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
+msgid ""
+"video_out_xxmc: x11 error during shared memory XImage creation\n"
+"video_out_xxmc: => not using MIT Shared Memory extension.\n"
+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
+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
+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"
+" 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
+msgid ""
+"video_out_xxmc: using Xv port %ld from adaptor %s for hardware colorspace "
+"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"
+
+#: src/video_out/video_out_xxmc.c:2602
+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
+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
+msgid "Make XvMC allocate more frames for better buffering."
+msgstr "Daha iyi tamponlama için XvMC belirlemesini daha fazla çerçeveye atayın."
+
+#: src/video_out/video_out_xxmc.c:2637
+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 ""
+"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"
+
+#: src/video_out/video_out_xxmc.c:2643
+msgid "Unichrome cpu save"
+msgstr "Birleşik Renk Berraklığı işlemci koruması"
+
+#: src/video_out/video_out_xxmc.c:2644
+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"
+"Deneysel.\n"
+
+#: src/video_out/video_out_xxmc.c:2650
+msgid "Fix buggy NVIDIA XvMC subpicture colors"
+msgstr "Sorunlu NVIDIA XvMC altresim renklerini düzeltin."
+
+#: src/video_out/video_out_xxmc.c:2651
+msgid ""
+"There's a bug in NVIDIA's XvMC lib that makes red OSD colors\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"
+
+#: src/video_out/video_out_xxmc.c:2656
+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
+msgid ""
+"When interlacing is enabled for hardware accelerated frames,\n"
+"alternate between top and bottom field at double the frame rate.\n"
+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
+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
+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"
+"daha iyi bir görüntü elde etmenizi sağlayabilir.\n"
+
+#: src/video_out/video_out_xxmc.c:2670
+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
+msgid ""
+"Bob deinterlacing adds some noise to horizontal lines, so disabling it\n"
+"on demand should result in a better OSD picture.\n"
+msgstr ""
+"Bob geri dönüştürme yatay çizgilere bazı gürültüler ekler, bu durumda\n"
+"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
+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"
+
+#: src/video_out/x11osd.c:287 src/video_out/xcbosd.c:281
+msgid "x11osd: error creating window. unscaled overlay disabled.\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
+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"
+
+#: 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/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"
+
+#: 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 "
+"option.\n"
+"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."
+
+#: src/xine-engine/audio_decoder.c:365
+#, c-format
+msgid "audio_decoder: no plugin available to handle '%s'\n"
+msgstr "audio_decoder: kullanılacak bir eklenti yok '%s'\n"
+
+#: src/xine-engine/audio_decoder.c:382
+#, c-format
+msgid "audio_decoder: error, unknown buffer type: %08x\n"
+msgstr "audio_decoder: hata, bilinmeyen ön bellek türü: %08x\n"
+
+#: src/xine-engine/audio_decoder.c:484
+msgid "number of audio buffers"
+msgstr "ses ön belleklerinin sayısı"
+
+#: 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 "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:1248
+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
+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
+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
+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
+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
+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 "
+"sound hardware, which determines the speed of the audio playback. These "
+"clocks are never ticking at the same speed except for some rare cases where "
+"they are physically identical. In general, the two clocks will run drift "
+"after some time, for which xine offers two ways to keep audio and video "
+"synchronized:\n"
+"\n"
+"metronom feedback\n"
+"This is the standard method, which applies a countereffecting video drift, "
+"as soon as the audio drift has accumulated over a threshold.\n"
+"\n"
+"resample\n"
+"For some video hardware, which is limited to a fixed frame rate (like the "
+"DXR3 or other decoder cards) the above does not work, because the video "
+"cannot drift. Therefore we resample the audio stream to make it longer or "
+"shorter to compensate the audio drift error. This does not work for digital "
+"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"
+"\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"
+"\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."
+
+#: src/xine-engine/audio_out.c:2122
+msgid "enable resampling"
+msgstr "yeniden örneklemeyi etkinleştir "
+
+#: src/xine-engine/audio_out.c:2123
+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."
+
+#: src/xine-engine/audio_out.c:2130
+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
+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."
+
+#: src/xine-engine/audio_out.c:2140
+msgid "offset for digital passthrough"
+msgstr "sayısal dönüşüm için eşitleme"
+
+#: src/xine-engine/audio_out.c:2141
+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"
+"Değerin birimi bir PTS tıklamasıdır, ki bu da saniyenin 90000de biridir."
+
+#: src/xine-engine/audio_out.c:2150
+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
+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."
+
+#: src/xine-engine/audio_out.c:2224
+msgid "startup audio volume"
+msgstr "başlangıç ses düzeyi"
+
+#: src/xine-engine/audio_out.c:2225
+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
+msgid "restore volume level at startup"
+msgstr "başlangıçtaki ses seviyesini yeniden yapılandır"
+
+#: src/xine-engine/audio_out.c:2229
+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."
+
+#: src/xine-engine/audio_out.c:2259
+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"
+
+#: 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
+#, 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."
+
+#: src/xine-engine/configfile.c:1038
+#, 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"
+
+#: src/xine-engine/configfile.c:1039
+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
+#, 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
+#, 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"
+
+#: src/xine-engine/configfile.c:1140
+#, 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
+#, 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
+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"
+
+#: src/xine-engine/input_cache.c:170
+#, c-format
+msgid ": open() function should never be called\n"
+msgstr ": open() fonksiyonu asla çağrılamaz\n"
+
+#: src/xine-engine/input_cache.c:353
+#, c-format
+msgid ": input plugin not defined!\n"
+msgstr ": girdi eklentisi tanımlanmadı!\n"
+
+#: 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: kaydedilen veriyi okuma hatası: %s\n"
+
+#: src/xine-engine/input_rip.c:153
+#, c-format
+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
+#, c-format
+msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n"
+msgstr "input_rip: dosyaya yazmada hata %<PRIdMAX> byte: %s\n"
+
+#: src/xine-engine/input_rip.c:182
+#, c-format
+msgid "input_rip: open() function should never be called\n"
+msgstr "input_rip: open() fonksiyonu asla çağrılamaz\n"
+
+#: 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: aramada hata\n"
+
+#: 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: aramada hata: %s\n"
+
+#: src/xine-engine/input_rip.c:396
+#, c-format
+msgid "input_rip: %<PRIdMAX> bytes dropped\n"
+msgstr "input_rip: %<PRIdMAX> byte iptal edildi\n"
+
+#: src/xine-engine/input_rip.c:561
+#, c-format
+msgid "input_rip: input plugin not defined!\n"
+msgstr "input_rip: giriş eklentisi belirtilmedi!\n"
+
+#: src/xine-engine/input_rip.c:567
+#, 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"
+
+#: src/xine-engine/input_rip.c:569
+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ı."
+
+#: src/xine-engine/input_rip.c:576
+#, 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
+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?)"
+
+#: src/xine-engine/input_rip.c:584
+#, c-format
+msgid "input_rip: file name not given!\n"
+msgstr "input_rip: dosya adı verilmemiş!\n"
+
+#: src/xine-engine/input_rip.c:626
+#, c-format
+msgid "input_rip: error opening file %s: %s\n"
+msgstr "input_rip: %s dosyası açılırken hata oluştu: %s\n"
+
+#: src/xine-engine/io_helper.c:252
+#, c-format
+msgid "io_helper: waiting abandoned\n"
+msgstr "io_helper: bekleme bırakıldı\n"
+
+#: src/xine-engine/io_helper.c:259
+#, c-format
+msgid "io_helper: waiting failed: %s\n"
+msgstr "io_helper: bekleme başarısız oldu: %s\n"
+
+#: src/xine-engine/io_helper.c:314
+msgid "failed to get status of socket"
+msgstr "soket durumu alınamadı"
+
+#: src/xine-engine/io_helper.c:388
+#, c-format
+msgid "io_helper: Permission denied\n"
+msgstr "io_helper: İzin verilmedi\n"
+
+#: src/xine-engine/io_helper.c:392
+#, c-format
+msgid "io_helper: File not found\n"
+msgstr "io_helper: Dosya bulunamadı\n"
+
+#: src/xine-engine/io_helper.c:396
+#, c-format
+msgid "io_helper: Connection Refused\n"
+msgstr "io_helper: Bağlantı Reddedildi\n"
+
+#: src/xine-engine/load_plugins.c:208
+#, c-format
+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
+#, 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"
+
+#: src/xine-engine/load_plugins.c:380
+#, c-format
+msgid "priority for %s decoder"
+msgstr "%s kod çözücü için öncelik"
+
+#: src/xine-engine/load_plugins.c:391
+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"
+"0 önceliği kod çözücünün öntanımlı önceliğini ektinleştirir."
+
+#: src/xine-engine/load_plugins.c:419
+#, 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"
+
+#: src/xine-engine/load_plugins.c:436
+#, 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"
+
+#: src/xine-engine/load_plugins.c:492
+#, c-format
+msgid "load_plugins: plugin %s found\n"
+msgstr "load_plugins: %s eklentisi bulundu\n"
+
+#: src/xine-engine/load_plugins.c:495
+#, c-format
+msgid "load_plugins: static plugin found\n"
+msgstr "load_plugins: sabit eklenti bulundu\n"
+
+#: src/xine-engine/load_plugins.c:502
+#, 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
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid "load_plugins: unable to stat %s\n"
+msgstr "load_plugins: stat yapamaz %s\n"
+
+#: src/xine-engine/load_plugins.c:627
+#, c-format
+msgid ""
+"load_plugins: cannot open plugin lib %s:\n"
+"%s\n"
+msgstr ""
+"load_plugins: eklenti kütüphanesini açamıyor %s:\n"
+"%s\n"
+
+#: src/xine-engine/load_plugins.c:642
+#, c-format
+msgid ""
+"load_plugins: can't get plugin info from %s:\n"
+"%s\n"
+msgstr ""
+"load_plugins: ekleni bilgisini şuradan alabilir %s:\n"
+"%s\n"
+
+#: src/xine-engine/load_plugins.c:660
+#, 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
+#, c-format
+msgid ""
+"load_plugins: cannot (stage 2) open plugin lib %s:\n"
+"%s\n"
+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
+#, 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
+#, 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
+#, 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
+#, 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
+msgid ""
+"load_plugins: audio output auto-probing didn't find any usable audio "
+"driver.\n"
+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
+#, c-format
+msgid ""
+"load_plugins: cannot unload plugin lib %s:\n"
+"%s\n"
+msgstr ""
+"load_plugins: eklenti kütüphanesi %s kaldırılamadı:\n"
+"%s\n"
+
+#: src/xine-engine/osd.c:735
+#, 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
+#, 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
+#, 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
+msgid "osd: cannot initialize ft2 library\n"
+msgstr "osd: ft2 kütüphanesi başlatılamadı\n"
+
+#: src/xine-engine/osd.c:847
+#, 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
+#, 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
+#, 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
+#, 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
+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"
+
+#: src/xine-engine/osd.c:1011
+#, c-format
+msgid ""
+"osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", "
+"skipping\n"
+msgstr ""
+"osd: 0x%02X ile başlayan ve \"%s\" kodlamasında bulunan bilinmeyen sıralama, "
+"atlanıyor\n"
+
+#: src/xine-engine/osd.c:1067
+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
+#, 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
+msgid "osd: font isn't defined\n"
+msgstr "osd: yazı tipi belirtilmedi\n"
+
+#: src/xine-engine/osd.c:1171
+msgid "osd: error loading glyph\n"
+msgstr "osd: glyph yüklenirken hata oluştu\n"
+
+#: src/xine-engine/osd.c:1177
+msgid "osd: error in rendering glyph\n"
+msgstr "osd: glyph hazırlanırken hata oluştu\n"
+
+#: src/xine-engine/osd.c:1337
+#, 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
+msgid "osd: error in rendering\n"
+msgstr "osd: hazırlama hatası\n"
+
+#: src/xine-engine/osd.c:1601
+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
+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."
+
+#: src/xine-engine/video_decoder.c:377
+#, 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
+#, 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
+msgid "number of video buffers"
+msgstr "video tamponlarının sayısı"
+
+#: src/xine-engine/video_decoder.c:493
+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."
+
+#: src/xine-engine/video_out.c:640
+#, 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
+#, 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"
+
+#: src/xine-engine/video_out.c:1793
+msgid "default number of video frames"
+msgstr "video çerçevelerinin öntanımlı sayısı"
+
+#: src/xine-engine/video_out.c:1794
+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."
+
+#: src/xine-engine/video_out.c:1833
+msgid "percentage of skipped frames to tolerate"
+msgstr "görmezden gelinecek atlanan çerçeve sayısı"
+
+#: src/xine-engine/video_out.c:1834
+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."
+
+#: src/xine-engine/video_out.c:1839
+msgid "percentage of discarded frames to tolerate"
+msgstr "görmezden gelinecek yoksayılan çerçeve sayısı"
+
+#: src/xine-engine/video_out.c:1840
+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."
+
+#: src/xine-engine/video_out.c:1874
+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"
+
+#: src/xine-engine/vo_scale.c:387
+msgid "horizontal image position in the output window"
+msgstr "çıktı penceresindeki yatay resim konumu"
+
+#: 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"
+"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."
+
+#: src/xine-engine/vo_scale.c:395
+msgid "vertical image position in the output window"
+msgstr "çıktı penceresindeki dikey resim konumu"
+
+#: 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"
+"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."
+
+#: src/xine-engine/vo_scale.c:403
+msgid "disable all video scaling"
+msgstr "tüm video ölçeklemelerini pasifleştir"
+
+#: 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"
+"This of course means that the image will no longer adapt to the size of the "
+"video window and that videos with a pixel aspect ratio other than 1:1, like "
+"anamorphic DVDs, will be shown distorted. But on the other hand, with some "
+"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
+msgid "xine: error while parsing mrl\n"
+msgstr "xine: mrl ayrıştırma hatası\n"
+
+#: src/xine-engine/xine.c:831
+#, c-format
+msgid "xine: found input plugin : %s\n"
+msgstr "xine: bulunan girdi eklentisi : %s\n"
+
+#: src/xine-engine/xine.c:848
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid "xine: join rip input plugin\n"
+msgstr "xine: hızlı giriş eklentisini ekle\n"
+
+#: src/xine-engine/xine.c:928
+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
+#, 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
+msgid "ignoring video\n"
+msgstr "video yoksayılıyor\n"
+
+#: src/xine-engine/xine.c:1001
+msgid "ignoring audio\n"
+msgstr "ses yoksayılıyor\n"
+
+#: src/xine-engine/xine.c:1014
+msgid "ignoring subpicture\n"
+msgstr "altresmi göz ardı ediyor\n"
+
+#: src/xine-engine/xine.c:1027
+msgid "input cache plugin disabled\n"
+msgstr "girdi önbellek eklentisi pasifleştirildi\n"
+
+#: src/xine-engine/xine.c:1098
+#, c-format
+msgid "subtitle mrl opened '%s'\n"
+msgstr "alt yazı mrl dosyası '%s' açıldı\n"
+
+#: src/xine-engine/xine.c:1102
+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
+#, 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
+#, 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"
+
+#: src/xine-engine/xine.c:1161
+#, 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
+#, c-format
+msgid "xine: found demuxer plugin: %s\n"
+msgstr "xine: demuxer eklentisi bulundu: %s\n"
+
+#: src/xine-engine/xine.c:1198
+#, 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
+#, c-format
+msgid "xine: demuxer failed to start\n"
+msgstr "xine: demuxer başlatılamadı\n"
+
+#: src/xine-engine/xine.c:1266
+#, 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
+#, c-format
+msgid "xine_play: demux failed to start\n"
+msgstr "xine_play: demux başlatılamadı\n"
+
+#: src/xine-engine/xine.c:1612
+#, 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
+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
+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
+msgid "media format detection strategy"
+msgstr "ortam biçimi belirleme yöntemi"
+
+#: src/xine-engine/xine.c:1653
+msgid ""
+"xine offers various methods to detect the media format of input to play. The "
+"individual values are:\n"
+"\n"
+"default\n"
+"First try to detect by content, then by file name extension.\n"
+"\n"
+"reverse\n"
+"First try to detect by file name extension, then by content.\n"
+"\n"
+"content\n"
+"Detect by content only.\n"
+"\n"
+"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"
+"\n"
+"default\n"
+"Önce, içerikten tanımaya, sonra da dosya uzantısıyla tanımaya çalışır.\n"
+"\n"
+"reverse\n"
+"Önce, dosya uzantısından tanımaya, sonra da içerikten tanımaya çalışır.\n"
+"\n"
+"content\n"
+"Sadece içerikten tanır.\n"
+"\n"
+"extension\n"
+"Sadece dosya adı uzantısından tanır.\n"
+
+#: src/xine-engine/xine.c:1671
+msgid "directory for saving streams"
+msgstr "yayınların kaydedileceği dizin"
+
+#: src/xine-engine/xine.c:1672
+msgid ""
+"When using the stream save feature, files will be written only into this "
+"directory.\n"
+"This setting is security critical, because when changed to a different "
+"directory, xine can be used to fill files in it with arbitrary content. So "
+"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."
+
+#: src/xine-engine/xine.c:1683
+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)"
+
+#: src/xine-engine/xine.c:1684
+msgid ""
+"If enabled, you allow xine to change your configuration without explicit "
+"actions from your side. For example configuration changes demanded by MRLs "
+"or embedded into playlist will be executed.\n"
+"This setting is security critcal, because xine can receive MRLs or playlists "
+"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."
+
+#: src/xine-engine/xine.c:1698
+msgid "Timeout for network stream reading (in seconds)"
+msgstr "Ağ yayını okumada zaman aşımı (saniye olarak)"
+
+#: src/xine-engine/xine.c:1699
+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."
+
+#: src/xine-engine/xine.c:2051
+msgid "messages"
+msgstr "iletiler"
+
+#: src/xine-engine/xine.c:2052
+msgid "plugin"
+msgstr "eklenti"
+
+#: src/xine-engine/xine.c:2053
+msgid "trace"
+msgstr "iz"
+
+#: src/xine-engine/xine_interface.c:955
+msgid "Warning:"
+msgstr "Uyarı:"
+
+#: src/xine-engine/xine_interface.c:956
+msgid "Unknown host:"
+msgstr "Bilinmeyen makine:"
+
+#: src/xine-engine/xine_interface.c:957
+msgid "Unknown device:"
+msgstr "Bilinmeyen aygıt:"
+
+#: src/xine-engine/xine_interface.c:958
+msgid "Network unreachable"
+msgstr "Ağ erişilebilir değil"
+
+#: src/xine-engine/xine_interface.c:959
+msgid "Connection refused:"
+msgstr "Bağlantı reddedildi:"
+
+#: src/xine-engine/xine_interface.c:960
+msgid "File not found:"
+msgstr "Dosya bulunamadı:"
+
+#: src/xine-engine/xine_interface.c:961
+msgid "Read error from:"
+msgstr "Okuma hatası alınan konum:"
+
+#: src/xine-engine/xine_interface.c:962
+msgid "Error loading library:"
+msgstr "Kütüphane yükleme hatası:"
+
+#: src/xine-engine/xine_interface.c:963
+msgid "Encrypted media stream detected"
+msgstr "Şifrelenmiş ortam yayını bulundu"
+
+#: src/xine-engine/xine_interface.c:964
+msgid "Security message:"
+msgstr "Güvenlik iletisi:"
+
+#: src/xine-engine/xine_interface.c:965
+msgid "Audio device unavailable"
+msgstr "Ses aygıtı kullanılamaz"
+
+#: src/xine-engine/xine_interface.c:966
+msgid "Permission error"
+msgstr "Yetki hatası"
+
+#: src/xine-engine/xine_interface.c:967
+msgid "File is empty:"
+msgstr "Dosya boş:"
+
+#: src/xine-utils/memcpy.c:479
+msgid "memcopy method used by xine"
+msgstr "xine tarafından kullanılan memcopy metodu"
+
+#: src/xine-utils/memcpy.c:480
+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."
+
+#: src/xine-utils/memcpy.c:507
+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/audio_dec/xine_mad_decoder.c b/src/audio_dec/xine_mad_decoder.c
index de7590f4e..74c04924f 100644
--- a/src/audio_dec/xine_mad_decoder.c
+++ b/src/audio_dec/xine_mad_decoder.c
@@ -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;
@@ -135,9 +149,10 @@ 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: %d\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",
@@ -156,6 +171,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;
@@ -167,6 +184,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;
+
while (1) {
if (mad_frame_decode (&this->frame, &this->stream) != 0) {
@@ -187,6 +207,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);
}
@@ -253,6 +274,8 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) {
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;
@@ -273,7 +296,22 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) {
}
audio_buffer->num_frames = pcm->length;
- audio_buffer->vpts = buf->pts;
+
+ /* 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;
+ }
this->xstream->audio_out->put_buffer (this->xstream->audio_out, audio_buffer, this->xstream);
diff --git a/src/audio_out/audio_fusionsound_out.c b/src/audio_out/audio_fusionsound_out.c
index a79d21213..b33850c5e 100644
--- a/src/audio_out/audio_fusionsound_out.c
+++ b/src/audio_out/audio_fusionsound_out.c
@@ -47,6 +47,12 @@
#define FUSIONSOUND_VERSION_CODE VERSION_CODE( FUSIONSOUND_MAJOR_VERSION, \
FUSIONSOUND_MINOR_VERSION, \
FUSIONSOUND_MICRO_VERSION )
+
+#if FUSIONSOUND_VERSION_CODE >= VERSION_CODE(1,1,0)
+# include <fusionsound_limits.h> /* defines FS_MAX_CHANNELS */
+#else
+# define FS_MAX_CHANNELS 2
+#endif
#define AO_OUT_FS_IFACE_VERSION 9
@@ -100,7 +106,29 @@ static int ao_fusionsound_open(ao_driver_t *ao_driver,
break;
case AO_CAP_MODE_STEREO:
dsc.channels = 2;
- break;
+ break;
+#if FS_MAX_CHANNELS > 2
+ case AO_CAP_MODE_4CHANNEL:
+ dsc.channels = 4;
+ dsc.channelmode = FSCM_SURROUND40_2F2R;
+ dsc.flags |= FSBDF_CHANNELMODE;
+ break;
+ case AO_CAP_MODE_4_1CHANNEL:
+ dsc.channels = 5;
+ dsc.channelmode = FSCM_SURROUND41_2F2R;
+ dsc.flags |= FSBDF_CHANNELMODE;
+ break;
+ case AO_CAP_MODE_5CHANNEL:
+ dsc.channels = 5;
+ dsc.channelmode = FSCM_SURROUND50;
+ dsc.flags |= FSBDF_CHANNELMODE;
+ break;
+ case AO_CAP_MODE_5_1CHANNEL:
+ dsc.channels = 6;
+ dsc.channelmode = FSCM_SURROUND51;
+ dsc.flags |= FSBDF_CHANNELMODE;
+ break;
+#endif
default:
xprintf (this->xine, XINE_VERBOSITY_LOG,
"audio_fusionsound_out: mode %#x not supported\n", mode);
@@ -250,13 +278,18 @@ static void ao_fusionsound_close(ao_driver_t *ao_driver){
*/
static uint32_t ao_fusionsound_get_capabilities(ao_driver_t *ao_driver) {
+ uint32_t caps = AO_CAP_MODE_MONO | AO_CAP_MODE_STEREO |
+ AO_CAP_MIXER_VOL | AO_CAP_MUTE_VOL |
+ AO_CAP_8BITS | AO_CAP_16BITS |
+ AO_CAP_24BITS;
#if FUSIONSOUND_VERSION_CODE >= VERSION_CODE(0,9,26)
- return (AO_CAP_MODE_MONO | AO_CAP_MODE_STEREO | AO_CAP_MIXER_VOL |
- AO_CAP_8BITS | AO_CAP_16BITS | AO_CAP_24BITS | AO_CAP_FLOAT32);
-#else
- return (AO_CAP_MODE_MONO | AO_CAP_MODE_STEREO | AO_CAP_MIXER_VOL |
- AO_CAP_8BITS | AO_CAP_16BITS | AO_CAP_24BITS);
+ caps |= AO_CAP_FLOAT32;
+#endif
+#if FS_MAX_CHANNELS > 2
+ caps |= AO_CAP_MODE_4CHANNEL | AO_CAP_MODE_4_1CHANNEL |
+ AO_CAP_MODE_5CHANNEL | AO_CAP_MODE_5_1CHANNEL;
#endif
+ return caps;
}
static void ao_fusionsound_exit(ao_driver_t *ao_driver) {
diff --git a/src/audio_out/audio_pulse_out.c b/src/audio_out/audio_pulse_out.c
index b4ec0b156..0235a4321 100644
--- a/src/audio_out/audio_pulse_out.c
+++ b/src/audio_out/audio_pulse_out.c
@@ -246,7 +246,7 @@ static int ao_pulse_open(ao_driver_t *this_gen,
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;
+ goto fail_unlock;
pa_context_set_state_callback(this->pa_class->context, __xine_pa_context_status_callback, this);
@@ -289,8 +289,9 @@ static int ao_pulse_open(ao_driver_t *this_gen,
return this->sample_rate;
-fail:
+ fail_unlock:
pa_threaded_mainloop_unlock(this->pa_class->mainloop);
+ fail:
this_gen->close(this_gen);
return 0;
}
diff --git a/src/combined/ffmpeg/ff_video_decoder.c b/src/combined/ffmpeg/ff_video_decoder.c
index 8f6864ea1..7cb584593 100644
--- a/src/combined/ffmpeg/ff_video_decoder.c
+++ b/src/combined/ffmpeg/ff_video_decoder.c
@@ -44,7 +44,11 @@
#include "ffmpeg_decoder.h"
#include "ff_mpeg_parser.h"
-#include <postprocess.h>
+#ifdef HAVE_FFMPEG_AVCODEC_H
+# include <postprocess.h>
+#else
+# include <libpostproc/postprocess.h>
+#endif
#define VIDEOBUFSIZE (128*1024)
#define SLICE_BUFFER_SIZE (1194*1024)
@@ -310,6 +314,7 @@ static const ff_codec_t ff_video_lookup[] = {
{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)"},
};
@@ -1692,6 +1697,9 @@ static const uint32_t supported_video_types[] = {
BUF_VIDEO_KMVC,
BUF_VIDEO_FLASHSV,
BUF_VIDEO_CAVS,
+#endif
+#if defined(HAVE_FFMPEG) || CONFIG_VMNC_DECODER
+ BUF_VIDEO_VMNC,
BUF_VIDEO_THEORA_RAW,
0
};
diff --git a/src/combined/ffmpeg/ffmpeg_decoder.h b/src/combined/ffmpeg/ffmpeg_decoder.h
index bfe71a6b1..adf0908dd 100644
--- a/src/combined/ffmpeg/ffmpeg_decoder.h
+++ b/src/combined/ffmpeg/ffmpeg_decoder.h
@@ -25,7 +25,11 @@
#include "config.h"
#endif
-#include <avcodec.h>
+#ifdef HAVE_FFMPEG_AVCODEC_H
+# include <avcodec.h>
+#else
+# include <libavcodec/avcodec.h>
+#endif
typedef struct ff_codec_s {
uint32_t type;
diff --git a/src/combined/flac_demuxer.c b/src/combined/flac_demuxer.c
index bab42876c..22ee2319b 100644
--- a/src/combined/flac_demuxer.c
+++ b/src/combined/flac_demuxer.c
@@ -713,7 +713,8 @@ demux_flac_init_class (xine_t *xine, void *data) {
this->demux_class.open_plugin = open_plugin;
this->demux_class.description = N_("FLAC demux plugin");
this->demux_class.identifier = "FLAC";
- this->demux_class.mimetypes = "application/x-flac: flac: FLAC Audio;";
+ this->demux_class.mimetypes = "application/x-flac: flac: FLAC Audio;"
+ "application/flac: flac: FLAC Audio;";
this->demux_class.extensions = "flac";
this->demux_class.dispose = default_demux_class_dispose;
diff --git a/src/combined/wavpack_demuxer.c b/src/combined/wavpack_demuxer.c
index 9c0831cfa..403d136d1 100644
--- a/src/combined/wavpack_demuxer.c
+++ b/src/combined/wavpack_demuxer.c
@@ -368,7 +368,7 @@ void *demux_wv_init_plugin (xine_t *const xine, void *const data) {
this->demux_class.open_plugin = open_plugin;
this->demux_class.description = N_("Wavpack demux plugin");
this->demux_class.identifier = "Wavpack";
- this->demux_class.mimetypes = NULL;
+ this->demux_class.mimetypes = "audio/x-wavpack";
this->demux_class.extensions = "wv";
this->demux_class.dispose = default_demux_class_dispose;
diff --git a/src/combined/xine_ogg_demuxer.c b/src/combined/xine_ogg_demuxer.c
index d6b5ea214..88fcea08a 100644
--- a/src/combined/xine_ogg_demuxer.c
+++ b/src/combined/xine_ogg_demuxer.c
@@ -892,7 +892,10 @@ static void decode_video_header (demux_ogg_t *this, const int stream_num, ogg_pa
this->si[stream_num]->buf_types = _x_fourcc_to_buf_video (locsubtype);
if( !this->si[stream_num]->buf_types )
+ {
this->si[stream_num]->buf_types = BUF_VIDEO_UNKNOWN;
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, locsubtype);
+ }
this->si[stream_num]->buf_types |= channel;
this->si[stream_num]->headers = 0; /* header is sent below */
@@ -977,9 +980,8 @@ static void decode_audio_header (demux_ogg_t *this, const int stream_num, ogg_pa
if( this->si[stream_num]->buf_types ) {
this->si[stream_num]->buf_types |= channel;
} else {
- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
- "demux_ogg: unknown audio codec type 0x%x\n", codec);
this->si[stream_num]->buf_types = BUF_AUDIO_UNKNOWN;
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE, codec);
/*break;*/
}
@@ -1044,7 +1046,10 @@ static void decode_dshow_header (demux_ogg_t *this, const int stream_num, ogg_pa
this->si[stream_num]->buf_types = _x_fourcc_to_buf_video (fcc);
if( !this->si[stream_num]->buf_types )
+ {
this->si[stream_num]->buf_types = BUF_VIDEO_UNKNOWN;
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, fcc);
+ }
this->si[stream_num]->buf_types |= channel;
bih.biSize = sizeof(xine_bmiheader);
@@ -2079,7 +2084,13 @@ static void *anx_init_class (xine_t *xine, void *data) {
this->demux_class.open_plugin = anx_open_plugin;
this->demux_class.description = N_("Annodex demux plugin");
this->demux_class.identifier = "Annodex";
- this->demux_class.mimetypes = "application/x-annodex: ogg: Annodex media;";
+ this->demux_class.mimetypes =
+ "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;";
this->demux_class.extensions = "anx axa axv";
this->demux_class.dispose = default_demux_class_dispose;
@@ -2098,11 +2109,13 @@ static void *ogg_init_class (xine_t *xine, void *data) {
this->demux_class.description = N_("OGG demux plugin");
this->demux_class.identifier = "OGG";
this->demux_class.mimetypes =
- "audio/x-ogg: ogg: OggVorbis Audio;"
- "audio/x-speex: ogg: Speex Audio;"
- "application/x-ogg: ogg: Ogg Stream;"
- "application/ogg: ogg: Ogg Stream;";
- this->demux_class.extensions = "ogg ogm spx";
+ "application/ogg: ogx: Ogg Stream;"
+ "application/x-ogg: ogx: Ogg Stream;"
+ "audio/ogg: oga: Ogg Audio;"
+ "audio/x-ogg: oga: Ogg Audio;"
+ "video/ogg: ogv: Ogg Video;";
+ "video/x-ogg: ogv: Ogg Video;";
+ this->demux_class.extensions = "ogx ogv oga ogg spx ogm";
this->demux_class.dispose = default_demux_class_dispose;
return this;
diff --git a/src/combined/xine_vorbis_decoder.c b/src/combined/xine_vorbis_decoder.c
index 6d651f153..ad3a07188 100644
--- a/src/combined/xine_vorbis_decoder.c
+++ b/src/combined/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");
}
}
@@ -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 = xine_xmalloc(INIT_BUFSIZE);
+ this->size = 0;
+
vorbis_info_init(&this->vi);
vorbis_comment_init(&this->vc);
diff --git a/src/demuxers/asfheader.c b/src/demuxers/asfheader.c
index 97537c337..75ad11c75 100644
--- a/src/demuxers/asfheader.c
+++ b/src/demuxers/asfheader.c
@@ -140,9 +140,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;
@@ -596,6 +596,12 @@ static int asf_header_parse_content_description(asf_header_t *header_pub, uint8_
content->description = asf_reader_get_string(&reader, description_length, iconv_cd);
content->rating = asf_reader_get_string(&reader, rating_length, 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;
iconv_close(iconv_cd);
diff --git a/src/demuxers/demux_asf.c b/src/demuxers/demux_asf.c
index 1a97e12bf..73f70eeb3 100644
--- a/src/demuxers/demux_asf.c
+++ b/src/demuxers/demux_asf.c
@@ -379,10 +379,21 @@ static int asf_read_header (demux_asf_t *this) {
uint8_t *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 +406,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");
@@ -449,10 +464,9 @@ static int asf_read_header (demux_asf_t *this) {
demux_stream->buf_type = _x_formattag_to_buf_audio
( ((xine_waveformatex *)asf_stream->private_data)->wFormatTag );
if ( !demux_stream->buf_type ) {
- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
- "demux_asf: unknown audio type 0x%x\n",
- ((xine_waveformatex *)asf_stream->private_data)->wFormatTag);
demux_stream->buf_type = BUF_AUDIO_UNKNOWN;
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE,
+ ((xine_waveformatex *)asf_stream->private_data)->wFormatTag);
}
_x_meta_info_set(this->stream, XINE_META_INFO_AUDIOCODEC, _x_buf_audio_name(demux_stream->buf_type));
@@ -495,10 +509,8 @@ static int asf_read_header (demux_asf_t *this) {
demux_stream->buf_type = _x_fourcc_to_buf_video(bmiheader->biCompression);
if( !demux_stream->buf_type ) {
- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
- "demux_asf: unknown video format %.4s\n", (char*)&(bmiheader->biCompression));
-
demux_stream->buf_type = BUF_VIDEO_UNKNOWN;
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, bmiheader->biCompression);
}
_x_meta_info_set(this->stream, XINE_META_INFO_VIDEOCODEC, _x_buf_video_name(demux_stream->buf_type));
@@ -722,6 +734,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;
@@ -732,10 +747,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;
diff --git a/src/demuxers/demux_avi.c b/src/demuxers/demux_avi.c
index c6a73ebde..27dfce443 100644
--- a/src/demuxers/demux_avi.c
+++ b/src/demuxers/demux_avi.c
@@ -1871,7 +1871,12 @@ static void demux_avi_send_headers (demux_plugin_t *this_gen) {
if (!this->avi->bih->biCompression)
this->avi->video_type = BUF_VIDEO_RGB;
else
+ {
this->avi->video_type = _x_fourcc_to_buf_video(this->avi->bih->biCompression);
+ if (!this->avi->video_type)
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE,
+ this->avi->bih->biCompression);
+ }
for(i=0; i < this->avi->n_audio; i++) {
this->avi->audio[i]->audio_type = _x_formattag_to_buf_audio (this->avi->audio[i]->wavex->wFormatTag);
@@ -1884,10 +1889,10 @@ static void demux_avi_send_headers (demux_plugin_t *this_gen) {
}
if( !this->avi->audio[i]->audio_type ) {
- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "unknown audio type 0x%x\n",
- this->avi->audio[i]->wavex->wFormatTag);
this->no_audio = 1;
this->avi->audio[i]->audio_type = BUF_AUDIO_UNKNOWN;
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE,
+ this->avi->audio[i]->wavex->wFormatTag);
} else
xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_avi: audio type %s (wFormatTag 0x%x)\n",
_x_buf_audio_name(this->avi->audio[i]->audio_type),
@@ -1899,8 +1904,8 @@ static void demux_avi_send_headers (demux_plugin_t *this_gen) {
* however, at least for this case (compressor: xvid biCompression: DIVX), the
* xvid fourcc must prevail as it is used by ffmpeg to detect encoder bugs. [MF]
*/
- if( _x_fourcc_to_buf_video(this->avi->compressor) == BUF_VIDEO_XVID &&
- _x_fourcc_to_buf_video(this->avi->bih->biCompression) == BUF_VIDEO_MPEG4 ) {
+ if( this->avi->video_type == BUF_VIDEO_MPEG4 &&
+ _x_fourcc_to_buf_video(this->avi->compressor) == BUF_VIDEO_XVID ) {
this->avi->bih->biCompression = this->avi->compressor;
this->avi->video_type = BUF_VIDEO_XVID;
}
@@ -1949,6 +1954,8 @@ static void demux_avi_send_headers (demux_plugin_t *this_gen) {
this->avi->compressor = this->avi->bih->biCompression;
} else {
this->avi->video_type = _x_fourcc_to_buf_video(this->avi->compressor);
+ if (!this->avi->video_type)
+ _x_fourcc_to_buf_video(this->avi->bih->biCompression);
}
_x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_FOURCC,
diff --git a/src/demuxers/demux_film.c b/src/demuxers/demux_film.c
index cc9e90d66..193d8850b 100644
--- a/src/demuxers/demux_film.c
+++ b/src/demuxers/demux_film.c
@@ -201,7 +201,11 @@ static int open_film_file(demux_film_t *film) {
film->video_type = _x_fourcc_to_buf_video(*(uint32_t *)&film_header[i + 8]);
if( !film->video_type )
+ {
film->video_type = BUF_VIDEO_UNKNOWN;
+ _x_report_video_fourcc (film->stream->xine, LOG_MODULE,
+ *(uint32_t *)&film_header[i + 8]);
+ }
/* fetch the audio information if the chunk size checks out */
if (chunk_size == 32) {
diff --git a/src/demuxers/demux_flac.c b/src/demuxers/demux_flac.c
index b4c5427c5..ed974a69c 100644
--- a/src/demuxers/demux_flac.c
+++ b/src/demuxers/demux_flac.c
@@ -189,7 +189,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, cn;
char *comment;
@@ -201,18 +201,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);
@@ -247,8 +254,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) {
@@ -520,7 +527,9 @@ void *demux_flac_init_plugin (xine_t *xine, void *data) {
this->demux_class.open_plugin = open_plugin;
this->demux_class.description = N_("Free Lossless Audio Codec (flac) demux plugin");
this->demux_class.identifier = "FLAC";
- this->demux_class.mimetypes = NULL;
+ this->demux_class.mimetypes =
+ "audio/x-flac: flac: FLAC Audio;"
+ "audio/flac: flac: FLAC Audio;";
this->demux_class.extensions = "flac";
this->demux_class.dispose = default_demux_class_dispose;
diff --git a/src/demuxers/demux_flv.c b/src/demuxers/demux_flv.c
index e6a7e234a..38855c027 100644
--- a/src/demuxers/demux_flv.c
+++ b/src/demuxers/demux_flv.c
@@ -306,9 +306,12 @@ static int parse_flv_var(demux_flv_t *this,
num = _X_BE_32(tmp);
tmp += 4;
if (key && keylen == 5 && !strncmp(key, "times", 5)) {
- free (this->index);
- this->index = xine_xcalloc(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 = xine_xcalloc(num, sizeof(flv_index_entry_t));
+ 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));
@@ -319,16 +322,20 @@ 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 = xine_xcalloc(num, sizeof(flv_index_entry_t));
+ 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);
@@ -501,9 +508,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);
@@ -569,7 +576,9 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
}
return this->status;
- }
+ }
+ /* no preview */
+ this->input->seek(this->input, remaining_bytes, SEEK_CUR);
continue;
default:
@@ -661,7 +670,7 @@ static void seek_flv_file(demux_flv_t *this, off_t seek_pos, int seek_pts) {
}
}
- if (seek_pos && this->videocodec) {
+ if (seek_pos && this->videocodec && abs(seek_pts-this->cur_pts) > 300000) {
off_t pos, size;
pos = this->input->get_current_pos(this->input);
@@ -899,4 +908,3 @@ const plugin_info_t xine_plugin_info[] EXPORTED = {
{ PLUGIN_DEMUX, 27, "flashvideo", XINE_VERSION_CODE, &demux_info_flv, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
-
diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c
index 4a99492ef..ec932aacb 100644
--- a/src/demuxers/demux_matroska.c
+++ b/src/demuxers/demux_matroska.c
@@ -1303,6 +1303,8 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
_x_bmiheader_le2me(bih);
track->buf_type = _x_fourcc_to_buf_video(bih->biCompression);
+ if (!track->buf_type)
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, bih->biCompression);
init_codec = init_codec_video;
} else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_UNCOMPRESSED)) {
@@ -1413,6 +1415,8 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
_x_waveformatex_le2me(wfh);
track->buf_type = _x_formattag_to_buf_audio(wfh->wFormatTag);
+ if (!track->buf_type)
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE, 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)) {
@@ -1829,11 +1833,20 @@ static int read_block_data (demux_matroska_t *this, int len) {
return 1;
}
+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, uint64_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;
@@ -1842,17 +1855,18 @@ static int parse_block (demux_matroska_t *this, uint64_t block_size,
int decoder_flags = 0;
data = this->block_data;
- if (!(num_len = parse_ebml_sint(this, data, &track_num)))
+ 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 = 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;
@@ -1860,7 +1874,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;
}
@@ -1969,24 +1983,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_sint(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];
}
diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c
index 27ee7f56b..6eb4ee622 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
@@ -64,6 +64,7 @@
/* Xing header stuff */
#define XING_TAG FOURCC_TAG('X', 'i', 'n', 'g')
+#define INFO_TAG FOURCC_TAG('I', 'n', 'f', 'o')
#define XING_FRAMES_FLAG 0x0001
#define XING_BYTES_FLAG 0x0002
#define XING_TOC_FLAG 0x0004
@@ -76,16 +77,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 */
@@ -124,7 +125,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 */
@@ -134,7 +141,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 */
@@ -205,14 +220,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");
@@ -233,14 +248,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;
}
@@ -273,19 +288,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;
}
@@ -295,16 +318,8 @@ static int parse_frame_header(mpg_audio_frame_t *const frame, const uint8_t *con
*/
static xing_header_t* parse_xing_header(mpg_audio_frame_t *frame,
uint8_t *buf, int bufsize) {
-
-#ifdef LOG
- int i;
-#endif
uint8_t *ptr = buf;
- xing_header_t *xing;
-
- xing = xine_xmalloc (sizeof (xing_header_t));
- if (!xing)
- return NULL;
+ xing_header_t *xing = NULL;
/* offset of the Xing header */
if (frame->lsf_bit) {
@@ -319,52 +334,87 @@ static xing_header_t* parse_xing_header(mpg_audio_frame_t *frame,
ptr += (9 + 4);
}
- if (ptr >= (buf + bufsize - 4)) return 0;
+ if (ptr >= (buf + bufsize - 4)) goto exit_error;
lprintf("checking %08X\n", *ptr);
+
if (_X_BE_32(ptr) == XING_TAG) {
- lprintf("Xing header found\n");
+ int has_frames_flag = 0;
+ int has_bytes_flag = 0;
+
+ xing = xine_xmalloc (sizeof (xing_header_t));
+ if (!xing)
+ goto exit_error;
+
+ lprintf("found Xing header\n");
ptr += 4;
- if (ptr >= (buf + bufsize - 4)) return 0;
+ if (ptr >= (buf + bufsize - 4)) goto exit_error;
xing->flags = _X_BE_32(ptr); ptr += 4;
if (xing->flags & XING_FRAMES_FLAG) {
- if (ptr >= (buf + bufsize - 4)) return 0;
+ if (ptr >= (buf + bufsize - 4)) goto exit_error;
xing->stream_frames = _X_BE_32(ptr); ptr += 4;
lprintf("stream frames: %d\n", xing->stream_frames);
+ has_frames_flag = 1;
}
if (xing->flags & XING_BYTES_FLAG) {
- if (ptr >= (buf + bufsize - 4)) return 0;
+ if (ptr >= (buf + bufsize - 4)) goto exit_error;
xing->stream_size = _X_BE_32(ptr); ptr += 4;
lprintf("stream size: %d\n", xing->stream_size);
+ has_bytes_flag = 1;
}
+
+ /* check if it's a useful Xing header */
+ if (!has_frames_flag || !has_bytes_flag) {
+ lprintf("Stupid Xing tag, cannot do anything with it !\n");
+ goto exit_error;
+ }
+
if (xing->flags & XING_TOC_FLAG) {
+ int i;
+
lprintf("toc found\n");
- if (ptr >= (buf + bufsize - XING_TOC_LENGTH)) return 0;
+ if (ptr >= (buf + bufsize - XING_TOC_LENGTH)) goto exit_error;
memcpy(xing->toc, ptr, XING_TOC_LENGTH);
#ifdef LOG
for (i = 0; i < XING_TOC_LENGTH; i++) {
- lprintf("%d ", xing->toc[i]);
+ printf("%d ", xing->toc[i]);
}
- lprintf("\n");
+ printf("\n");
#endif
+ /* check the table validity
+ * - MUST start with 0
+ * - values MUST increase
+ */
+ if (xing->toc[0] != 0) {
+ lprintf("invalid Xing toc\n");
+ goto exit_error;
+ }
+ for (i = 1; i < XING_TOC_LENGTH; i++) {
+ if (xing->toc[i] < xing->toc[i-1]) {
+ lprintf("invalid Xing toc\n");
+ goto exit_error;
+ }
+ }
ptr += XING_TOC_LENGTH;
}
xing->vbr_scale = -1;
if (xing->flags & XING_VBR_SCALE_FLAG) {
- if (ptr >= (buf + bufsize - 4)) return 0;
+ if (ptr >= (buf + bufsize - 4)) goto exit_error;
xing->vbr_scale = _X_BE_32(ptr);
lprintf("vbr_scale: %d\n", xing->vbr_scale);
}
-
- return xing;
} else {
lprintf("Xing header not found\n");
+ }
+ return xing;
+
+exit_error:
+ lprintf("Xing header parse error\n");
free(xing);
return NULL;
}
-}
/*
* Parse a Vbri header
@@ -386,7 +436,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;
@@ -450,6 +500,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
@@ -460,43 +511,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);
@@ -505,14 +610,13 @@ 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;
+ 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;
}
@@ -522,11 +626,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;
@@ -535,20 +640,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;
@@ -576,40 +682,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(_X_ME_32(header_buf)) ) {
- if (!id3v2_parse_tag(this->input, this->stream, _X_ME_32(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(_X_ME_32(header)) ) {
+ if (!id3v2_parse_tag(this->input, this->stream, _X_ME_32(header))) {
xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
LOG_MODULE ": ID3V2 tag parsing error\n");
bytes = 1; /* resync */
@@ -620,12 +737,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) {
@@ -672,12 +808,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;
@@ -701,15 +838,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;
}
@@ -748,11 +885,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;
@@ -763,7 +901,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;
@@ -806,7 +944,7 @@ static void demux_mpgaudio_send_headers (demux_plugin_t *this_gen) {
{
char scratch_buf[256];
static const char mpeg_ver[3][4] = {"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" );
@@ -919,7 +1057,7 @@ static int demux_mpgaudio_seek (demux_plugin_t *this_gen,
if (this->stream_length > 0) {
if (this->xing_header &&
- (this->xing_header->flags & (XING_TOC_FLAG | XING_BYTES_FLAG))) {
+ (this->xing_header->flags & XING_TOC_FLAG)) {
seek_pos += xing_get_seek_point(this->xing_header, start_time, this->stream_length);
lprintf("time seek: xing: time=%d, pos=%"PRId64"\n", start_time, seek_pos);
} else if (this->vbri_header) {
@@ -934,7 +1072,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);
}
@@ -969,13 +1108,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;
@@ -987,7 +1128,7 @@ 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->demux_plugin.send_headers = demux_mpgaudio_send_headers;
@@ -999,12 +1140,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;
}
diff --git a/src/demuxers/demux_nsv.c b/src/demuxers/demux_nsv.c
index 74f98c7cd..43b1fbc88 100644
--- a/src/demuxers/demux_nsv.c
+++ b/src/demuxers/demux_nsv.c
@@ -305,13 +305,21 @@ static int open_nsv_file(demux_nsv_t *this) {
if (_X_BE_32(&preview[4]) == NONE_TAG)
this->video_type = 0;
else
+ {
this->video_type = _x_fourcc_to_buf_video(this->video_fourcc);
+ if (!this->video_type)
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, this->video_fourcc);
+ }
this->audio_fourcc = _X_ME_32(&preview[8]);
if (_X_BE_32(&preview[8]) == NONE_TAG)
this->audio_type = 0;
else
+ {
this->audio_type = _x_formattag_to_buf_audio(this->audio_fourcc);
+ if (!this->audio_type)
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE, this->audio_fourcc);
+ }
this->bih.biSize = sizeof(this->bih);
this->bih.biWidth = _X_LE_16(&preview[12]);
diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c
index 6b2aa5eea..ecd2c319a 100644
--- a/src/demuxers/demux_qt.c
+++ b/src/demuxers/demux_qt.c
@@ -2628,7 +2628,11 @@ static void demux_qt_send_headers(demux_plugin_t *this_gen) {
if( !video_trak->properties->video.codec_buftype &&
video_trak->properties->video.codec_fourcc )
+ {
video_trak->properties->video.codec_buftype = BUF_VIDEO_UNKNOWN;
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE,
+ video_trak->properties->video.codec_fourcc);
+ }
_x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_VIDEO, 1);
_x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_WIDTH,
@@ -2670,7 +2674,11 @@ static void demux_qt_send_headers(demux_plugin_t *this_gen) {
if( !audio_trak->properties->audio.codec_buftype &&
audio_trak->properties->audio.codec_fourcc )
+ {
audio_trak->properties->audio.codec_buftype = BUF_AUDIO_UNKNOWN;
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE,
+ audio_trak->properties->audio.codec_fourcc);
+ }
_x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_AUDIO, 1);
_x_stream_info_set(this->stream, XINE_STREAM_INFO_AUDIO_CHANNELS,
diff --git a/src/demuxers/demux_real.c b/src/demuxers/demux_real.c
index 21308bd45..41c6fb4a2 100644
--- a/src/demuxers/demux_real.c
+++ b/src/demuxers/demux_real.c
@@ -459,6 +459,9 @@ static void real_parse_headers (demux_real_t *this) {
this->num_audio_streams++;
+ if (!this->audio_streams[this->num_audio_streams].buf_type)
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE, fourcc);
+
} else if(_X_BE_32(mdpr->type_specific_data + 4) == VIDO_TAG) {
if(this->num_video_streams == MAX_VIDEO_STREAMS) {
@@ -479,6 +482,9 @@ static void real_parse_headers (demux_real_t *this) {
this->num_video_streams++;
+ if (!this->video_streams[this->num_video_streams].buf_type)
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, fourcc);
+
} else {
lprintf("unrecognised type specific data\n");
@@ -800,12 +806,22 @@ static int demux_real_parse_references( demux_real_t *this) {
if (!strncmp(buf,"http://",7))
{
- for (i = 0; buf[i] && !isspace(buf[i]); ++i)
- /**/;
- buf[i] = 0;
- lprintf("reference [%s] found\n", buf);
-
- _x_demux_send_mrl_reference (this->stream, 0, buf, NULL, 0, 0);
+ i = 0;
+ while (buf[i])
+ {
+ j = i;
+ while (buf[i] && !isspace(buf[i]))
+ ++i; /* skip non-space */
+ len = buf[i];
+ buf[i] = 0;
+ if (strncmp (buf + j, "http://", 7) || (i - j) < 8)
+ break; /* stop at the first non-http reference */
+ lprintf("reference [%s] found\n", buf + j);
+ _x_demux_send_mrl_reference (this->stream, 0, buf + j, NULL, 0, 0);
+ buf[i] = (char) len;
+ while (buf[i] && isspace(buf[i]))
+ ++i; /* skip spaces */
+ }
}
else for (i = 0; i < buf_used; ++i)
{
diff --git a/src/demuxers/demux_smjpeg.c b/src/demuxers/demux_smjpeg.c
index 10cdf8120..d9b436032 100644
--- a/src/demuxers/demux_smjpeg.c
+++ b/src/demuxers/demux_smjpeg.c
@@ -147,6 +147,8 @@ static int open_smjpeg_file(demux_smjpeg_t *this) {
this->bih.biHeight = _X_BE_16(&header_chunk[10]);
this->bih.biCompression = *(uint32_t *)&header_chunk[12];
this->video_type = _x_fourcc_to_buf_video(this->bih.biCompression);
+ if (!this->video_type)
+ _x_report_video_fourcc (this->stream->xine, LOG_MODULE, this->bih.biCompression);
break;
case _SND_TAG:
@@ -166,6 +168,8 @@ static int open_smjpeg_file(demux_smjpeg_t *this) {
} else {
audio_codec = *(uint32_t *)&header_chunk[8];
this->audio_type = _x_formattag_to_buf_audio(audio_codec);
+ if (!this->audio_type)
+ _x_report_audio_format_tag (this->stream->xine, LOG_MODULE, audio_codec);
}
break;
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 9de28aacc..5d85a5597 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -1175,6 +1175,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
diff --git a/src/demuxers/ebml.c b/src/demuxers/ebml.c
index 772b848eb..41a91371e 100644
--- a/src/demuxers/ebml.c
+++ b/src/demuxers/ebml.c
@@ -234,6 +234,7 @@ int ebml_read_uint(ebml_parser_t *ebml, ebml_elem_t *elem, uint64_t *num) {
return 1;
}
+#if 0
int ebml_read_sint (ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *num) {
uint8_t data[8];
uint64_t size = elem->len;
@@ -260,6 +261,7 @@ int ebml_read_sint (ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *num) {
return 1;
}
+#endif
int ebml_read_float (ebml_parser_t *ebml, ebml_elem_t *elem, double *num) {
@@ -304,6 +306,7 @@ int ebml_read_ascii(ebml_parser_t *ebml, ebml_elem_t *elem, char *str) {
return 1;
}
+#if 0
int ebml_read_utf8 (ebml_parser_t *ebml, ebml_elem_t *elem, char *str) {
return ebml_read_ascii (ebml, elem, str);
}
@@ -311,6 +314,7 @@ int ebml_read_utf8 (ebml_parser_t *ebml, ebml_elem_t *elem, char *str) {
int ebml_read_date (ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *date) {
return ebml_read_sint (ebml, elem, date);
}
+#endif
int ebml_read_master (ebml_parser_t *ebml, ebml_elem_t *elem) {
ebml_elem_t *top_elem;
diff --git a/src/demuxers/ebml.h b/src/demuxers/ebml.h
index 7ebd68da2..31d825e35 100644
--- a/src/demuxers/ebml.h
+++ b/src/demuxers/ebml.h
@@ -83,15 +83,19 @@ int ebml_skip(ebml_parser_t *ebml, ebml_elem_t *elem);
/* EBML types */
int ebml_read_uint(ebml_parser_t *ebml, ebml_elem_t *elem, uint64_t *val);
+#if 0
int ebml_read_sint(ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *val);
+#endif
int ebml_read_float(ebml_parser_t *ebml, ebml_elem_t *elem, double *val);
int ebml_read_ascii(ebml_parser_t *ebml, ebml_elem_t *elem, char *str);
+#if 0
int ebml_read_utf8(ebml_parser_t *ebml, ebml_elem_t *elem, char *str);
int ebml_read_date(ebml_parser_t *ebml, ebml_elem_t *elem, int64_t *date);
+#endif
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 b9bb75744..71cb5e743 100644
--- a/src/demuxers/id3.c
+++ b/src/demuxers/id3.c
@@ -341,21 +341,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;
}
@@ -367,11 +367,11 @@ int id3v22_parse_tag(input_plugin_t *input,
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;
}
@@ -383,13 +383,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;
}
}
@@ -527,14 +527,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;
}
@@ -543,6 +543,7 @@ 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) {
@@ -552,29 +553,30 @@ int id3v23_parse_tag(input_plugin_t *input,
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 %d 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;
}
}
@@ -770,7 +772,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;
}
@@ -785,6 +787,7 @@ 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) {
@@ -794,11 +797,11 @@ int id3v24_parse_tag(input_plugin_t *input,
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;
}
@@ -810,7 +813,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;
}
}
@@ -820,7 +823,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;
}
}
@@ -832,19 +835,19 @@ int id3v2_parse_tag(input_plugin_t *input,
switch(id3_signature) {
case ID3V22_TAG:
- xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.2 tag\n");
+ xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2.2 tag\n");
return id3v22_parse_tag(input, stream, id3_signature);
case ID3V23_TAG:
- xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.3 tag\n");
+ xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2.3 tag\n");
return id3v23_parse_tag(input, stream, id3_signature);
case ID3V24_TAG:
- xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.4 tag\n");
+ xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": ID3V2.4 tag\n");
return id3v24_parse_tag(input, stream, id3_signature);
default:
- xprintf(stream->xine, XINE_VERBOSITY_LOG, "Unknown ID3v2 signature: 0x%08x.\n", be2me_32(id3_signature));
+ xprintf(stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": Unknown ID3v2 signature: 0x%08x.\n", be2me_32(id3_signature));
}
return 0;
diff --git a/src/input/http_helper.c b/src/input/http_helper.c
index 83562c9dc..f4950a084 100644
--- a/src/input/http_helper.c
+++ b/src/input/http_helper.c
@@ -220,29 +220,6 @@ error:
return 0;
}
-char *_x_canonicalise_url (const char *base, const char *url) {
-
- size_t base_length;
- char *cut, *ret;
-
- if ((cut = strstr (url, "://")))
- return strdup (url);
-
- cut = strstr (base, "://");
- if (url[0] == '/') {
- /* absolute - base up to first '/' after "://", then url */
- cut = strchr (cut + 3, '/');
- }
- else {
- /* relative - base up to & inc. last '/', then url */
- cut = strrchr (cut, '/');
- if (cut)
- ++cut;
- }
- base_length = cut ? (size_t)(cut - base) : strlen (base);
- asprintf (&ret, "%.*s%s", (int)base_length, base, url);
- return ret;
-}
#ifdef TEST_URL
/*
diff --git a/src/input/http_helper.h b/src/input/http_helper.h
index 3ce3f2b7c..9baa05235 100644
--- a/src/input/http_helper.h
+++ b/src/input/http_helper.h
@@ -43,6 +43,28 @@ int _x_parse_url (char *url, char **proto, char** host, int *port,
* return:
* the canonicalised URL (caller must free() it)
*/
-char *_x_canonicalise_url (const char *base, const char *url);
+static inline char *_x_canonicalise_url (const char *base, const char *url) {
+
+ size_t base_length;
+ char *cut, *ret;
+
+ if ((cut = strstr (url, "://")))
+ return strdup (url);
+
+ cut = strstr (base, "://");
+ if (url[0] == '/') {
+ /* absolute - base up to first '/' after "://", then url */
+ cut = strchr (cut + 3, '/');
+ }
+ else {
+ /* relative - base up to & inc. last '/', then url */
+ cut = strrchr (cut, '/');
+ if (cut)
+ ++cut;
+ }
+ base_length = cut ? (size_t)(cut - base) : strlen (base);
+ asprintf (&ret, "%.*s%s", (int)base_length, base, url);
+ return ret;
+}
#endif /* HTTP_HELPER_H */
diff --git a/src/input/input_cdda.c b/src/input/input_cdda.c
index d84c442cf..4f7e7cc3a 100644
--- a/src/input/input_cdda.c
+++ b/src/input/input_cdda.c
@@ -72,6 +72,7 @@
#include <xine/xineutils.h>
#include <xine/input_plugin.h>
#include "media_helper.h"
+#include "base64.h"
#if defined(__sun)
#define DEFAULT_CDDA_DEVICE "/vol/dev/aliases/cdrom0"
diff --git a/src/input/input_dvb.c b/src/input/input_dvb.c
index 51e4d47aa..1b86fcac5 100644
--- a/src/input/input_dvb.c
+++ b/src/input/input_dvb.c
@@ -2501,9 +2501,6 @@ static off_t dvb_plugin_read (input_plugin_t *this_gen,
"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;
diff --git a/src/input/input_pnm.c b/src/input/input_pnm.c
index 3271a04c9..e11e3b361 100644
--- a/src/input/input_pnm.c
+++ b/src/input/input_pnm.c
@@ -83,8 +83,6 @@ 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;
diff --git a/src/input/input_pvr.c b/src/input/input_pvr.c
index 50ba4720e..740d51665 100644
--- a/src/input/input_pvr.c
+++ b/src/input/input_pvr.c
@@ -1008,19 +1008,21 @@ static void pvr_event_handler (pvr_input_plugin_t *this) {
/* change input */
if (v4l2_data->input != -1 && v4l2_data->input != this->input) {
- lprintf("change input to:%d\n", v4l2_data->input);
this->input = v4l2_data->input;
/* as of ivtv 0.10.6: must close and reopen to set input */
close(this->dev_fd);
this->dev_fd = open (this->class->devname, O_RDWR);
- if (this->dev_fd == -1) {
+ if (this->dev_fd < 0) {
xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
"input_pvr: error opening device %s\n", this->class->devname );
} else {
- if( ioctl(this->dev_fd, VIDIOC_S_INPUT, &this->input) )
+ if( ioctl(this->dev_fd, VIDIOC_S_INPUT, &this->input) == 0 ) {
+ lprintf("Tuner Input set to:%d\n", v4l2_data->input);
+ } else {
xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
"input_pvr: error setting v4l2 input\n");
+ }
}
}
@@ -1032,14 +1034,30 @@ static void pvr_event_handler (pvr_input_plugin_t *this) {
/* change frequency */
if (v4l2_data->frequency != -1 && v4l2_data->frequency != this->frequency) {
- lprintf("changing frequency to:%.2f\n", (float)v4l2_data->frequency * 62.5);
+ double freq = (double)v4l2_data->frequency / 1000.0;
struct v4l2_frequency vf;
+ struct v4l2_tuner vt;
+ double fac = 16;
+
+ memset(&vf, 0, sizeof(vf));
+ memset(&vt, 0, sizeof(vt));
+
this->frequency = v4l2_data->frequency;
- vf.frequency = this->frequency;
+
+ if (ioctl(this->dev_fd, VIDIOC_G_TUNER, &vt) == 0) {
+ fac = (vt.capability & V4L2_TUNER_CAP_LOW) ? 16000 : 16;
+ }
+
vf.tuner = 0;
- if( ioctl(this->dev_fd, VIDIOC_S_FREQUENCY, &vf) )
+ vf.type = vt.type;
+ vf.frequency = (__u32)(freq * fac);
+
+ if (ioctl(this->dev_fd, VIDIOC_S_FREQUENCY, &vf) == 0) {
+ lprintf("Tuner Frequency set to %d (%f.3 MHz)\n", vf.frequency, vf.frequency / fac);
+ } else {
xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
"input_pvr: error setting v4l2 frequency\n");
+ }
}
pthread_mutex_unlock(&this->dev_lock);
diff --git a/src/input/input_rtsp.c b/src/input/input_rtsp.c
index bee192c0d..e2b1bae99 100644
--- a/src/input/input_rtsp.c
+++ b/src/input/input_rtsp.c
@@ -83,8 +83,6 @@ 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;
diff --git a/src/input/input_v4l.c b/src/input/input_v4l.c
index 28e5b16ce..df0e0e48b 100644
--- a/src/input/input_v4l.c
+++ b/src/input/input_v4l.c
@@ -114,8 +114,11 @@ static const char *const tv_standard_names[] = { "PAL", "NTSC", "SECAM", NULL };
static const int tv_standard_values[] = { VIDEO_MODE_PAL, VIDEO_MODE_NTSC, VIDEO_MODE_SECAM };
#define NUM_RESOLUTIONS (sizeof(resolutions)/sizeof(resolutions[0]))
-#define RADIO_DEV "/dev/v4l/radio0"
-#define VIDEO_DEV "/dev/v4l/video0"
+#define RADIO_DEV "/dev/radio0"
+#define VIDEO_DEV "/dev/video0"
+#ifdef HAVE_ALSA
+#define AUDIO_DEV "plughw:0,0"
+#endif
#if !defined(NDELAY) && defined(O_NDELAY)
#define FNDELAY O_NDELAY
@@ -1732,6 +1735,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 */
@@ -1752,13 +1758,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;
@@ -1928,6 +1935,14 @@ static void *init_video_class (xine_t *xine, void *data)
_("Selects the TV standard of the input signals. "
"Either: PAL, NTSC and SECAM. "), 20, 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
return this;
}
diff --git a/src/input/libreal/rmff.c b/src/input/libreal/rmff.c
index c12fff1d6..1600e967a 100644
--- a/src/input/libreal/rmff.c
+++ b/src/input/libreal/rmff.c
@@ -35,9 +35,13 @@
* writes header data to a buffer
*/
-static void rmff_dump_fileheader(rmff_fileheader_t *fileheader, uint8_t *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 +57,17 @@ static void rmff_dump_fileheader(rmff_fileheader_t *fileheader, uint8_t *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, uint8_t *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 +103,19 @@ static void rmff_dump_prop(rmff_prop_t *prop, uint8_t *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, uint8_t *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 +157,19 @@ static void rmff_dump_mdpr(rmff_mdpr_t *mdpr, uint8_t *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, uint8_t *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 +203,18 @@ static void rmff_dump_cont(rmff_cont_t *cont, uint8_t *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, uint8_t *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,32 +230,43 @@ static void rmff_dump_dataheader(rmff_data_t *data, uint8_t *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, 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;
}
@@ -435,6 +475,7 @@ rmff_header_t *rmff_scan_header(const char *data) {
return header;
}
+#if 0
rmff_header_t *rmff_scan_header_stream(int fd) {
rmff_header_t *header;
@@ -485,6 +526,7 @@ void rmff_scan_pheader(rmff_pheader_t *h, char *data) {
h->reserved=(uint8_t)data[10];
h->flags=(uint8_t)data[11];
}
+#endif
rmff_fileheader_t *rmff_new_fileheader(uint32_t num_headers) {
@@ -630,6 +672,7 @@ rmff_data_t *rmff_new_dataheader(uint32_t num_packets, uint32_t next_data_header
return data;
}
+#if 0
void rmff_print_header(rmff_header_t *h) {
rmff_mdpr_t **stream;
@@ -696,6 +739,7 @@ void rmff_print_header(rmff_header_t *h) {
printf("next DATA : 0x%08x\n", h->data->next_data_header);
}
}
+#endif
void rmff_fix_header(rmff_header_t *h) {
@@ -804,6 +848,7 @@ void rmff_fix_header(rmff_header_t *h) {
}
}
+#if 0
int rmff_get_header_size(rmff_header_t *h) {
if (!h) return 0;
@@ -843,3 +888,4 @@ void rmff_free_header(rmff_header_t *h) {
}
free(h);
}
+#endif
diff --git a/src/input/libreal/rmff.h b/src/input/libreal/rmff.h
index 010ee5154..3fe3af284 100644
--- a/src/input/libreal/rmff.h
+++ b/src/input/libreal/rmff.h
@@ -39,6 +39,12 @@
#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 ) | \
@@ -216,6 +222,7 @@ rmff_data_t *rmff_new_dataheader(
*/
rmff_header_t *rmff_scan_header(const char *data);
+#if 0
/*
* scans a data packet header. Notice, that this function does not allocate
* the header struct itself.
@@ -231,16 +238,19 @@ rmff_header_t *rmff_scan_header_stream(int fd);
* prints header information in human readible form to stdout
*/
void rmff_print_header(rmff_header_t *h);
+#endif
/*
* does some checks and fixes header if possible
*/
void rmff_fix_header(rmff_header_t *h);
+#if 0
/*
* returns the size of the header (incl. first data-header)
*/
int rmff_get_header_size(rmff_header_t *h);
+#endif
/*
* dumps the header <h> to <buffer>. <max> is the size of <buffer>
@@ -252,9 +262,11 @@ int rmff_dump_header(rmff_header_t *h, void *buffer, int max);
*/
void rmff_dump_pheader(rmff_pheader_t *h, uint8_t *data);
+#if 0
/*
* frees a header struct
*/
void rmff_free_header(rmff_header_t *h);
+#endif
#endif
diff --git a/src/input/librtsp/rtsp.c b/src/input/librtsp/rtsp.c
index cd844654b..c660751fe 100644
--- a/src/input/librtsp/rtsp.c
+++ b/src/input/librtsp/rtsp.c
@@ -359,12 +359,14 @@ int rtsp_request_play(rtsp_t *s, const char *what) {
return rtsp_get_answers(s);
}
+#if 0
int rtsp_request_tearoff(rtsp_t *s, const char *what) {
rtsp_send_request(s,"TEAROFF",what);
return rtsp_get_answers(s);
}
+#endif
/*
* read opaque data from stream
@@ -557,6 +559,7 @@ char *rtsp_search_answers(rtsp_t *s, const char *tag) {
return NULL;
}
+#if 0
/*
* session id management
*/
@@ -574,6 +577,7 @@ char *rtsp_get_session(rtsp_t *s) {
return s->session;
}
+#endif
char *rtsp_get_mrl(rtsp_t *s) {
@@ -597,6 +601,7 @@ void rtsp_schedule_field(rtsp_t *s, const char *string) {
s->scheduled[i]=strdup(string);
}
+#if 0
/*
* removes the first scheduled field which prefix matches string.
*/
@@ -617,6 +622,7 @@ void rtsp_unschedule_field(rtsp_t *s, const char *string) {
*(ptr-1)=*ptr;
} while(*ptr);
}
+#endif
/*
* unschedule all fields
diff --git a/src/input/librtsp/rtsp.h b/src/input/librtsp/rtsp.h
index 3c829e2e8..1cec57e1e 100644
--- a/src/input/librtsp/rtsp.h
+++ b/src/input/librtsp/rtsp.h
@@ -47,7 +47,9 @@ int rtsp_request_describe(rtsp_t *s, const char *what);
int rtsp_request_setup(rtsp_t *s, const char *what);
int rtsp_request_setparameter(rtsp_t *s, const char *what);
int rtsp_request_play(rtsp_t *s, const char *what);
+#if 0
int rtsp_request_tearoff(rtsp_t *s, const char *what);
+#endif
int rtsp_send_ok(rtsp_t *s);
@@ -61,15 +63,19 @@ void rtsp_free_answers(rtsp_t *this);
int rtsp_read (rtsp_t *this, char *data, int len);
void rtsp_close (rtsp_t *this);
+#if 0
void rtsp_set_session(rtsp_t *s, const char *id);
char *rtsp_get_session(rtsp_t *s);
+#endif
char *rtsp_get_mrl(rtsp_t *s);
/*int rtsp_peek_header (rtsp_t *this, char *data); */
void rtsp_schedule_field(rtsp_t *s, const char *string);
+#if 0
void rtsp_unschedule_field(rtsp_t *s, const char *string);
+#endif
void rtsp_unschedule_all(rtsp_t *s);
#endif
diff --git a/src/input/librtsp/rtsp_session.c b/src/input/librtsp/rtsp_session.c
index 5cb0dfb63..d8f7ae583 100644
--- a/src/input/librtsp/rtsp_session.c
+++ b/src/input/librtsp/rtsp_session.c
@@ -148,6 +148,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 +162,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/net_buf_ctrl.c b/src/input/net_buf_ctrl.c
index aaf575e40..03a24d38f 100644
--- a/src/input/net_buf_ctrl.c
+++ b/src/input/net_buf_ctrl.c
@@ -113,10 +113,6 @@ static void nbc_set_speed_normal (nbc_t *this) {
stream->xine->clock->set_option (stream->xine->clock, CLOCK_SCR_ADJUSTABLE, 1);
}
-void nbc_check_buffers (nbc_t *this) {
- /* Deprecated */
-}
-
static void display_stats (nbc_t *this) {
static const char buffering[2][4] = {" ", "buf"};
static const char enabled[2][4] = {"off", "on "};
@@ -564,22 +560,3 @@ void nbc_close (nbc_t *this) {
free (this);
xprintf(xine, XINE_VERBOSITY_DEBUG, "\nnet_buf_ctrl: nbc_close: done\n");
}
-
-
-void nbc_set_high_water_mark(nbc_t *this, int value) {
-/*
- Deprecated
- this->high_water_mark = value;
-*/
- xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
- "\nnet_buf_ctrl: this method is deprecated, please fix the input plugin\n");
-}
-
-void nbc_set_low_water_mark(nbc_t *this, int value) {
-/*
- Deprecated
- this->low_water_mark = value;
-*/
- xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
- "\nnet_buf_ctrl: this method is deprecated, please fix the input plugin\n");
-}
diff --git a/src/input/net_buf_ctrl.h b/src/input/net_buf_ctrl.h
index c35187179..87d6d84a1 100644
--- a/src/input/net_buf_ctrl.h
+++ b/src/input/net_buf_ctrl.h
@@ -29,12 +29,6 @@ typedef struct nbc_s nbc_t;
nbc_t *nbc_init (xine_stream_t *xine);
-void nbc_check_buffers (nbc_t *this);
-
void nbc_close (nbc_t *this);
-void nbc_set_high_water_mark(nbc_t *this, int value);
-
-void nbc_set_low_water_mark(nbc_t *this, int value);
-
#endif
diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c
index 531fb780e..6cc1d8785 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/post/audio/stretch.c b/src/post/audio/stretch.c
index bc079fd8d..5a0382895 100644
--- a/src/post/audio/stretch.c
+++ b/src/post/audio/stretch.c
@@ -662,7 +662,7 @@ static post_plugin_t *stretch_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
void *stretch_init_plugin(xine_t *xine, void *data)
{
- post_class_stretch_t *class = (post_class_stretch_t *)malloc(sizeof(post_class_stretch_t));
+ post_class_stretch_t *class = (post_class_stretch_t *)xine_xmalloc(sizeof(post_class_stretch_t));
if (!class)
return NULL;
diff --git a/src/post/audio/upmix.c b/src/post/audio/upmix.c
index 30fbb452b..573354450 100644
--- a/src/post/audio/upmix.c
+++ b/src/post/audio/upmix.c
@@ -417,7 +417,7 @@ static post_plugin_t *upmix_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
void *upmix_init_plugin(xine_t *xine, void *data)
{
- post_class_upmix_t *class = (post_class_upmix_t *)malloc(sizeof(post_class_upmix_t));
+ post_class_upmix_t *class = (post_class_upmix_t *)xine_xmalloc(sizeof(post_class_upmix_t));
if (!class)
return NULL;
diff --git a/src/post/audio/upmix_mono.c b/src/post/audio/upmix_mono.c
index 53fd23109..82ceb1877 100644
--- a/src/post/audio/upmix_mono.c
+++ b/src/post/audio/upmix_mono.c
@@ -332,7 +332,7 @@ static post_plugin_t *upmix_mono_open_plugin(post_class_t *class_gen, int inputs
/* plugin class initialization function */
void *upmix_mono_init_plugin(xine_t *xine, void *data)
{
- post_class_upmix_mono_t *class = (post_class_upmix_mono_t *)malloc(sizeof(post_class_upmix_mono_t));
+ post_class_upmix_mono_t *class = (post_class_upmix_mono_t *)xine_xmalloc(sizeof(post_class_upmix_mono_t));
if (!class)
return NULL;
diff --git a/src/post/audio/volnorm.c b/src/post/audio/volnorm.c
index 4fb2a0411..de4ebde87 100644
--- a/src/post/audio/volnorm.c
+++ b/src/post/audio/volnorm.c
@@ -450,7 +450,7 @@ static post_plugin_t *volnorm_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
void *volnorm_init_plugin(xine_t *xine, void *data)
{
- post_class_volnorm_t *class = (post_class_volnorm_t *)malloc(sizeof(post_class_volnorm_t));
+ post_class_volnorm_t *class = (post_class_volnorm_t *)xine_xmalloc(sizeof(post_class_volnorm_t));
if (!class)
return NULL;
diff --git a/src/post/visualizations/fft.c b/src/post/visualizations/fft.c
index e9a99911a..01044987b 100644
--- a/src/post/visualizations/fft.c
+++ b/src/post/visualizations/fft.c
@@ -184,18 +184,6 @@ double fft_amp (int n, complex_t wave[], int bits)
}
/*
- * Calculate phase of component n in the decimated wave[] array.
- */
-double fft_phase (int n, complex_t wave[], int bits)
-{
- n = PERMUTE (n, bits);
- if (REAL(n) != 0.0)
- return (atan (IMAG(n) / REAL(n)));
- else
- return (0.0);
-}
-
-/*
* Scale sampled values.
* Do this *before* the fft.
*/
diff --git a/src/post/visualizations/fft.h b/src/post/visualizations/fft.h
index dff3cd7e8..1600430bc 100644
--- a/src/post/visualizations/fft.h
+++ b/src/post/visualizations/fft.h
@@ -44,7 +44,6 @@ void fft_compute (fft_t *fft, complex_t wave[]);
void fft_window (fft_t *fft, complex_t wave[]);
double fft_amp (int n, complex_t wave[], int bits);
-double fft_phase (int n, complex_t wave[], int bits);
void fft_scale (complex_t wave[], int bits);
#endif /* FFT_H */
diff --git a/src/post/visualizations/fftgraph.c b/src/post/visualizations/fftgraph.c
index c31c529f2..39d17c730 100644
--- a/src/post/visualizations/fftgraph.c
+++ b/src/post/visualizations/fftgraph.c
@@ -455,7 +455,7 @@ static post_plugin_t *fftgraph_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
void *fftgraph_init_plugin(xine_t *xine, void *data)
{
- post_class_fftgraph_t *class = (post_class_fftgraph_t *)malloc(sizeof(post_class_fftgraph_t));
+ post_class_fftgraph_t *class = (post_class_fftgraph_t *)xine_xmalloc(sizeof(post_class_fftgraph_t));
if (!class)
return NULL;
diff --git a/src/post/visualizations/fftscope.c b/src/post/visualizations/fftscope.c
index dd474bd6f..1a9ea905a 100644
--- a/src/post/visualizations/fftscope.c
+++ b/src/post/visualizations/fftscope.c
@@ -476,7 +476,7 @@ static post_plugin_t *fftscope_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
void *fftscope_init_plugin(xine_t *xine, void *data)
{
- post_class_fftscope_t *class = (post_class_fftscope_t *)malloc(sizeof(post_class_fftscope_t));
+ post_class_fftscope_t *class = (post_class_fftscope_t *)xine_xmalloc(sizeof(post_class_fftscope_t));
if (!class)
return NULL;
diff --git a/src/post/visualizations/fooviz.c b/src/post/visualizations/fooviz.c
index 2cf77cadc..3e5702168 100644
--- a/src/post/visualizations/fooviz.c
+++ b/src/post/visualizations/fooviz.c
@@ -287,7 +287,7 @@ static post_plugin_t *fooviz_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
static void *fooviz_init_plugin(xine_t *xine, void *data)
{
- post_class_fooviz_t *class = (post_class_fooviz_t *)malloc(sizeof(post_class_fooviz_t));
+ post_class_fooviz_t *class = (post_class_fooviz_t *)xine_xmalloc(sizeof(post_class_fooviz_t));
if (!class)
return NULL;
diff --git a/src/post/visualizations/oscope.c b/src/post/visualizations/oscope.c
index 1d498980a..7c9faeeaa 100644
--- a/src/post/visualizations/oscope.c
+++ b/src/post/visualizations/oscope.c
@@ -358,7 +358,7 @@ static post_plugin_t *oscope_open_plugin(post_class_t *class_gen, int inputs,
/* plugin class initialization function */
void *oscope_init_plugin(xine_t *xine, void *data)
{
- post_class_oscope_t *class = (post_class_oscope_t *)malloc(sizeof(post_class_oscope_t));
+ post_class_oscope_t *class = (post_class_oscope_t *)xine_xmalloc(sizeof(post_class_oscope_t));
if (!class)
return NULL;
diff --git a/src/spu_dec/sputext_decoder.c b/src/spu_dec/sputext_decoder.c
index 093fca1e7..0cc0ee21b 100644
--- a/src/spu_dec/sputext_decoder.c
+++ b/src/spu_dec/sputext_decoder.c
@@ -507,11 +507,52 @@ static void read_ssa_tag(sputext_decoder_t *this, const char* text,
(*sub_x), (*sub_y), (*max_width), (*alignment));
}
+static int is_cjk_encoding(const char *enc) {
+ /* CJK charset strings defined in iconvdata/gconv-modules of glibc */
+ static const char cjk_encoding_strings[][16] = {
+ "SJIS",
+ "CP932",
+ "EUC-KR",
+ "UHC",
+ "JOHAB",
+ "BIG5",
+ "BIG5HKSCS",
+ "EUC-JP-MS",
+ "EUC-JP",
+ "EUC-CN",
+ "GBBIG5",
+ "GBK",
+ "GBGBK",
+ "EUC-TW",
+ "ISO-2022-JP",
+ "ISO-2022-JP-2",
+ "ISO-2022-JP-3",
+ "ISO-2022-KR",
+ "ISO-2022-CN",
+ "ISO-2022-CN-EXT",
+ "GB18030",
+ "EUC-JISX0213",
+ "SHIFT_JISX0213",
+ };
+
+ int pstr;
+
+ /* return 1 if encoding string is one of the CJK(Chinese,Jananese,Korean)
+ * character set strings. */
+ for (pstr = 0; pstr < sizeof (cjk_encoding_strings) / sizeof (cjk_encoding_strings[0]); pstr++)
+ if (strcasecmp (enc, cjk_encoding_strings[pstr]) == 0)
+ return 1;
+
+ return 0;
+}
+
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 sub_x, sub_y, max_width;
int alignment;
int rebuild_all;
@@ -720,7 +761,12 @@ static void draw_subtitle(sputext_decoder_t *this, int64_t sub_start, int64_t su
}
}
- ogm_render_line(this, x, y + line*this->line_height, this->text[line]);
+ if( is_cjk_encoding(encoding) ) {
+ this->renderer->render_text (this->osd, x, y + line * this->line_height,
+ this->text[line], OSD_TEXT1);
+ } else {
+ ogm_render_line(this, x, y + line*this->line_height, this->text[line]);
+ }
}
if( font_size != this->font_size )
diff --git a/src/vdr/post_vdr_audio.c b/src/vdr/post_vdr_audio.c
index ca45ecd35..49de8f9cf 100644
--- a/src/vdr/post_vdr_audio.c
+++ b/src/vdr/post_vdr_audio.c
@@ -71,7 +71,7 @@ static void vdr_audio_port_put_buffer(xine_audio_port_t *port_gen, aud
void *vdr_audio_init_plugin(xine_t *xine, void *data)
{
- post_class_t *class = (post_class_t *)malloc(sizeof (post_class_t));
+ post_class_t *class = (post_class_t *)xine_xmalloc(sizeof (post_class_t));
if (!class)
return NULL;
diff --git a/src/vdr/post_vdr_video.c b/src/vdr/post_vdr_video.c
index ff6c32504..178538655 100644
--- a/src/vdr/post_vdr_video.c
+++ b/src/vdr/post_vdr_video.c
@@ -23,9 +23,9 @@
*/
#define LOG_MODULE "vdr_video"
-#define LOG_VERBOSE
/*
#define LOG
+#define LOG_VERBOSE
*/
#include <xine/xine_internal.h>
@@ -94,7 +94,7 @@ static int vdr_video_draw(vo_frame_t *frame, xine_stream_t *stream);
void *vdr_video_init_plugin(xine_t *xine, void *data)
{
- post_class_t *class = (post_class_t *)malloc(sizeof (post_class_t));
+ post_class_t *class = (post_class_t *)xine_xmalloc(sizeof (post_class_t));
if (!class)
return NULL;
@@ -437,12 +437,14 @@ static int vdr_video_draw(vo_frame_t *frame, xine_stream_t *stream)
frame->next->pts = 0;
}
*/
+#if defined(LOG) && defined(LOG_VERBOSE)
{
int a = 0, b = 0, c = 0, d = 0;
if (stream)
_x_query_buffer_usage(stream, &a, &b, &c, &d);
- fprintf(stderr, "buffer usage: %3d, %2d, %2d, %2d, %p\n", a, b, c, d, stream);
+ lprintf("buffer usage: %3d, %2d, %2d, %2d, %p\n", a, b, c, d, stream);
}
+#endif
if (!this->enabled
|| frame->bad_frame
diff --git a/src/video_out/Makefile.am b/src/video_out/Makefile.am
index 0a60d242e..062c7aa68 100644
--- a/src/video_out/Makefile.am
+++ b/src/video_out/Makefile.am
@@ -12,7 +12,7 @@ endif
EXTRA_DIST = video_out_directx.c video_out_macosx.m
-noinst_HEADERS = video_out_syncfb.h yuv2rgb.h x11osd.h xcbosd.h
+noinst_HEADERS = yuv2rgb.h x11osd.h xcbosd.h xv_common.h
if HAVE_X11
X11OSD = x11osd.c
@@ -29,9 +29,6 @@ endif
if ENABLE_OPENGL
opengl_module = xineplug_vo_out_opengl.la
endif
-if ENABLE_SYNCFB
-syncfb_module = xineplug_vo_out_syncfb.la
-endif
if ENABLE_SUNFB
if ENABLE_SUNDGA
pgx64_module = xineplug_vo_out_pgx64.la
@@ -99,7 +96,6 @@ libyuv2rgb_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(AVUTIL_LIBS)
xineplug_LTLIBRARIES = $(xshm_module) $(xv_module) $(xvmc_module) \
$(opengl_module) \
- $(syncfb_module) \
$(pgx64_module) $(pgx32_module)\
$(vidix_module) \
$(aa_module) \
@@ -141,12 +137,9 @@ xineplug_vo_out_xxmc_la_CFLAGS = $(AM_CFLAGS) $(X_CFLAGS) $(XV_CFLAGS) -fno-stri
xineplug_vo_out_opengl_la_SOURCES = video_out_opengl.c myglext.h $(X11OSD)
xineplug_vo_out_opengl_la_LIBADD = libyuv2rgb.la $(OPENGL_LIBS) $(GLUT_LIBS) \
- $(GLU_LIBS) $(X_LIBS) $(XINE_LIB) $(PTHREAD_LIBS) $(DYNAMIC_LD_LIBS) $(LTLIBINTL) $(AVUTIL_LIBS)
+ $(GLUT_LIBS) $(GLU_LIBS) $(X_LIBS) $(XINE_LIB) $(PTHREAD_LIBS) $(DYNAMIC_LD_LIBS) $(LTLIBINTL) $(AVUTIL_LIBS)
xineplug_vo_out_opengl_la_CFLAGS = $(AM_CFLAGS) $(X_CFLAGS) $(AVUTIL_CFLAGS) -fno-strict-aliasing
-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_pgx64_la_SOURCES = video_out_pgx64.c
xineplug_vo_out_pgx64_la_LIBADD = $(XINE_LIB) $(X_LIBS) $(SUNDGA_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_pgx64_la_CFLAGS = $(AM_CFLAGS) $(X_CFLAGS)
diff --git a/src/video_out/macosx/XineOpenGLView.m b/src/video_out/macosx/XineOpenGLView.m
index 5ed515704..cad087551 100644
--- a/src/video_out/macosx/XineOpenGLView.m
+++ b/src/video_out/macosx/XineOpenGLView.m
@@ -336,7 +336,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_directfb.c b/src/video_out/video_out_directfb.c
index d85df411a..fecc2c5b0 100644
--- a/src/video_out/video_out_directfb.c
+++ b/src/video_out/video_out_directfb.c
@@ -1742,6 +1742,20 @@ static void directfb_frame_output_cb (void *user_data, int video_width, int vide
/*** DirectFB plugin functions ***/
+static inline int convert_caps (DFBDisplayLayerCapabilities caps)
+{
+ int vo = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
+ if (caps & DLCAPS_HUE)
+ vo |= VO_CAP_HUE;
+ if (caps & DLCAPS_SATURATION)
+ vo |= VO_CAP_SATURATION;
+ if (caps & DLCAPS_CONTRAST)
+ vo |= VO_CAP_CONTRAST;
+ if (caps & DLCAPS_BRIGHTNESS)
+ vo |= VO_CAP_BRIGHTNESS;
+ return vo;
+}
+
static vo_driver_t *open_plugin_fb (video_driver_class_t *class_gen, const void *visual_gen) {
directfb_class_t *class = (directfb_class_t *) class_gen;
directfb_driver_t *this;
@@ -1821,7 +1835,7 @@ static vo_driver_t *open_plugin_fb (video_driver_class_t *class_gen, const void
return NULL;
}
- this->capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP;
+ this->capabilities = convert_caps (this->caps);
/* set default configuration */
this->buffermode = 1; // double
this->vsync = 0;
@@ -2000,7 +2014,7 @@ static vo_driver_t *open_plugin_x11 (video_driver_class_t *class_gen, const void
xprintf (this->xine, XINE_VERBOSITY_LOG,
_("video_out_directfb: using display layer #%d.\n"), id);
- this->capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP;
+ this->capabilities = convert_caps (this->caps);
/* set default configuration */
this->buffermode = 1; // double
this->vsync = 0;
diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c
index cb327109e..dc3d683e1 100644
--- a/src/video_out/video_out_fb.c
+++ b/src/video_out/video_out_fb.c
@@ -156,7 +156,7 @@ typedef struct
static uint32_t fb_get_capabilities(vo_driver_t *this_gen)
{
- return VO_CAP_YV12 | VO_CAP_YUY2;
+ return VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_CONTRAST | VO_CAP_SATURATION;
}
static void fb_frame_proc_slice(vo_frame_t *vo_img, uint8_t **src)
diff --git a/src/video_out/video_out_opengl.c b/src/video_out/video_out_opengl.c
index febf44519..c1416963c 100644
--- a/src/video_out/video_out_opengl.c
+++ b/src/video_out/video_out_opengl.c
@@ -1202,7 +1202,7 @@ static void *render_run (opengl_driver_t *this) {
static uint32_t opengl_get_capabilities (vo_driver_t *this_gen) {
/* opengl_driver_t *this = (opengl_driver_t *) this_gen; */
- uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2;
+ uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_CONTRAST | VO_CAP_SATURATION;
/* TODO: somehow performance goes down during the first few frames */
/* if (this->xoverlay) */
diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c
index d0e74b1e3..0bdcc35fe 100644
--- a/src/video_out/video_out_pgx64.c
+++ b/src/video_out/video_out_pgx64.c
@@ -552,8 +552,7 @@ static uint32_t pgx64_get_capabilities(vo_driver_t *this_gen)
{
/*pgx64_driver_t *this = (pgx64_driver_t *)(void *)this_gen;*/
- return VO_CAP_YV12 |
- VO_CAP_YUY2;
+ return VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_SATURATION;
}
static vo_frame_t *pgx64_alloc_frame(vo_driver_t *this_gen)
diff --git a/src/video_out/video_out_syncfb.c b/src/video_out/video_out_syncfb.c
deleted file mode 100644
index 983cd9b64..000000000
--- a/src/video_out/video_out_syncfb.c
+++ /dev/null
@@ -1,1116 +0,0 @@
-/*
- * Copyright (C) 2000-2003 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
- *
- * video_out_syncfb.c, SyncFB (for Matrox G200/G400 cards) interface for xine
- *
- * based on video_out_xv.c by (see file for original authors)
- *
- * with lot's of code from:
- * video_out_syncfb.c by Joachim Koenig <joachim.koenig@gmx.net>
- * and by Matthias Oelmann <mao@well.com>
- * video_out_mga by Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
- *
- * glued together for xine by Matthias Dahl <matthew2k@web.de>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef __sun
-#include <sys/ioccom.h>
-#endif
-
-#include <sys/ioctl.h>
-#if defined (__FreeBSD__)
-#include <sys/types.h>
-#endif
-#include <sys/mman.h>
-#include <math.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#include "video_out_syncfb.h"
-
-#include "xine.h"
-#include <xine/video_out.h>
-#include <xine/xine_internal.h>
-#include <xine/xineutils.h>
-#include <xine/vo_scale.h>
-
-/*#define DEBUG_OUTPUT*/
-
-typedef struct syncfb_driver_s syncfb_driver_t;
-
-typedef struct {
- int value;
- int min;
- int max;
-} syncfb_property_t;
-
-typedef struct {
- vo_frame_t vo_frame;
-/* uint8_t* data_mem[3];*/
- int width, height, format;
- double ratio;
-} syncfb_frame_t;
-
-struct syncfb_driver_s {
-
- vo_driver_t vo_driver;
-
- config_values_t *config;
-
- /* X11 related stuff */
- Display *display;
- int screen;
- Drawable drawable;
- XVisualInfo vinfo;
- GC gc;
- XColor black;
-
- vo_scale_t sc;
-
- int virtual_screen_width;
- int virtual_screen_height;
- int screen_depth;
-
- syncfb_property_t props[VO_NUM_PROPERTIES];
-
- syncfb_frame_t* cur_frame;
- vo_overlay_t* overlay;
-
- /* syncfb module related stuff */
- int fd; /* file descriptor of the syncfb device */
- int yuv_format; /* either YUV420P3, YUV420P2 or YUV422 */
- int overlay_state; /* 0 = off, 1 = on */
- uint8_t* video_mem; /* mmapped video memory */
- int default_repeat; /* how many times a frame will be repeatedly displayed */
- uint32_t supported_capabilities;
-
- syncfb_config_t syncfb_config;
- syncfb_capability_t capabilities;
- syncfb_buffer_info_t bufinfo;
- syncfb_param_t params;
-
- int video_win_visibility;
- xine_t *xine;
-
- alphablend_t alphablend_extra_data;
-};
-
-typedef struct {
- video_driver_class_t driver_class;
-
- config_values_t *config;
- char *device_name;
- xine_t *xine;
-} syncfb_class_t;
-
-/*
- * internal video_out_syncfb functions
- */
-
-/* returns boolean value (1 success, 0 failure) */
-static int syncfb_overlay_on(syncfb_driver_t* this)
-{
- if(ioctl(this->fd, SYNCFB_ON)) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (on ioctl failed)\n");
- return 0;
- } else {
- this->overlay_state = 1;
- return 1;
- }
-}
-
-/* returns boolean value (1 success, 0 failure) */
-static int syncfb_overlay_off(syncfb_driver_t* this)
-{
- if(ioctl(this->fd, SYNCFB_OFF)) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (off ioctl failed)\n");
- return 0;
- } else {
- this->overlay_state = 0;
- return 1;
- }
-}
-
-static void write_frame_YUV422(syncfb_driver_t* this, syncfb_frame_t* frame)
-{
- uint8_t* y = (uint_8 *)frame->vo_frame.base[0];
- uint8_t* cb = (uint_8 *)frame->vo_frame.base[1];
- uint8_t* cr = (uint_8 *)frame->vo_frame.base[2];
- uint8_t* crp;
- uint8_t* cbp;
- uint32_t* dst32 = (uint32_t *)(this->video_mem + this->bufinfo.offset);
- int h,w;
-
- for(h = 0; h < (frame->height / 2); h++) {
- cbp = cb;
- crp = cr;
-
- for(w = 0; w < (frame->width / 2); w++) {
- *dst32++ = (*y) + ((*cb)<<8) + ((*(y+1))<<16) + ((*cr)<<24);
- y++; y++; cb++; cr++;
- }
-
- dst32 += (this->syncfb_config.src_pitch - frame->width) / 2;
-
- for(w=0; w < (frame->width / 2); w++) {
- *dst32++ = (*y) + ((*cbp)<<8) + ((*(y+1))<<16) + ((*crp)<<24);
- y++; y++; cbp++; crp++;
- }
-
- dst32 += (this->syncfb_config.src_pitch - frame->width) / 2;
- }
-}
-
-static void write_frame_YUV420P2(syncfb_driver_t* this, syncfb_frame_t* frame)
-{
- uint8_t* y = (uint8_t *)frame->vo_frame.base[0];
- uint8_t* cb = (uint8_t *)frame->vo_frame.base[1];
- uint8_t* cr = (uint8_t *)frame->vo_frame.base[2];
- uint8_t* dst8 = this->video_mem + this->bufinfo.offset_p2;
- int h, w;
-
- register uint32_t* tmp32;
- register uint8_t* rcr;
- register uint8_t* rcb;
-
- rcr = cr;
- rcb = cb;
-
- for(h = 0; h < (frame->height / 2); h++) {
- tmp32 = (uint32_t *)dst8;
- w = (frame->width / 8) * 2;
-
- while(w--) {
- register uint32_t temp;
-
- temp = (*rcb) | (*rcr << 8);
- rcr++;
- rcb++;
- temp |= (*rcb << 16) | (*rcr << 24);
- rcr++;
- rcb++;
- *tmp32 = temp;
- tmp32++;
- }
-
- dst8 += this->syncfb_config.src_pitch;
- }
-
- dst8 = this->video_mem + this->bufinfo.offset;
- for(h = 0; h < frame->height; h++) {
- xine_fast_memcpy(dst8, y, frame->width);
- y += frame->width;
- dst8 += this->syncfb_config.src_pitch;
- }
-}
-
-static void write_frame_YUV420P3(syncfb_driver_t* this, syncfb_frame_t* frame)
-{
- uint8_t* y = (uint8_t *)frame->vo_frame.base[0];
- uint8_t* cb = (uint8_t *)frame->vo_frame.base[1];
- uint8_t* cr = (uint8_t *)frame->vo_frame.base[2];
- uint8_t* dst8 = this->video_mem + this->bufinfo.offset;
- int h, half_width = (frame->width/2);
-
- for(h = 0; h < frame->height; h++) {
- xine_fast_memcpy(dst8, y, frame->width);
- y += frame->width;
- dst8 += this->syncfb_config.src_pitch;
- }
-
- dst8 = this->video_mem;
- for(h = 0; h < (frame->height / 2); h++) {
- xine_fast_memcpy((dst8 + this->bufinfo.offset_p2), cb, half_width);
- xine_fast_memcpy((dst8 + this->bufinfo.offset_p3), cr, half_width);
-
- cb += half_width;
- cr += half_width;
-
- dst8 += (this->syncfb_config.src_pitch / 2);
- }
-}
-
-static void write_frame_YUY2(syncfb_driver_t* this, syncfb_frame_t* frame)
-{
- uint8_t* src8 = (uint8_t *)frame->vo_frame.base[0];
- uint8_t* dst8 = (uint8_t *)(this->video_mem + this->bufinfo.offset);
- int h, double_width = (frame->width * 2);
-
- for(h = 0; h < frame->height; h++) {
- xine_fast_memcpy(dst8, src8, double_width);
-
- dst8 += (this->syncfb_config.src_pitch * 2);
- src8 += double_width;
- }
-}
-
-static void write_frame_sfb(syncfb_driver_t* this, syncfb_frame_t* frame)
-{
- switch(frame->format) {
- case XINE_IMGFMT_YUY2:
- if(this->capabilities.palettes & (1<<VIDEO_PALETTE_YUV422))
- write_frame_YUY2(this, frame);
- else
- xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("video_out_syncfb: error. (YUY2 not supported by your graphic card)\n"));
- break;
-
- case XINE_IMGFMT_YV12:
- switch(this->yuv_format) {
- case VIDEO_PALETTE_YUV422:
- write_frame_YUV422(this, frame);
- break;
- case VIDEO_PALETTE_YUV420P2:
- write_frame_YUV420P2(this, frame);
- break;
- case VIDEO_PALETTE_YUV420P3:
- write_frame_YUV420P3(this, frame);
- break;
- default:
- xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("video_out_syncfb: error. (YV12 not supported by your graphic card)\n"));
- }
- break;
-
- default:
- xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_syncfb: error. (unknown frame format)\n");
- break;
- }
-
- frame->vo_frame.free(&frame->vo_frame);
-}
-
-static void free_framedata(syncfb_frame_t* frame)
-{
-/* if(frame->data_mem[0]) {
- free(frame->data_mem[0]);
- frame->data_mem[0] = NULL;
- }
-
- if(frame->data_mem[1]) {
- free(frame->data_mem[1]);
- frame->data_mem[1] = NULL;
- }
-
- if(frame->data_mem[2]) {
- free(frame->data_mem[2]);
- frame->data_mem[2] = NULL;
- }*/
-
- if(frame->vo_frame.base[0]) {
- free(frame->vo_frame.base[0]);
- frame->vo_frame.base[0] = NULL;
- }
-
- if(frame->vo_frame.base[1]) {
- free(frame->vo_frame.base[1]);
- frame->vo_frame.base[1] = NULL;
- }
-
- if(frame->vo_frame.base[2]) {
- free(frame->vo_frame.base[2]);
- frame->vo_frame.base[2] = NULL;
- }
-}
-
-static void syncfb_clean_output_area(syncfb_driver_t* this)
-{
- XLockDisplay (this->display);
-
- XSetForeground (this->display, this->gc, this->black.pixel);
-
- XFillRectangle(this->display, this->drawable, this->gc,
- this->sc.gui_x, this->sc.gui_y, this->sc.gui_width, this->sc.gui_height);
-
- XUnlockDisplay (this->display);
-}
-
-
-static void syncfb_compute_ideal_size (syncfb_driver_t *this)
-{
- _x_vo_scale_compute_ideal_size( &this->sc );
-}
-
-/* make ideal width/height "fit" into the gui */
-static void syncfb_compute_output_size(syncfb_driver_t *this)
-{
- _x_vo_scale_compute_output_size( &this->sc );
-
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (frame source %d x %d, screen output %d x %d)\n",
- this->sc.delivered_width, this->sc.delivered_height,
- this->sc.output_width, this->sc.output_height);
-#endif
-
- /*
- * configuring SyncFB module from this point on.
- */
- syncfb_overlay_off(this);
-
- /* sanity checking - certain situations *may* crash the SyncFB module, so
- * take care that we always have valid numbers.
- */
- if(this->sc.output_xoffset >= 0 && this->sc.output_yoffset >= 0 &&
- this->cur_frame->width > 0 && this->cur_frame->height > 0 &&
- this->sc.output_width > 0 && this->sc.output_height > 0 &&
- this->cur_frame->format > 0 && this->video_win_visibility) {
-
- if(ioctl(this->fd, SYNCFB_GET_CONFIG, &this->syncfb_config))
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (get_config ioctl failed)\n");
-
- this->syncfb_config.syncfb_mode = SYNCFB_FEATURE_SCALE | SYNCFB_FEATURE_CROP;
-
- if(this->props[VO_PROP_INTERLACED].value)
- this->syncfb_config.syncfb_mode |= SYNCFB_FEATURE_DEINTERLACE;
-
- switch(this->cur_frame->format) {
- case XINE_IMGFMT_YV12:
- this->syncfb_config.src_palette = this->yuv_format;
- break;
- case XINE_IMGFMT_YUY2:
- this->syncfb_config.src_palette = VIDEO_PALETTE_YUV422;
- break;
- default:
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (unknown frame format)\n");
- this->syncfb_config.src_palette = 0;
- break;
- }
-
- this->syncfb_config.fb_screen_size = this->virtual_screen_width * this->virtual_screen_height * (this->screen_depth / 8) * 2;
- this->syncfb_config.src_width = this->cur_frame->width;
- this->syncfb_config.src_height = this->cur_frame->height;
-
- this->syncfb_config.image_width = this->sc.output_width;
- this->syncfb_config.image_height = this->sc.output_height;
-
- this->syncfb_config.image_xorg = this->sc.output_xoffset + this->sc.gui_win_x;
- this->syncfb_config.image_yorg = this->sc.output_yoffset + this->sc.gui_win_y;
-
- this->syncfb_config.src_crop_top = this->sc.displayed_yoffset;
- this->syncfb_config.src_crop_bot = (this->props[VO_PROP_INTERLACED].value && this->sc.displayed_yoffset == 0) ? 1 : this->sc.displayed_yoffset;
- this->syncfb_config.src_crop_left = this->sc.displayed_xoffset;
- this->syncfb_config.src_crop_right = this->sc.displayed_xoffset;
-
- this->syncfb_config.default_repeat = (this->props[VO_PROP_INTERLACED].value) ? 1 : this->default_repeat;
-
- if(this->capabilities.palettes & (1<<this->syncfb_config.src_palette)) {
- if(ioctl(this->fd,SYNCFB_SET_CONFIG,&this->syncfb_config))
- xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_syncfb: error. (set_config ioctl failed)\n");
-
- syncfb_overlay_on(this);
- }
- }
-}
-
-/*
- * public functions defined and used by the xine interface
- */
-
-static int syncfb_redraw_needed(vo_driver_t* this_gen)
-{
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
-
- int ret = 0;
-
- if( _x_vo_scale_redraw_needed( &this->sc ) ) {
-
- syncfb_compute_output_size (this);
-
- syncfb_clean_output_area (this);
-
- ret = 1;
- }
-
- return ret;
-}
-
-static uint32_t syncfb_get_capabilities (vo_driver_t *this_gen)
-{
- syncfb_driver_t *this = (syncfb_driver_t *) this_gen;
-
- return this->supported_capabilities;
-}
-
-static void syncfb_frame_field (vo_frame_t *vo_img, int which_field)
-{
- /* not needed for SyncFB */
-}
-
-static void syncfb_frame_dispose(vo_frame_t* vo_img)
-{
- syncfb_frame_t* frame = (syncfb_frame_t *) vo_img;
-
- if(frame) {
- free_framedata(frame);
- free(frame);
- }
-}
-
-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));
- if(!frame)
- return NULL;
-
- pthread_mutex_init(&frame->vo_frame.mutex, NULL);
-
- frame->vo_frame.base[0] = NULL;
- frame->vo_frame.base[1] = NULL;
- frame->vo_frame.base[2] = NULL;
-
- /*
- * supply required functions
- */
- frame->vo_frame.proc_slice = NULL;
- frame->vo_frame.proc_frame = NULL;
- frame->vo_frame.field = syncfb_frame_field;
- frame->vo_frame.dispose = syncfb_frame_dispose;
-
- frame->vo_frame.driver = this_gen;
-
- return (vo_frame_t *) frame;
-}
-
-static void syncfb_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)
-{
- syncfb_driver_t *this = (syncfb_driver_t *) this_gen;
- syncfb_frame_t *frame = (syncfb_frame_t *) frame_gen;
- /* uint32_t frame_size = width*height; */
-
- if((frame->width != width)
- || (frame->height != height)
- || (frame->format != format)) {
-
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (update frame format: old values [width=%d, height=%d, format=%04x], new values [width=%d, height=%d, format=%04x])\n", frame->width, frame->height, frame->format, width, height, format);
-#endif
- free_framedata(frame);
-
- frame->width = width;
- frame->height = height;
- frame->format = format;
-
- switch(format) {
- case 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] = malloc(frame->vo_frame.pitches[0] * height);
- frame->vo_frame.base[1] = malloc(frame->vo_frame.pitches[1] * ((height+1)/2));
- frame->vo_frame.base[2] = malloc(frame->vo_frame.pitches[2] * ((height+1)/2));
- break;
- case XINE_IMGFMT_YUY2:
- frame->vo_frame.pitches[0] = 8*((width + 3) / 4);
- frame->vo_frame.base[0] = malloc(frame->vo_frame.pitches[0] * height);
- frame->vo_frame.base[1] = NULL;
- frame->vo_frame.base[2] = NULL;
- break;
- default:
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (unable to allocate "
- "framedata because of unknown frame format: %04x)\n", format);
- }
-
-/* if((format == IMGFMT_YV12 && (frame->data_mem[0] == NULL || frame->data_mem[1] == NULL || frame->data_mem[2] == NULL))
- || (format == IMGFMT_YUY2 && frame->data_mem[0] == NULL)) {*/
- if((format == XINE_IMGFMT_YV12 && (frame->vo_frame.base[0] == NULL || frame->vo_frame.base[1] == NULL || frame->vo_frame.base[2] == NULL))
- || (format == XINE_IMGFMT_YUY2 && frame->vo_frame.base[0] == NULL)) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (framedata allocation failed: out of memory)\n");
-
- free_framedata(frame);
- }
- }
-
- frame->ratio = ratio;
-}
-
-static void syncfb_overlay_blend(vo_driver_t* this_gen, vo_frame_t* frame_gen, vo_overlay_t* overlay)
-{
- syncfb_frame_t* frame = (syncfb_frame_t *) frame_gen;
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
-
- this->alphablend_extra_data.offset_x = frame_gen->overlay_offset_x;
- this->alphablend_extra_data.offset_y = frame_gen->overlay_offset_y;
-
- /* alpha blend here */
- if (overlay->rle) {
- if (frame->format == XINE_IMGFMT_YV12)
- _x_blend_yuv(frame->vo_frame.base, overlay, frame->width, frame->height, frame->vo_frame.pitches, &this->alphablend_extra_data);
- else
- _x_blend_yuy2(frame->vo_frame.base[0], overlay, frame->width, frame->height, frame->vo_frame.pitches[0], &this->alphablend_extra_data);
- }
-}
-
-static void syncfb_display_frame(vo_driver_t* this_gen, vo_frame_t* frame_gen)
-{
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
- syncfb_frame_t* frame = (syncfb_frame_t *) frame_gen;
-
- this->cur_frame = frame;
-
- /*
- * let's see if this frame is different in size / aspect
- * ratio from the previous one
- */
- if((frame->width != this->sc.delivered_width)
- || (frame->height != this->sc.delivered_height)
- || (frame->ratio != this->sc.delivered_ratio)) {
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (frame format changed)\n");
-#endif
-
- this->sc.delivered_width = frame->width;
- this->sc.delivered_height = frame->height;
- this->sc.delivered_ratio = frame->ratio;
-
- this->sc.crop_left = frame->vo_frame.crop_left;
- this->sc.crop_right = frame->vo_frame.crop_right;
- this->sc.crop_top = frame->vo_frame.crop_top;
- this->sc.crop_bottom = frame->vo_frame.crop_bottom;
-
- syncfb_compute_ideal_size(this);
-
- this->sc.force_redraw = 1;
- }
-
- /*
- * tell gui that we are about to display a frame,
- * ask for offset and output size
- */
- syncfb_redraw_needed(this_gen);
-
- /* the rest is only successful and safe, if the overlay is really on */
- if(this->overlay_state) {
- if(this->bufinfo.id != -1) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (invalid syncfb image buffer state)\n");
- frame->vo_frame.free(&frame->vo_frame);
-
- return;
- }
-
- if(ioctl(this->fd, SYNCFB_REQUEST_BUFFER, &this->bufinfo))
- xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_syncfb: error. (request ioctl failed)\n");
-
- if(this->bufinfo.id == -1) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (syncfb module couldn't allocate image buffer)\n");
- frame->vo_frame.free(&frame->vo_frame);
-
- /*
- * there are several "fixable" situations when this request will fail.
- * for example when the screen resolution changes, the kernel module
- * will get confused - reinitializing everything will fix things for
- * the next frame in that case.
- */
- syncfb_compute_ideal_size(this);
- syncfb_compute_output_size(this);
- syncfb_clean_output_area(this);
-
- return;
- }
-
- write_frame_sfb(this, frame);
-
- if(ioctl(this->fd, SYNCFB_COMMIT_BUFFER, &this->bufinfo))
- xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_syncfb: error. (commit ioctl failed)\n");
- }
- else
- frame->vo_frame.free(&frame->vo_frame);
-
- this->bufinfo.id = -1;
-}
-
-static int syncfb_get_property(vo_driver_t* this_gen, int property)
-{
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
-
- switch (property) {
- case VO_PROP_WINDOW_WIDTH:
- this->props[property].value = this->sc.gui_width;
- break;
- case VO_PROP_WINDOW_HEIGHT:
- this->props[property].value = this->sc.gui_height;
- break;
- case VO_PROP_OUTPUT_WIDTH:
- this->props[property].value = this->sc.output_width;
- break;
- case VO_PROP_OUTPUT_HEIGHT:
- this->props[property].value = this->sc.output_height;
- break;
- case VO_PROP_OUTPUT_XOFFSET:
- this->props[property].value = this->sc.output_xoffset;
- break;
- case VO_PROP_OUTPUT_YOFFSET:
- this->props[property].value = this->sc.output_yoffset;
- break;
- }
-
- return this->props[property].value;
-}
-
-static int syncfb_set_property(vo_driver_t* this_gen, int property, int value)
-{
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
-
- switch (property) {
- case VO_PROP_INTERLACED:
- this->props[property].value = value;
-
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (VO_PROP_INTERLACED(%d))\n",
- this->props[property].value);
-#endif
-
- syncfb_compute_ideal_size(this);
- syncfb_compute_output_size(this);
- syncfb_clean_output_area(this);
- break;
-
- case VO_PROP_ASPECT_RATIO:
- if(value >= XINE_VO_ASPECT_NUM_RATIOS)
- value = XINE_VO_ASPECT_AUTO;
-
- this->props[property].value = value;
- this->sc.user_ratio = value;
-
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (VO_PROP_ASPECT_RATIO(%d))\n",
- this->props[property].value);
-#endif
-
- syncfb_compute_ideal_size(this);
- syncfb_compute_output_size(this);
- syncfb_clean_output_area(this);
- break;
-
- case VO_PROP_ZOOM_X:
- if ((value >= XINE_VO_ZOOM_MIN) && (value <= XINE_VO_ZOOM_MAX)) {
- this->props[property].value = value;
- this->sc.zoom_factor_x = (double)value / (double)XINE_VO_ZOOM_STEP;
-
- syncfb_compute_ideal_size (this);
-
- this->sc.force_redraw = 1;
- }
-/*
- printf("video_out_syncfb: info. (the zooming feature is not supported at the moment because of a bug with the SyncFB kernel driver, please refer to README.syncfb)\n");
-*/
- break;
-
- case VO_PROP_ZOOM_Y:
- if ((value >= XINE_VO_ZOOM_MIN) && (value <= XINE_VO_ZOOM_MAX)) {
- this->props[property].value = value;
- this->sc.zoom_factor_y = (double)value / (double)XINE_VO_ZOOM_STEP;
-
- syncfb_compute_ideal_size (this);
-
- this->sc.force_redraw = 1;
- }
-/*
- printf("video_out_syncfb: info. (the zooming feature is not supported at the moment because of a bug with the SyncFB kernel driver, please refer to README.syncfb)\n");
-*/
- break;
-
- case VO_PROP_CONTRAST:
- this->props[property].value = value;
-
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (VO_PROP_CONTRAST(%d))\n",
- this->props[property].value);
-#endif
-
- this->params.contrast = value;
- this->params.brightness = this->props[VO_PROP_BRIGHTNESS].value;
- this->params.image_width = this->syncfb_config.image_width; /* FIXME */
- this->params.image_height = this->syncfb_config.image_height;
- this->params.image_xorg = this->syncfb_config.image_xorg;
- this->params.image_yorg = this->syncfb_config.image_yorg;
-
- if(ioctl(this->fd,SYNCFB_SET_PARAMS,&this->params))
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (setting of contrast value failed)\n");
-
- break;
-
- case VO_PROP_BRIGHTNESS:
- this->props[property].value = value;
-
-#ifdef DEBUG_OUTPUT
- printf("video_out_syncfb: debug. (VO_PROP_BRIGHTNESS(%d))\n",
- this->props[property].value);
-#endif
-
- this->params.brightness = value;
- this->params.contrast = this->props[VO_PROP_CONTRAST].value;
- this->params.image_width = this->syncfb_config.image_width; /* FIXME */
- this->params.image_height = this->syncfb_config.image_height;
- this->params.image_xorg = this->syncfb_config.image_xorg;
- this->params.image_yorg = this->syncfb_config.image_yorg;
-
- if(ioctl(this->fd,SYNCFB_SET_PARAMS,&this->params))
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: error. (setting of brightness value failed)\n");
-
- break;
- }
-
- return value;
-}
-
-static void syncfb_get_property_min_max(vo_driver_t *this_gen,
- int property, int *min, int *max)
-{
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
-
- *min = this->props[property].min;
- *max = this->props[property].max;
-}
-
-static int syncfb_gui_data_exchange(vo_driver_t* this_gen, int data_type,
- void *data)
-{
- syncfb_driver_t* this = (syncfb_driver_t *) this_gen;
-
- switch (data_type) {
- case XINE_GUI_SEND_DRAWABLE_CHANGED:
- this->drawable = (Drawable) data;
-
- XLockDisplay (this->display);
- XFreeGC(this->display, this->gc);
- this->gc = XCreateGC (this->display, this->drawable, 0, NULL);
- XUnlockDisplay (this->display);
- break;
- case XINE_GUI_SEND_TRANSLATE_GUI_TO_VIDEO:
- {
- int x1, y1, x2, y2;
- x11_rectangle_t *rect = data;
-
- _x_vo_scale_translate_gui2video(&this->sc, rect->x, rect->y,
- &x1, &y1);
- _x_vo_scale_translate_gui2video(&this->sc, rect->x + rect->w, rect->y + rect->h,
- &x2, &y2);
- rect->x = x1;
- rect->y = y1;
- rect->w = x2-x1;
- rect->h = y2-y1;
- }
- break;
- /*
- case XINE_GUI_DATA_EX_VIDEOWIN_VISIBLE:
- this->video_win_visibility = (int)(int *)data;
- syncfb_compute_output_size(this);
- break;
- */
-
- default:
- return -1;
- }
-
- return 0;
-}
-
-static void syncfb_dispose(vo_driver_t *this_gen)
-{
- syncfb_driver_t *this = (syncfb_driver_t *) this_gen;
-
- /* get it off the screen - I wanna see my desktop again :-) */
- syncfb_overlay_off(this);
-
- /* don't know if it is necessary are even right, but anyway...?! */
- munmap(0, this->capabilities.memory_size);
-
- close(this->fd);
-
- XLockDisplay (this->display);
- XFreeGC(this->display, this->gc);
- XUnlockDisplay (this->display);
-
- _x_alphablend_free(&this->alphablend_extra_data);
-
- free(this);
-}
-
-static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *visual_gen) {
-
- syncfb_class_t *class = (syncfb_class_t *) class_gen;
- config_values_t *config = class->config;
- syncfb_driver_t* this;
- Display* display = NULL;
- unsigned int i;
- x11_visual_t* visual = (x11_visual_t *) visual_gen;
- XColor dummy;
- XWindowAttributes attr;
-
- display = visual->display;
-
- if(!(this = xine_xmalloc(sizeof (syncfb_driver_t))))
- return NULL;
-
- _x_alphablend_init(&this->alphablend_extra_data, class->xine);
-
- /* check for syncfb device */
- if((this->fd = open(class->device_name, O_RDWR)) < 0) {
- xprintf(class->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: aborting. (unable to open syncfb device \"%s\")\n", class->device_name);
- free(this);
- return NULL;
- }
-
- this->xine = class->xine;
-
- /* get capabilities from the syncfb module */
- if(ioctl(this->fd, SYNCFB_GET_CAPS, &this->capabilities)) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: aborting. (syncfb_get_caps ioctl failed)\n");
-
- close(this->fd);
- free(this);
-
- return NULL;
- }
-
- /* mmap whole video memory */
- this->video_mem = (uint8_t *) mmap(0, this->capabilities.memory_size, PROT_WRITE, MAP_SHARED, this->fd, 0);
-
- if(this->video_mem == MAP_FAILED) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: aborting. (mmap of video memory failed)\n");
-
- close(this->fd);
- free(this);
-
- return NULL;
- }
-
- /*
- * init properties and capabilities
- */
- for (i = 0; i<VO_NUM_PROPERTIES; i++) {
- this->props[i].value = 0;
- this->props[i].min = 0;
- this->props[i].max = 0;
- }
-
- this->props[VO_PROP_INTERLACED].value = 0;
- this->sc.user_ratio = this->props[VO_PROP_ASPECT_RATIO].value = XINE_VO_ASPECT_AUTO;
- this->props[VO_PROP_ZOOM_X].value = 100;
- this->props[VO_PROP_ZOOM_Y].value = 100;
-
- /* check for formats we need... */
- this->supported_capabilities = VO_CAP_CROP;
- this->yuv_format = 0;
-
- /*
- * simple fallback mechanism - we want YUV 4:2:0 (3 plane) but we can also
- * convert YV12 material to YUV 4:2:0 (2 plane) and YUV 4:2:2 ...
- */
- if(this->capabilities.palettes & (1<<VIDEO_PALETTE_YUV420P3)) {
- this->supported_capabilities |= VO_CAP_YV12;
- this->yuv_format = VIDEO_PALETTE_YUV420P3;
- xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n"));
- } else if(this->capabilities.palettes & (1<<VIDEO_PALETTE_YUV420P2)) {
- this->supported_capabilities |= VO_CAP_YV12;
- this->yuv_format = VIDEO_PALETTE_YUV420P2;
- xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n"));
- } else if(this->capabilities.palettes & (1<<VIDEO_PALETTE_YUV422)) {
- this->supported_capabilities |= VO_CAP_YV12;
- this->yuv_format = VIDEO_PALETTE_YUV422;
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- _("video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n"));
- }
-
- if(this->capabilities.palettes & (1<<VIDEO_PALETTE_YUV422)) {
- this->supported_capabilities |= VO_CAP_YUY2;
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- _("video_out_syncfb: info. (SyncFB module supports YUY2)\n"));
- }
- if(this->capabilities.palettes & (1<<VIDEO_PALETTE_RGB565)) {
- /* FIXME: no RGB support yet
- * this->supported_capabilities |= VO_CAP_RGB;
- */
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- _("video_out_syncfb: info. (SyncFB module supports RGB565)\n"));
- }
-
- if(!this->supported_capabilities) {
- xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- _("video_out_syncfb: aborting. (SyncFB module does not support YV12, YUY2 nor RGB565)\n"));
-
- munmap(0, this->capabilities.memory_size);
- close(this->fd);
- free(this);
-
- return NULL;
- }
-
- if(ioctl(this->fd,SYNCFB_GET_PARAMS,&this->params) == 0) {
- this->props[VO_PROP_CONTRAST].value = this->params.contrast;
- this->props[VO_PROP_CONTRAST].min = 0;
- this->props[VO_PROP_CONTRAST].max = 255;
-
- this->props[VO_PROP_BRIGHTNESS].value = this->params.brightness;
- this->props[VO_PROP_BRIGHTNESS].min = -128;
- this->props[VO_PROP_BRIGHTNESS].max = 127;
- } else {
- xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("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"));
- }
-
- /* check for virtual screen size and screen depth - this is rather important
- because that data is later used for free memory calculation */
- XGetWindowAttributes(visual->display, DefaultRootWindow(visual->display), &attr);
-
- this->virtual_screen_height = attr.height;
- this->virtual_screen_width = attr.width;
- this->screen_depth = attr.depth;
-
- /* initialize the rest of the variables now with default values */
- this->bufinfo.id = -1;
- this->config = config;
- this->cur_frame = NULL;
-
- /* FIXME: setting the default_repeat to anything higher than 1 will result
- in a distorted video, so for now, set this manually to 0 until
- the kernel driver is fixed... */
-#if 0
- this->default_repeat = config->register_range(config,
- "video.device.syncfb_default_repeat", 3, 1, 4,
- _("default number of frame repetitions"),
- _("This specifies how many times a single video "
- "frame will be displayed consecutively."),
- 10, NULL, NULL);
-#endif
- this->default_repeat = 0;
-
- this->display = visual->display;
- this->drawable = visual->d;
- this->gc = XCreateGC (this->display, this->drawable, 0, NULL);
-
- _x_vo_scale_init (&this->sc, 1, 0, config );
- this->sc.frame_output_cb = visual->frame_output_cb;
- this->sc.user_data = visual->user_data;
-
- this->overlay = NULL;
- this->screen = visual->screen;
- this->video_win_visibility = 1;
-
- XAllocNamedColor(this->display,
- DefaultColormap(this->display, this->screen),
- "black", &this->black, &dummy);
-
- this->vo_driver.get_capabilities = syncfb_get_capabilities;
- this->vo_driver.alloc_frame = syncfb_alloc_frame;
- this->vo_driver.update_frame_format = syncfb_update_frame_format;
- this->vo_driver.overlay_begin = NULL; /* not used */
- this->vo_driver.overlay_blend = syncfb_overlay_blend;
- this->vo_driver.overlay_end = NULL; /* not used */
- this->vo_driver.display_frame = syncfb_display_frame;
- this->vo_driver.get_property = syncfb_get_property;
- this->vo_driver.set_property = syncfb_set_property;
- this->vo_driver.get_property_min_max = syncfb_get_property_min_max;
- this->vo_driver.gui_data_exchange = syncfb_gui_data_exchange;
- this->vo_driver.dispose = syncfb_dispose;
- this->vo_driver.redraw_needed = syncfb_redraw_needed;
-
- return &this->vo_driver;
-}
-
-/*
- * class functions
- */
-static void *init_class (xine_t *xine, void *visual_gen) {
-
- syncfb_class_t *this;
- char* device_name;
- int fd;
-
- device_name = xine->config->register_filename(xine->config, "video.device.syncfb_device", "/dev/syncfb",
- XINE_CONFIG_STRING_IS_DEVICE_NAME,
- _("SyncFB device name"),
- _("Specifies the file name for the SyncFB (TeleTux) device "
- "to be used.\nThis setting is security critical, "
- "because when changed to a different file, xine "
- "can be used to fill this file with arbitrary content. "
- "So you should be careful that the value you enter "
- "really is a proper framebuffer device."),
- XINE_CONFIG_SECURITY, NULL, NULL);
-
- /* check for syncfb device */
- if((fd = open(device_name, O_RDWR)) < 0) {
- xprintf(xine, XINE_VERBOSITY_DEBUG,
- "video_out_syncfb: aborting. (unable to open syncfb device \"%s\")\n", device_name);
- return NULL;
- }
- close(fd);
-
- /*
- * from this point on, nothing should go wrong anymore
- */
- this = (syncfb_class_t *) xine_xmalloc (sizeof (syncfb_class_t));
-
- this->driver_class.open_plugin = open_plugin;
- this->driver_class.identifier = "SyncFB";
- this->driver_class.description = N_("xine video output plugin using the SyncFB module for Matrox G200/G400 cards");
- this->driver_class.dispose = default_video_driver_class_dispose;
-
- this->config = xine->config;
- this->xine = xine;
- this->device_name = device_name;
-
- return this;
-}
-
-static const vo_info_t vo_info_syncfb = {
- 7, /* priority */
- XINE_VISUAL_TYPE_X11 /* 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, 22, "SyncFB", XINE_VERSION_CODE, &vo_info_syncfb, init_class },
- { PLUGIN_NONE, 0, "", 0, NULL, NULL }
-};
-
diff --git a/src/video_out/video_out_syncfb.h b/src/video_out/video_out_syncfb.h
deleted file mode 100644
index 1fc3df83a..000000000
--- a/src/video_out/video_out_syncfb.h
+++ /dev/null
@@ -1,236 +0,0 @@
-#ifndef __LINUX_SYNCFB_H
-#define __LINUX_SYNCFB_H
-
-#ifdef __KERNEL__
-#include <linux/version.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-#include <linux/malloc.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-#include <linux/videodev.h>
-
-#include <asm/mtrr.h>
-#include <asm/uaccess.h>
-#include <asm/system.h>
-#include <asm/io.h>
-
-#define TRUE 1
-#define FALSE 0
-
-#define SFB_STATUS_FREE 0
-#define SFB_STATUS_OFFS 1
-#define SFB_STATUS_WAIT 2
-#define SFB_STATUS_LIVE 3
-
-#endif /* KERNEL */
-
-
-#ifndef AARONS_TYPES
-typedef unsigned long uint_32;
-typedef unsigned char uint_8;
-#endif
-
-#define SYNCFB_MAJOR 178
-
-#define SYNCFB_ERROR_NO_ERROR 0;
-#define SYNCFB_ERROR_NO_BUFFER_AVAILABLE 1;
-#define SYNCFB_ERROR_PALETTE_NOT_SUPPORTED 2;
-#define SYNCFB_ERROR_NOT_ENOUGH_MEMORY 3;
-
-
-
-#ifndef __LINUX_VIDEODEV_H
-#define VIDEO_PALETTE_GREY 1 /* Linear greyscale */
-#define VIDEO_PALETTE_HI240 2 /* High 240 cube (BT848) */
-#define VIDEO_PALETTE_RGB565 3 /* 565 16 bit RGB */
-#define VIDEO_PALETTE_RGB24 4 /* 24bit RGB */
-#define VIDEO_PALETTE_RGB32 5 /* 32bit RGB */
-#define VIDEO_PALETTE_RGB555 6 /* 555 15bit RGB */
-#define VIDEO_PALETTE_YUV422 7 /* YUV422 capture */
-#define VIDEO_PALETTE_YUYV 8
-#define VIDEO_PALETTE_UYVY 9 /* The great thing about standards is ... */
-#define VIDEO_PALETTE_YUV420 10
-#define VIDEO_PALETTE_YUV411 11 /* YUV411 capture */
-#define VIDEO_PALETTE_RAW 12 /* RAW capture (BT848) */
-#define VIDEO_PALETTE_YUV422P 13 /* YUV 4:2:2 Planar */
-#define VIDEO_PALETTE_YUV411P 14 /* YUV 4:1:1 Planar */
-#define VIDEO_PALETTE_YUV420P 15 /* YUV 4:2:0 Planar */
-#define VIDEO_PALETTE_YUV410P 16 /* YUV 4:1:0 Planar */
-#define VIDEO_PALETTE_PLANAR 13 /* start of planar entries */
-#define VIDEO_PALETTE_COMPONENT 7 /* start of component entries */
-#endif
-
-
-#define VIDEO_PALETTE_YUV422P3 13 /* YUV 4:2:2 Planar (3 Plane, same as YUV422P) */
-#define VIDEO_PALETTE_YUV422P2 17 /* YUV 4:2:2 Planar (2 Plane) */
-
-#define VIDEO_PALETTE_YUV411P3 14 /* YUV 4:1:1 Planar (3 Plane, same as YUV411P) */
-#define VIDEO_PALETTE_YUV411P2 18 /* YUV 4:1:1 Planar (2 Plane) */
-
-#define VIDEO_PALETTE_YUV420P3 15 /* YUV 4:2:0 Planar (3 Plane, same as YUV420P) */
-#define VIDEO_PALETTE_YUV420P2 19 /* YUV 4:2:0 Planar (2 Plane) */
-
-#define VIDEO_PALETTE_YUV410P3 16 /* YUV 4:1:0 Planar (3 Plane, same as YUV410P) */
-#define VIDEO_PALETTE_YUV410P2 20 /* YUV 4:1:0 Planar (2 Plane) */
-
-
-
-#define SYNCFB_FEATURE_SCALE_H 1
-#define SYNCFB_FEATURE_SCALE_V 2
-#define SYNCFB_FEATURE_SCALE 3
-#define SYNCFB_FEATURE_CROP 4
-#define SYNCFB_FEATURE_OFFSET 8
-#define SYNCFB_FEATURE_DEINTERLACE 16
-#define SYNCFB_FEATURE_PROCAMP 32
-#define SYNCFB_FEATURE_TRANSITIONS 64
-#define SYNCFB_FEATURE_COLKEY 128
-#define SYNCFB_FEATURE_MIRROR_H 256
-#define SYNCFB_FEATURE_MIRROR_V 512
-#define SYNCFB_FEATURE_BLOCK_REQUEST 1024
-#define SYNCFB_FEATURE_FREQDIV2 2048
-
-
-typedef struct syncfb_config_s
-{
- uint_32 syncfb_mode; /* bitfield: turn on/off the available features */
- uint_32 error_code; /* RO: returns 0 on successful config calls, error code otherwise */
-
- uint_32 fb_screen_size; /* WO, size in bytes of video memory reserved for fbdev */
- uint_32 fb_screen_width; /* WO, visible screen width in pixel */
- uint_32 fb_screen_height; /* WO, visible screen height in pixel */
-
- uint_32 buffers; /* RO, number of available buffers */
- uint_32 buffer_size; /* RO, filled in by syncfb */
-
- uint_32 default_repeat; /* default repeat time for a single frame, can be overridden in syncfb_buffer_info_t */
-
- uint_32 src_width; /* source image width in pixel */
- uint_32 src_height; /* source image height in pixel */
- uint_32 src_palette; /* set palette mode, see videodev.h for palettes */
- uint_32 src_pitch; /* RO: filled in by ioctl: actual line length in pixel */
-
- uint_32 image_xorg; /* x position of the image on the screen */
- uint_32 image_yorg; /* y position of the image on the screen */
-
- /* if syncfb has FEATURE_SCALE */
- uint_32 scale_filters; /* 0: no filtering, 255: all filters on */
- uint_32 image_width; /* onscreen image width */
- uint_32 image_height; /* onscreen image height */
-
- /* if syncfb has FEATURE_CROP */
- uint_32 src_crop_left; /* */
- uint_32 src_crop_right; /* */
- uint_32 src_crop_top; /* */
- uint_32 src_crop_bot; /* */
-
- /* if syncfb has FEATURE_OFFSET */
- uint_32 image_offset_left; /* */
- uint_32 image_offset_right; /* */
- uint_32 image_offset_top; /* */
- uint_32 image_offset_bot; /* */
-
- /* if syncfb has FEATURE_COLKEY */
- uint_8 colkey_red;
- uint_8 colkey_green;
- uint_8 colkey_blue;
-
-} syncfb_config_t;
-
-
-/*
- picture parameters,
-*/
-typedef struct syncfb_param_s
-{
- /* the idea is to enable smooth transitions between eg. image sizes (not yet implemented) */
- /* if syncfb has FEATURE_TRANSITIONS */
- uint_32 transition_time;
-
- /* if syncfb has FEATURE_PROCAMP */
- uint_32 contrast; /* 0: least contrast, 1000: normal contrast, */
- uint_32 brightness;
- uint_32 color; /* for syncfb_matrox: color=0: b/w else: full color */
-
- /* if syncfb has FEATURE_SCALE , currently only supported in CONFIG call */
- uint_8 scale_filters; /* 0: no filtering, 255: all filters on */
- uint_32 image_xorg; /* x position of the image on the screen */
- uint_32 image_yorg; /* y position of the image on the screen */
- uint_32 image_width; /* onscreen image width */
- uint_32 image_height; /* onscreen image height */
-
-} syncfb_param_t;
-
-
-
-typedef struct syncfb_status_info_s
-{
- uint_32 field_cnt; /* basically all vbi's since the start of syncfb */
- uint_32 frame_cnt; /* number of frames comitted & output */
-
- uint_32 hold_field_cnt; /* number of repeated fields becaus no new data was available */
- uint_32 skip_field_cnt; /* skipped fields when fifo was about to fill up */
-
- uint_32 request_frames; /* number of request_buffer calls */
- uint_32 commit_frames; /* number of commit_buffer calls */
-
- uint_32 failed_requests; /* number of calls to request_buffer that failed */
-
- uint_32 buffers_waiting;
- uint_32 buffers_free;
-
-} syncfb_status_info_t;
-
-
-
-
-typedef struct syncfb_capability_s
-{
- char name[64]; /* A name for the syncfb ... */
- uint_32 palettes; /* supported palettes - see videodev.h for palettes, test the corresponding bit here */
- uint_32 features; /* supported features - see SYNCFB_FEATURE_* */
- uint_32 memory_size; /* total size of mappable video memory */
-
-} syncfb_capability_t;
-
-
-
-typedef struct syncfb_buffer_info_s
-{
- int id; /* buffer id: a return value of -1 means no buffer available */
- uint_32 repeat; /* the buffer will be shown <repeat> times */
- uint_32 offset; /* buffer offset from start of video memory */
- uint_32 offset_p2; /* yuv plane 2 buffer offset from start of video memory */
- uint_32 offset_p3; /* yuv plane 3 buffer offset from start of video memory */
-
-} syncfb_buffer_info_t;
-
-
-
-
-
-
-
-/* get syncfb capabilities */
-#define SYNCFB_GET_CAPS _IOR('J', 1, syncfb_config_t)
-
-#define SYNCFB_GET_CONFIG _IOR('J', 2, syncfb_config_t)
-#define SYNCFB_SET_CONFIG _IOR('J', 3, syncfb_config_t)
-#define SYNCFB_ON _IO ('J', 4)
-#define SYNCFB_OFF _IO ('J', 5)
-#define SYNCFB_REQUEST_BUFFER _IOR ('J', 6, syncfb_buffer_info_t)
-#define SYNCFB_COMMIT_BUFFER _IOR ('J', 7, syncfb_buffer_info_t)
-#define SYNCFB_STATUS _IOR ('J', 8, syncfb_status_info_t)
-#define SYNCFB_VBI _IO ('J', 9) /* simulate interrupt - debugging only */
-#define SYNCFB_SET_PARAMS _IOR('J', 10, syncfb_param_t)
-#define SYNCFB_GET_PARAMS _IOR('J', 11, syncfb_param_t)
-
-
-
-
-#endif /* __LINUX_SYNCFB_H */
-
diff --git a/src/video_out/video_out_vidix.c b/src/video_out/video_out_vidix.c
index f4b74ad2a..586268513 100644
--- a/src/video_out/video_out_vidix.c
+++ b/src/video_out/video_out_vidix.c
@@ -964,7 +964,7 @@ static vidix_driver_t *open_plugin (video_driver_class_t *class_gen) {
this->config = config;
this->got_frame_data = 0;
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
/* Find what equalizer flags are supported */
if(this->vidix_cap.flags & FLAG_EQUALIZER) {
@@ -973,24 +973,28 @@ static vidix_driver_t *open_plugin (video_driver_class_t *class_gen) {
"video_out_vidix: couldn't get equalizer capabilities: %s\n", strerror(err));
} else {
if(this->vidix_eq.cap & VEQ_CAP_BRIGHTNESS) {
+ this->capabilities |= VO_CAP_BRIGHTNESS;
this->props[VO_PROP_BRIGHTNESS].value = 0;
this->props[VO_PROP_BRIGHTNESS].min = -1000;
this->props[VO_PROP_BRIGHTNESS].max = 1000;
}
if(this->vidix_eq.cap & VEQ_CAP_CONTRAST) {
+ this->capabilities |= VO_CAP_CONTRAST;
this->props[VO_PROP_CONTRAST].value = 0;
this->props[VO_PROP_CONTRAST].min = -1000;
this->props[VO_PROP_CONTRAST].max = 1000;
}
if(this->vidix_eq.cap & VEQ_CAP_SATURATION) {
+ this->capabilities |= VO_CAP_SATURATION;
this->props[VO_PROP_SATURATION].value = 0;
this->props[VO_PROP_SATURATION].min = -1000;
this->props[VO_PROP_SATURATION].max = 1000;
}
if(this->vidix_eq.cap & VEQ_CAP_HUE) {
+ this->capabilities |= VO_CAP_HUE;
this->props[VO_PROP_HUE].value = 0;
this->props[VO_PROP_HUE].min = -1000;
this->props[VO_PROP_HUE].max = 1000;
diff --git a/src/video_out/video_out_xcbshm.c b/src/video_out/video_out_xcbshm.c
index e8fd33860..7443529d1 100644
--- a/src/video_out/video_out_xcbshm.c
+++ b/src/video_out/video_out_xcbshm.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2003, 2007 the xine project
+ * Copyright (C) 2000-2003, 2007-2008 the xine project
*
* This file is part of xine, a free video player.
*
@@ -222,7 +222,7 @@ static void dispose_ximage(xshm_driver_t *this, xshm_frame_t *frame)
static uint32_t xshm_get_capabilities (vo_driver_t *this_gen) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
- uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2;
+ uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_CONTRAST | VO_CAP_SATURATION;
if( this->xoverlay )
capabilities |= VO_CAP_UNSCALED_OVERLAY;
@@ -740,45 +740,43 @@ static int xshm_set_property (vo_driver_t *this_gen,
int property, int value) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
- if ( property == VO_PROP_ASPECT_RATIO) {
-
+ switch (property) {
+ case VO_PROP_ASPECT_RATIO:
if (value>=XINE_VO_ASPECT_NUM_RATIOS)
value = XINE_VO_ASPECT_AUTO;
this->sc.user_ratio = value;
xprintf(this->xine, XINE_VERBOSITY_DEBUG,
LOG_MODULE ": aspect ratio changed to %s\n", _x_vo_scale_aspect_ratio_name_table[value]);
+ break;
- } else if (property == VO_PROP_BRIGHTNESS) {
-
+ case VO_PROP_BRIGHTNESS:
this->yuv2rgb_brightness = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
this->yuv2rgb_brightness,
this->yuv2rgb_contrast,
this->yuv2rgb_saturation);
-
this->sc.force_redraw = 1;
+ break;
- } else if (property == VO_PROP_CONTRAST) {
-
+ case VO_PROP_CONTRAST:
this->yuv2rgb_contrast = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
this->yuv2rgb_brightness,
this->yuv2rgb_contrast,
this->yuv2rgb_saturation);
-
this->sc.force_redraw = 1;
+ break;
- } else if (property == VO_PROP_SATURATION) {
-
+ case VO_PROP_SATURATION:
this->yuv2rgb_saturation = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
this->yuv2rgb_brightness,
this->yuv2rgb_contrast,
this->yuv2rgb_saturation);
-
this->sc.force_redraw = 1;
+ break;
- } else {
+ default:
xprintf (this->xine, XINE_VERBOSITY_DEBUG,
LOG_MODULE ": tried to set unsupported property %d\n", property);
}
diff --git a/src/video_out/video_out_xcbxv.c b/src/video_out/video_out_xcbxv.c
index 19a387732..d77917a70 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.
*
@@ -64,6 +64,7 @@
#include <xine/xineutils.h>
#include <xine/vo_scale.h>
#include "xcbosd.h"
+#include "xv_common.h"
typedef struct xv_driver_s xv_driver_t;
@@ -944,6 +945,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))
@@ -965,7 +968,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;
@@ -1083,19 +1086,87 @@ static void xv_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry)
LOG_MODULE ": double buffering mode = %d\n", xv_double_buffer);
}
+static void xv_update_XV_SYNC_TO_VBLANK(void *this_gen, xine_cfg_entry_t *entry) {
+ xv_driver_t *this = (xv_driver_t *) this_gen;
+ int xv_sync_to_vblank;
+
+ xcb_intern_atom_cookie_t atom_cookie;
+ xcb_intern_atom_reply_t *atom_reply;
+
+ xv_sync_to_vblank = entry->num_value;
+
+ pthread_mutex_lock(&this->main_mutex);
+ atom_cookie = xcb_intern_atom(this->connection, 0, sizeof("XV_SYNC_TO_VBLANK"), "XV_SYNC_TO_VBLANK");
+ 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_sync_to_vblank);
+ free(atom_reply);
+ pthread_mutex_unlock(&this->main_mutex);
+
+ xprintf(this->xine, XINE_VERBOSITY_DEBUG,
+ "video_out_xcbxv: sync to vblank = %d\n", xv_sync_to_vblank);
+}
+
+
static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) {
xv_driver_t *this = (xv_driver_t *) this_gen;
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)
+{
+ for (; adaptor_it->rem; xcb_xv_adaptor_info_next(adaptor_it))
+ if (adaptor_it->data->type & XCB_XV_TYPE_IMAGE_MASK)
+ {
+ 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;
const xcb_query_extension_reply_t *query_extension_reply;
@@ -1146,28 +1217,21 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis
}
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);
- }
- }
+ xv_port = config->register_num (config, "video.device.xv_port", 0,
+ VIDEO_DEVICE_XV_PORT_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);
+ xv_port = xv_autodetect_port (this, &adaptor_it, xv_port);
+ } else
+ xv_find_adaptor_by_port (xv_port, &adaptor_it);
}
+ if (!xv_port)
+ xv_port = xv_autodetect_port (this, &adaptor_it, 0);
if (!xv_port) {
xprintf(class->xine, XINE_VERBOSITY_LOG,
@@ -1192,7 +1256,7 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis
this->gc = xcb_generate_id(this->connection);
xcb_create_gc(this->connection, this->gc, this->window, 0, NULL);
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->use_shm = 1;
this->use_colorkey = 0;
this->colorkey = 0;
@@ -1245,75 +1309,72 @@ 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, LOG_MODULE ": ignoring broken XV_HUE settings on NVidia cards\n");
} else {
+ this->capabilities |= VO_CAP_HUE;
xv_check_capability (this, VO_PROP_HUE, attribute_it.data,
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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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(xcb_xv_attribute_info_name(attribute_it.data), "XV_SYNC_TO_VBLANK")) {
+ 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);
}
}
}
@@ -1341,16 +1402,21 @@ static vo_driver_t *open_plugin(video_driver_class_t *class_gen, const void *vis
(format_it.data->format == XCB_XV_IMAGE_FORMAT_INFO_FORMAT_PACKED)
? "packed" : "planar");
- if (format_it.data->id == XINE_IMGFMT_YV12) {
+ switch (format_it.data->id) {
+ case XINE_IMGFMT_YV12:
this->xv_format_yv12 = format_it.data->id;
this->capabilities |= VO_CAP_YV12;
xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("%s: this adaptor supports the yv12 format.\n"), LOG_MODULE);
- } else if (format_it.data->id == XINE_IMGFMT_YUY2) {
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YV12");
+ break;
+ case XINE_IMGFMT_YUY2:
this->xv_format_yuy2 = format_it.data->id;
this->capabilities |= VO_CAP_YUY2;
xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("%s: this adaptor supports the yuy2 format.\n"), LOG_MODULE);
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YUY2");
+ break;
+ default:
+ break;
}
}
@@ -1358,8 +1424,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);
if(this->use_colorkey==1) {
diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c
index 97c879af3..0df5c2806 100644
--- a/src/video_out/video_out_xshm.c
+++ b/src/video_out/video_out_xshm.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2003 the xine project
+ * Copyright (C) 2000-2003, 2008 the xine project
*
* This file is part of xine, a free video player.
*
@@ -315,7 +315,7 @@ static void dispose_ximage (xshm_driver_t *this,
static uint32_t xshm_get_capabilities (vo_driver_t *this_gen) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
- uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2;
+ uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_CONTRAST | VO_CAP_SATURATION;
if( this->xoverlay )
capabilities |= VO_CAP_UNSCALED_OVERLAY;
@@ -829,45 +829,43 @@ static int xshm_set_property (vo_driver_t *this_gen,
int property, int value) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
- if ( property == VO_PROP_ASPECT_RATIO) {
-
+ switch (property) {
+ case VO_PROP_ASPECT_RATIO:
if (value>=XINE_VO_ASPECT_NUM_RATIOS)
value = XINE_VO_ASPECT_AUTO;
this->sc.user_ratio = value;
xprintf(this->xine, XINE_VERBOSITY_DEBUG,
LOG_MODULE ": aspect ratio changed to %s\n", _x_vo_scale_aspect_ratio_name_table[value]);
+ break;
- } else if (property == VO_PROP_BRIGHTNESS) {
-
+ case VO_PROP_BRIGHTNESS:
this->yuv2rgb_brightness = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
this->yuv2rgb_brightness,
this->yuv2rgb_contrast,
this->yuv2rgb_saturation);
-
this->sc.force_redraw = 1;
+ break;
- } else if (property == VO_PROP_CONTRAST) {
-
+ case VO_PROP_CONTRAST:
this->yuv2rgb_contrast = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
this->yuv2rgb_brightness,
this->yuv2rgb_contrast,
this->yuv2rgb_saturation);
-
this->sc.force_redraw = 1;
+ break;
- } else if (property == VO_PROP_SATURATION) {
-
+ case VO_PROP_SATURATION:
this->yuv2rgb_saturation = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
this->yuv2rgb_brightness,
this->yuv2rgb_contrast,
this->yuv2rgb_saturation);
-
this->sc.force_redraw = 1;
+ break;
- } else {
+ default:
xprintf (this->xine, XINE_VERBOSITY_DEBUG,
LOG_MODULE ": tried to set unsupported property %d\n", property);
}
diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c
index d6419c00b..a874e4cdf 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.
*
@@ -69,6 +69,7 @@
#include <xine/xineutils.h>
#include <xine/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);}
@@ -1028,14 +1029,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,
const char *config_name,
const char *config_desc,
const 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.
@@ -1130,12 +1130,70 @@ static void xv_update_XV_DOUBLE_BUFFER(void *this_gen, xine_cfg_entry_t *entry)
LOG_MODULE ": double buffering mode = %d\n", xv_double_buffer);
}
+static void xv_update_XV_SYNC_TO_VBLANK(void *this_gen, xine_cfg_entry_t *entry) {
+ xv_driver_t *this = (xv_driver_t *) this_gen;
+ Atom atom;
+ int xv_sync_to_vblank;
+
+ xv_sync_to_vblank = entry->num_value;
+
+ LOCK_DISPLAY(this);
+ atom = XInternAtom (this->display, "XV_SYNC_TO_VBLANK", False);
+ XvSetPortAttribute (this->display, this->xv_port, atom, xv_sync_to_vblank);
+ UNLOCK_DISPLAY(this);
+
+ xprintf(this->xine, XINE_VERBOSITY_DEBUG,
+ "video_out_xv: sync to vblank = %d\n", xv_sync_to_vblank);
+}
+
static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) {
xv_driver_t *this = (xv_driver_t *) this_gen;
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) {
+ unsigned int an, j;
+
+ for (an = 0; an < adaptors; an++)
+ if (adaptor_info[an].type & XvImageMask)
+ 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;
@@ -1148,7 +1206,7 @@ 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;
@@ -1191,25 +1249,21 @@ 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,
+ 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);
+ xv_port = xv_autodetect_port(this, adaptors, adaptor_info, &adaptor_num, xv_port);
+ } 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);
if (!xv_port) {
xprintf(class->xine, XINE_VERBOSITY_LOG,
@@ -1239,7 +1293,7 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void *
LOCK_DISPLAY(this);
this->gc = XCreateGC (this->display, this->drawable, 0, NULL);
UNLOCK_DISPLAY(this);
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->use_shm = 1;
this->use_colorkey = 0;
this->colorkey = 0;
@@ -1298,75 +1352,72 @@ 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, LOG_MODULE ": ignoring broken XV_HUE settings on NVidia cards\n");
} else {
+ this->capabilities |= VO_CAP_HUE;
xv_check_capability (this, VO_PROP_HUE, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
}
- } else if(!strcmp(attr[k].name, "XV_SATURATION")) {
+ } else if(!strcmp(name, "XV_SATURATION")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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(!strcmp(attr[k].name, "XV_SYNC_TO_VBLANK")) {
+ 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);
}
}
}
@@ -1391,16 +1442,21 @@ static vo_driver_t *open_plugin_2 (video_driver_class_t *class_gen, const void *
fo[i].id, (char*)&fo[i].id,
(fo[i].format == XvPacked) ? "packed" : "planar");
- if (fo[i].id == XINE_IMGFMT_YV12) {
+ switch (fo[i].id) {
+ case XINE_IMGFMT_YV12:
this->xv_format_yv12 = fo[i].id;
this->capabilities |= VO_CAP_YV12;
xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("%s: this adaptor supports the yv12 format.\n"), LOG_MODULE);
- } else if (fo[i].id == XINE_IMGFMT_YUY2) {
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YV12");
+ break;
+ case XINE_IMGFMT_YUY2:
this->xv_format_yuy2 = fo[i].id;
this->capabilities |= VO_CAP_YUY2;
xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("%s: this adaptor supports the yuy2 format.\n"), LOG_MODULE);
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YUY2");
+ break;
+ default:
+ break;
}
}
@@ -1422,8 +1478,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);
LOCK_DISPLAY(this);
diff --git a/src/video_out/video_out_xvmc.c b/src/video_out/video_out_xvmc.c
index 6aa8f430d..7f282ee53 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.
*
@@ -72,6 +72,7 @@
#include <xine/xineutils.h>
#include <xine/vo_scale.h>
+#include "xv_common.h"
/* #define LOG1 */
/* #define DLOG */
@@ -217,8 +218,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;
@@ -1224,13 +1223,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.
@@ -1253,13 +1252,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);
@@ -1297,7 +1296,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;
@@ -1305,13 +1303,12 @@ 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));
if (!this)
@@ -1335,7 +1332,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
XLockDisplay(this->display);
this->gc = XCreateGC(this->display, this->drawable, 0, NULL);
XUnlockDisplay(this->display);
- this->capabilities = VO_CAP_XVMC_MOCOMP | VO_CAP_CROP;
+ this->capabilities = VO_CAP_XVMC_MOCOMP | VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->surface_type_id = class->surface_type_id;
this->max_surface_width = class->max_surface_width;
@@ -1393,56 +1390,53 @@ 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 {
+ this->capabilities |= VO_CAP_HUE;
+ xvmc_check_capability (this, VO_PROP_HUE, attr[k],
+ adaptor_info[adaptor_num].base_id,
+ NULL, NULL, NULL);
+ }
+ } else if(!strcmp(name, "XV_SATURATION")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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);
}
}
@@ -1457,7 +1451,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;
@@ -1468,15 +1462,21 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
fo[i].id, (char*)&fo[i].id,
(fo[i].format == XvPacked) ? "packed" : "planar");
- if (fo[i].id == XINE_IMGFMT_YV12) {
+ switch (fo[i].id) {
+ case XINE_IMGFMT_YV12:
this->xvmc_format_yv12 = fo[i].id;
- this->capabilities |= VO_CAP_YV12;
- lprintf("this adaptor supports the yv12 format.\n");
- }
- else if (fo[i].id == XINE_IMGFMT_YUY2) {
+ this->capabilities |= VO_CAP_YV12;
+ xprintf(this->xine, XINE_VERBOSITY_LOG,
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YV12");
+ break;
+ case XINE_IMGFMT_YUY2:
this->xvmc_format_yuy2 = fo[i].id;
- this->capabilities |= VO_CAP_YUY2;
- lprintf("this adaptor supports the yuy2 format.\n");
+ this->capabilities |= VO_CAP_YUY2;
+ xprintf(this->xine, XINE_VERBOSITY_LOG,
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YUY2");
+ break;
+ default:
+ break;
}
}
@@ -1509,10 +1509,6 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
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);
}
@@ -1685,8 +1681,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 98ce99f1f..1ef3652a9 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;
@@ -2101,13 +2101,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;
@@ -2237,6 +2237,48 @@ 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) {
+ unsigned int an, j;
+
+ for (an = 0; an < adaptors; an++)
+ if (adaptor_info[an].type & XvImageMask)
+ 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)
{
@@ -2436,25 +2478,21 @@ 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) {
+ xv_port = config->register_num (config, "video.device.xv_port", 0,
+ VIDEO_DEVICE_XV_PORT_HELP,
+ 10, NULL, NULL);
- 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;
- }
+ 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);
+ } 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);
if (!xv_port) {
xprintf(class->xine, XINE_VERBOSITY_LOG,
@@ -2484,7 +2522,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
XLockDisplay (this->display);
this->gc = XCreateGC (this->display, this->drawable, 0, NULL);
XUnlockDisplay (this->display);
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->use_shm = 1;
this->use_colorkey = 0;
this->colorkey = 0;
@@ -2543,70 +2581,55 @@ 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, LOG_MODULE ": ignoring broken XV_HUE settings on NVidia cards\n");
} else {
+ this->capabilities |= VO_CAP_HUE;
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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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")) {
+ this->capabilities |= VO_CAP_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);
}
@@ -2640,16 +2663,21 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
fo[i].id, (char*)&fo[i].id,
(fo[i].format == XvPacked) ? "packed" : "planar");
- if (fo[i].id == XINE_IMGFMT_YV12) {
+ switch (fo[i].id) {
+ case XINE_IMGFMT_YV12:
this->xv_format_yv12 = fo[i].id;
this->capabilities |= VO_CAP_YV12;
xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("%s: this adaptor supports the yv12 format.\n"), LOG_MODULE);
- } else if (fo[i].id == XINE_IMGFMT_YUY2) {
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YV12");
+ break;
+ case XINE_IMGFMT_YUY2:
this->xv_format_yuy2 = fo[i].id;
this->capabilities |= VO_CAP_YUY2;
xprintf(this->xine, XINE_VERBOSITY_LOG,
- _("%s: this adaptor supports the yuy2 format.\n"), LOG_MODULE);
+ _("%s: this adaptor supports the %s format.\n"), LOG_MODULE, "YUY2");
+ break;
+ default:
+ break;
}
}
@@ -2672,8 +2700,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=
diff --git a/src/video_out/xv_common.h b/src/video_out/xv_common.h
new file mode 100644
index 000000000..ee2ab9a10
--- /dev/null
+++ b/src/video_out/xv_common.h
@@ -0,0 +1,58 @@
+/*
+ * 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.")
diff --git a/src/xine-engine/Makefile.am b/src/xine-engine/Makefile.am
index e4c57710a..dcecbfcab 100644
--- a/src/xine-engine/Makefile.am
+++ b/src/xine-engine/Makefile.am
@@ -35,7 +35,7 @@ libxine_la_LIBADD = $(PTHREAD_LIBS) $(DYNAMIC_LD_LIBS) $(LTLIBINTL) $(ZLIB_LIBS)
$(LIBXINEPOSIX) $(RT_LIBS) $(NET_LIBS) $(XDG_BASEDIR_LIBS) \
$(AVUTIL_LIBS)
-libxine_la_LDFLAGS = $(AM_LDFLAGS) $(def_ldflags) \
+libxine_la_LDFLAGS = $(AM_LDFLAGS) $(def_ldflags) $(GCSECTIONS) \
-version-info $(XINE_LT_CURRENT):$(XINE_LT_REVISION):$(XINE_LT_AGE)
$(XINEUTILS_LIB):
diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c
index 5162c1883..855051582 100644
--- a/src/xine-engine/audio_out.c
+++ b/src/xine-engine/audio_out.c
@@ -291,6 +291,7 @@ 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) {
@@ -1614,13 +1615,17 @@ static void ao_close(xine_audio_port_t *this_gen, xine_stream_t *stream) {
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 );
diff --git a/src/xine-engine/buffer_types.c b/src/xine-engine/buffer_types.c
index 08ff194fa..b0e01db31 100644
--- a/src/xine-engine/buffer_types.c
+++ b/src/xine-engine/buffer_types.c
@@ -33,6 +33,8 @@
#include <stdlib.h>
#include <inttypes.h>
#include <xine/buffer.h>
+#include <xine/xineutils.h>
+#include <xine/xine_internal.h>
#include "bswap.h"
typedef struct video_db_s {
@@ -771,6 +773,14 @@ static const video_db_t video_db[] = {
BUF_VIDEO_KMVC,
"Karl Morton's Video Codec"
},
+{
+ {
+ ME_FOURCC('V','M','n','c'),
+ 0
+ },
+ BUF_VIDEO_VMNC,
+ "VMware Screen Codec"
+},
{ { 0 }, 0, "last entry" }
};
@@ -1201,6 +1211,43 @@ int i;
return "";
}
+
+static void code_to_text (char ascii[5], uint32_t code)
+{
+ int i;
+ for (i = 0; i < 4; ++i)
+ {
+ int byte = code & 0xFF;
+ ascii[i] = (byte < ' ') ? ' ' : (byte >= 0x7F) ? '.' : (char) byte;
+ code >>= 8;
+ }
+}
+
+void _x_report_video_fourcc (xine_t *xine, const char *module, uint32_t code)
+{
+ if (code)
+ {
+ char ascii[5];
+ code_to_text (ascii, code);
+ xprintf (xine, XINE_VERBOSITY_LOG,
+ _("%s: unknown video FourCC code %#x \"%s\"\n"),
+ module, code, ascii);
+ }
+}
+
+void _x_report_audio_format_tag (xine_t *xine, const char *module, uint32_t code)
+{
+ if (code)
+ {
+ char ascii[5];
+ code_to_text (ascii, code);
+ xprintf (xine, XINE_VERBOSITY_LOG,
+ _("%s: unknown audio format tag code %#x \"%s\"\n"),
+ module, code, ascii);
+ }
+}
+
+
void _x_bmiheader_le2me( xine_bmiheader *bih ) {
/* OBS: fourcc must be read using machine endianness
* so don't play with biCompression here!
diff --git a/src/xine-engine/configfile.c b/src/xine-engine/configfile.c
index 3e3c0f7b5..37a4e38ad 100644
--- a/src/xine-engine/configfile.c
+++ b/src/xine-engine/configfile.c
@@ -32,6 +32,8 @@
#include <string.h>
#include <unistd.h>
#include <xine/configfile.h>
+#include "bswap.h"
+#include "base64.h"
#define LOG_MODULE "configfile"
#define LOG_VERBOSE
@@ -182,8 +184,6 @@ static const xine_config_entry_translation_t config_entry_translation[] = {
{ "video.pgx64_overlay_mode", "" },
{ "video.pgx64_saturation", "video.output.pgx64_saturation" },
{ "video.sdl_hw_accel", "video.device.sdl_hw_accel" },
- { "video.syncfb_default_repeat", "video.device.syncfb_default_repeat" },
- { "video.syncfb_device", "video.device.syncfb_device" },
{ "video.unichrome_cpu_save", "video.device.unichrome_cpu_save" },
{ "video.vertical_position", "video.output.vertical_position" },
{ "video.vidix_blue_intensity", "video.output.vidix_blue_intensity" },
@@ -455,6 +455,8 @@ static void config_reset_value(cfg_entry_t *entry) {
entry->num_value = 0;
}
+static void config_shallow_copy(xine_cfg_entry_t *dest, cfg_entry_t *src);
+
static cfg_entry_t *config_register_key (config_values_t *this,
const char *key,
int exp_level,
@@ -488,6 +490,14 @@ static cfg_entry_t *config_register_key (config_values_t *this,
entry->callback_data = cb_data;
}
+ /* we created a new entry, call the callback */
+ if (this->new_entry_cb) {
+ xine_cfg_entry_t cb_entry;
+
+ config_shallow_copy(&cb_entry, entry);
+ this->new_entry_cb(this->new_entry_cbdata, &cb_entry);
+ }
+
return entry;
}
@@ -1195,6 +1205,322 @@ static void config_unregister_cb (config_values_t *this, const char *key) {
}
}
+static void config_set_new_entry_callback (config_values_t *this, xine_config_cb_t new_entry_cb, void* cbdata) {
+ pthread_mutex_lock(&this->config_lock);
+ this->new_entry_cb = new_entry_cb;
+ this->new_entry_cbdata = cbdata;
+ pthread_mutex_unlock(&this->config_lock);
+}
+
+static void config_unset_new_entry_callback (config_values_t *this) {
+ pthread_mutex_lock(&this->config_lock);
+ this->new_entry_cb = NULL;
+ this->new_entry_cbdata = NULL;
+ pthread_mutex_unlock(&this->config_lock);
+}
+
+static int put_int(uint8_t *buffer, int pos, int value) {
+ int32_t value_int32 = (int32_t)value;
+
+ buffer[pos] = value_int32 & 0xFF;
+ buffer[pos + 1] = (value_int32 >> 8) & 0xFF;
+ buffer[pos + 2] = (value_int32 >> 16) & 0xFF;
+ buffer[pos + 3] = (value_int32 >> 24) & 0xFF;
+
+ return 4;
+}
+
+static int put_string(uint8_t *buffer, int pos, const char *value, int value_len) {
+ pos += put_int(buffer, pos, value_len);
+ memcpy(&buffer[pos], value, value_len);
+
+ return 4 + value_len;
+}
+
+static char* config_get_serialized_entry (config_values_t *this, const char *key) {
+ char *output = NULL;
+ cfg_entry_t *entry, *prev;
+
+ pthread_mutex_lock(&this->config_lock);
+ config_lookup_entry_int(this, key, &entry, &prev);
+
+ if (entry) {
+ /* now serialize this stuff
+ fields to serialize :
+ int type;
+ int range_min;
+ int range_max;
+ int exp_level;
+ int num_default;
+ int num_value;
+ char *key;
+ char *str_default;
+ char *description;
+ char *help;
+ char **enum_values;
+ */
+
+ int key_len = 0;
+ int str_default_len = 0;
+ int description_len = 0;
+ int help_len = 0;
+ unsigned long output_len;
+ unsigned long total_len;
+ int value_count;
+ int value_len[10];
+ int pos = 0;
+ int i;
+
+ if (entry->key)
+ key_len = strlen(entry->key);
+ if (entry->str_default)
+ str_default_len = strlen(entry->str_default);
+ if (entry->description)
+ description_len = strlen(entry->description);
+ if (entry->help)
+ help_len = strlen(entry->help);
+
+ /* integers */
+ /* value: 4 bytes */
+ total_len = 6 * sizeof(int32_t);
+
+ /* strings (size + char buffer)
+ * length: 4 bytes
+ * buffer: length bytes
+ */
+ total_len += sizeof(int32_t) + key_len;
+ total_len += sizeof(int32_t) + str_default_len;
+ total_len += sizeof(int32_t) + description_len;
+ total_len += sizeof(int32_t) + help_len;
+
+ /* enum values...
+ * value count: 4 bytes
+ * for each value:
+ * length: 4 bytes
+ * buffer: length bytes
+ */
+ value_count = 0;
+ total_len += sizeof(int32_t); /* value count */
+
+ char **cur_value = entry->enum_values;
+ if (cur_value) {
+ while (*cur_value && (value_count < (sizeof(value_len) / sizeof(int) ))) {
+ value_len[value_count] = strlen(*cur_value);
+ total_len += sizeof(int32_t) + value_len[value_count];
+ value_count++;
+ cur_value++;
+ }
+ }
+
+ /* Now we have the length needed to serialize the entry and the length of each string */
+ uint8_t *buffer = malloc (total_len);
+ if (!buffer) return NULL;
+
+ /* Let's go */
+
+ /* the integers */
+ pos += put_int(buffer, pos, entry->type);
+ pos += put_int(buffer, pos, entry->range_min);
+ pos += put_int(buffer, pos, entry->range_max);
+ pos += put_int(buffer, pos, entry->exp_level);
+ pos += put_int(buffer, pos, entry->num_default);
+ pos += put_int(buffer, pos, entry->num_value);
+
+ /* the strings */
+ pos += put_string(buffer, pos, entry->key, key_len);
+ pos += put_string(buffer, pos, entry->str_default, str_default_len);
+ pos += put_string(buffer, pos, entry->description, description_len);
+ pos += put_string(buffer, pos, entry->help, help_len);
+
+ /* the enum stuff */
+ pos += put_int(buffer, pos, value_count);
+ cur_value = entry->enum_values;
+
+ for (i = 0; i < value_count; i++) {
+ pos += put_string(buffer, pos, *cur_value, value_len[i]);
+ cur_value++;
+ }
+
+ /* and now the output encoding */
+ output = _x_base64_encode (buffer, total_len, &output_len);
+
+ free(buffer);
+ }
+ pthread_mutex_unlock(&this->config_lock);
+
+ return output;
+
+}
+
+static int get_int(uint8_t *buffer, int buffer_size, int pos, int *value) {
+ int32_t value_int32;
+
+ if ((pos + sizeof(int32_t)) > buffer_size)
+ return 0;
+
+ value_int32 = _X_LE_32(&buffer[pos]);
+ *value = (int)value_int32;
+ return sizeof(int32_t);
+}
+
+static int get_string(uint8_t *buffer, int buffer_size, int pos, char **value) {
+ int len;
+ int bytes = get_int(buffer, buffer_size, pos, &len);
+ *value = NULL;
+
+ if (!bytes || (len < 0) || (len > 1024*64))
+ return 0;
+
+ char *str = malloc(len + 1);
+ pos += bytes;
+ memcpy(str, &buffer[pos], len);
+ str[len] = 0;
+
+ *value = str;
+ return bytes + len;
+}
+
+static char* config_register_serialized_entry (config_values_t *this, const char *value) {
+ /*
+ fields serialized :
+ int type;
+ int range_min;
+ int range_max;
+ int exp_level;
+ int num_default;
+ int num_value;
+ char *key;
+ char *str_default;
+ char *description;
+ char *help;
+ char **enum_values;
+ */
+ int type;
+ int range_min;
+ int range_max;
+ int exp_level;
+ int num_default;
+ int num_value;
+ char *key = NULL;
+ char *str_default = NULL;
+ char *description = NULL;
+ char *help = NULL;
+ char **enum_values = NULL;
+
+ int bytes;
+ int pos;
+ void *output = NULL;
+ unsigned long output_len;
+ int value_count = 0;
+ int i;
+
+ output = _x_base64_decode (value, strlen(value), &output_len);
+
+ pos = 0;
+ pos += bytes = get_int(output, output_len, pos, &type);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_int(output, output_len, pos, &range_min);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_int(output, output_len, pos, &range_max);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_int(output, output_len, pos, &exp_level);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_int(output, output_len, pos, &num_default);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_int(output, output_len, pos, &num_value);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_string(output, output_len, pos, &key);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_string(output, output_len, pos, &str_default);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_string(output, output_len, pos, &description);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_string(output, output_len, pos, &help);
+ if (!bytes) goto exit;
+
+ pos += bytes = get_int(output, output_len, pos, &value_count);
+ if (!bytes) goto exit;
+ if ((value_count < 0) || (value_count > 256)) goto exit;
+
+ enum_values = malloc (sizeof(void*) * value_count + 1);
+ for (i = 0; i < value_count; i++) {
+ pos += bytes = get_string(output, output_len, pos, &enum_values[i]);
+ if (!bytes) goto exit;
+ }
+ enum_values[value_count] = NULL;
+
+#ifdef LOG
+ printf("config entry deserialization:\n");
+ printf(" key : %s\n", key);
+ printf(" type : %d\n", type);
+ printf(" exp_level : %d\n", exp_level);
+ printf(" num_default: %d\n", num_default);
+ printf(" num_value : %d\n", num_value);
+ printf(" str_default: %s\n", str_default);
+ printf(" range_min : %d\n", range_min);
+ printf(" range_max : %d\n", range_max);
+ printf(" description: %s\n", description);
+ printf(" help : %s\n", help);
+ printf(" enum : %d values\n", value_count);
+
+ for (i = 0; i < value_count; i++) {
+ printf(" enum[%2d]: %s\n", i, enum_values[i]);
+ }
+ printf("\n");
+#endif
+
+ switch (type) {
+ case XINE_CONFIG_TYPE_STRING:
+ switch (num_value) {
+ case 0:
+ this->register_string(this, key, str_default, description, help, exp_level, NULL, NULL);
+ break;
+ default:
+ this->register_filename(this, key, str_default, num_value, description, help, exp_level, NULL, NULL);
+ break;
+ }
+ break;
+ case XINE_CONFIG_TYPE_RANGE:
+ this->register_range(this, key, num_default, range_min, range_max, description, help, exp_level, NULL, NULL);
+ break;
+ case XINE_CONFIG_TYPE_ENUM:
+ this->register_enum(this, key, num_default, enum_values, description, help, exp_level, NULL, NULL);
+ break;
+ case XINE_CONFIG_TYPE_NUM:
+ this->register_num(this, key, num_default, description, help, exp_level, NULL, NULL);
+ break;
+ case XINE_CONFIG_TYPE_BOOL:
+ this->register_bool(this, key, num_default, description, help, exp_level, NULL, NULL);
+ break;
+ case XINE_CONFIG_TYPE_UNKNOWN:
+ break;
+ }
+
+exit:
+ /* cleanup */
+ free(str_default);
+ free(description);
+ free(help);
+ free(output);
+
+ if (enum_values) {
+ for (i = 0; i < value_count; i++) {
+ free(enum_values[i]);
+ }
+ free(enum_values);
+ }
+
+ return key;
+}
config_values_t *_x_config_init (void) {
@@ -1221,18 +1547,22 @@ config_values_t *_x_config_init (void) {
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&this->config_lock, &attr);
- this->register_string = config_register_string;
- this->register_filename = config_register_filename;
- this->register_range = config_register_range;
- this->register_enum = config_register_enum;
- this->register_num = config_register_num;
- this->register_bool = config_register_bool;
- this->update_num = config_update_num;
- this->update_string = config_update_string;
- this->parse_enum = config_parse_enum;
- this->lookup_entry = config_lookup_entry;
- this->unregister_callback = config_unregister_cb;
- this->dispose = config_dispose;
+ this->register_string = config_register_string;
+ this->register_filename = config_register_filename;
+ this->register_range = config_register_range;
+ this->register_enum = config_register_enum;
+ this->register_num = config_register_num;
+ this->register_bool = config_register_bool;
+ this->register_serialized_entry = config_register_serialized_entry;
+ this->update_num = config_update_num;
+ this->update_string = config_update_string;
+ this->parse_enum = config_parse_enum;
+ this->lookup_entry = config_lookup_entry;
+ this->unregister_callback = config_unregister_cb;
+ this->dispose = config_dispose;
+ this->set_new_entry_callback = config_set_new_entry_callback;
+ this->unset_new_entry_callback = config_unset_new_entry_callback;
+ this->get_serialized_entry = config_get_serialized_entry;
return this;
}
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
index b179a135d..8e4a10a60 100644
--- a/src/xine-engine/load_plugins.c
+++ b/src/xine-engine/load_plugins.c
@@ -49,6 +49,7 @@
/*
#define LOG
+#define DEBUG
*/
#define XINE_ENABLE_EXPERIMENTAL_FEATURES 1
@@ -65,6 +66,8 @@
#include <xine/xineutils.h>
#include <xine/compat.h>
+#define LINE_MAX_LENGTH (1024 * 32) /* 32 KiB */
+
#if 0
static char *plugin_name;
@@ -96,7 +99,7 @@ static void remove_segv_handler(void){
#endif
#endif /* 0 */
-#define CACHE_CATALOG_VERSION 2
+#define CACHE_CATALOG_VERSION 3
static const int plugin_iface_versions[] = {
INPUT_PLUGIN_IFACE_VERSION,
@@ -250,26 +253,26 @@ static void _decoder_priority_cb(void *data, xine_cfg_entry_t *cfg) {
map_decoders((xine_t *)data);
}
-static plugin_info_t *_get_cached_info (xine_t *this,
+static plugin_node_t *_get_cached_node (xine_t *this,
char *filename, off_t filesize, time_t filemtime,
- plugin_info_t *previous_info) {
+ plugin_node_t *previous_node) {
xine_sarray_t *list = this->plugin_catalog->cache_list;
int list_id, list_size;
list_size = xine_sarray_size (list);
for (list_id = 0; list_id < list_size; list_id++) {
plugin_node_t *node = xine_sarray_get (list, list_id);
- if( !previous_info &&
+ if( !previous_node &&
node->file->filesize == filesize &&
node->file->filemtime == filemtime &&
!strcmp( node->file->filename, filename )) {
- return node->info;
+ return node;
}
/* skip previously returned items */
- if( node->info == previous_info )
- previous_info = NULL;
+ if( node == previous_node )
+ previous_node = NULL;
}
return NULL;
@@ -299,6 +302,7 @@ static plugin_file_t *_insert_file (xine_t *this,
static void _insert_node (xine_t *this,
xine_sarray_t *list,
plugin_file_t *file,
+ plugin_node_t *node_cache,
plugin_info_t *info,
int api_version){
@@ -338,6 +342,7 @@ static void _insert_node (xine_t *this,
entry->file = file;
entry->ref = 0;
entry->priority = 0; /* default priority */
+ entry->config_entry_list = (node_cache) ? node_cache->config_entry_list : NULL;
switch (info->type & PLUGIN_TYPE_MASK){
@@ -480,7 +485,8 @@ static plugin_catalog_t *_new_catalog(void){
return catalog;
}
-static void _register_plugins_internal(xine_t *this, plugin_file_t *file, plugin_info_t *info) {
+static void _register_plugins_internal(xine_t *this, plugin_file_t *file,
+ plugin_node_t *node_cache, plugin_info_t *info) {
_x_assert(this);
_x_assert(info);
@@ -506,7 +512,7 @@ static void _register_plugins_internal(xine_t *this, plugin_file_t *file, plugin
int plugin_type = info->type & PLUGIN_TYPE_MASK;
if ((plugin_type > 0) && (plugin_type <= PLUGIN_TYPE_MAX)) {
- _insert_node (this, this->plugin_catalog->plugin_lists[plugin_type - 1], file, info,
+ _insert_node (this, this->plugin_catalog->plugin_lists[plugin_type - 1], file, node_cache, info,
plugin_iface_versions[plugin_type - 1]);
if ((plugin_type == PLUGIN_AUDIO_DECODER) ||
@@ -530,7 +536,8 @@ static void _register_plugins_internal(xine_t *this, plugin_file_t *file, plugin
/* get next info */
if( file && !file->lib_handle ) {
lprintf("get cached info\n");
- info = _get_cached_info (this, file->filename, file->filesize, file->filemtime, info);
+ node_cache = _get_cached_node (this, file->filename, file->filesize, file->filemtime, node_cache);
+ info = (node_cache) ? node_cache->info : NULL;
} else {
info++;
}
@@ -538,7 +545,7 @@ static void _register_plugins_internal(xine_t *this, plugin_file_t *file, plugin
}
void xine_register_plugins(xine_t *self, plugin_info_t *info) {
- _register_plugins_internal(self, NULL, info);
+ _register_plugins_internal(self, NULL, NULL, info);
}
/*
@@ -569,6 +576,7 @@ static void collect_plugins(xine_t *this, char *path){
size_t new_str_size, d_len;
void *lib = NULL;
plugin_info_t *info = NULL;
+ plugin_node_t *node = NULL;
struct stat statbuffer;
@@ -611,7 +619,8 @@ static void collect_plugins(xine_t *this, char *path){
lib = NULL;
/* get the first plugin_info_t */
- info = _get_cached_info (this, str, statbuffer.st_size, statbuffer.st_mtime, NULL);
+ node = _get_cached_node (this, str, statbuffer.st_size, statbuffer.st_mtime, NULL);
+ info = (node) ? node->info : NULL;
#ifdef LOG
if( info )
printf("load_plugins: using cached %s\n", str);
@@ -632,7 +641,7 @@ static void collect_plugins(xine_t *this, char *path){
file = _insert_file(this, this->plugin_catalog->file_list, str, &statbuffer, lib);
- _register_plugins_internal(this, file, info);
+ _register_plugins_internal(this, file, node, info);
}
else {
const char *error = dlerror();
@@ -689,6 +698,25 @@ static inline int _plugin_info_equal(const plugin_info_t *a,
return 1;
}
+static void _attach_entry_to_node (plugin_node_t *node, char *key) {
+
+ if (!node->config_entry_list) {
+ node->config_entry_list = xine_list_new();
+ }
+
+ xine_list_push_back(node->config_entry_list, key);
+}
+
+/*
+ * This callback is called by the config entry system when a plugin register a
+ * new config entry.
+ */
+static void _new_entry_cb (void *user_data, xine_cfg_entry_t *entry) {
+ plugin_node_t *node = (plugin_node_t *)user_data;
+
+ _attach_entry_to_node(node, strdup(entry->key));
+}
+
static int _load_plugin_class(xine_t *this,
plugin_node_t *node,
void *data) {
@@ -716,9 +744,17 @@ static int _load_plugin_class(xine_t *this,
if ((info = dlsym(node->file->lib_handle, "xine_plugin_info"))) {
/* TODO: use sigsegv handler */
- while (info->type != PLUGIN_NONE){
- if (_plugin_info_equal(info, target)){
- if ((node->plugin_class = info->init(this, data))) {
+ while (info->type != PLUGIN_NONE) {
+ if (_plugin_info_equal(info, target)) {
+ config_values_t *config = this->config;
+
+ /* the callback is called for each entry registered by this plugin */
+ lprintf("plugin init %s\n", node->info->id);
+ config->set_new_entry_callback(config, _new_entry_cb, node);
+ node->plugin_class = info->init(this, data);
+ config->unset_new_entry_callback(config);
+
+ if (node->plugin_class) {
inc_file_ref(node->file);
return 1;
} else {
@@ -797,8 +833,12 @@ static void _load_required_plugins(xine_t *this, xine_sarray_t *list) {
while (list_id < list_size) {
plugin_node_t *node = xine_sarray_get(list, list_id);
- if( (node->info->type & PLUGIN_MUST_PRELOAD) && !node->plugin_class ) {
-
+ /*
+ * preload plugins if not cached
+ */
+ if( (node->info->type & PLUGIN_MUST_PRELOAD) && !node->plugin_class &&
+ node->file->lib_handle ) {
+
lprintf("preload plugin %s from %s\n", node->info->id, node->file->filename);
if (! _load_plugin_class (this, node, NULL)) {
@@ -827,7 +867,7 @@ static void load_required_plugins(xine_t *this) {
/*
* save plugin list information to file (cached catalog)
*/
-static void save_plugin_list(FILE *fp, xine_sarray_t *list) {
+static void save_plugin_list(xine_t *this, FILE *fp, xine_sarray_t *list) {
const plugin_node_t *node;
const plugin_file_t *file;
@@ -837,7 +877,6 @@ static void save_plugin_list(FILE *fp, xine_sarray_t *list) {
const vo_info_t *vo_info;
const ao_info_t *ao_info;
const post_info_t *post_info;
-
int i;
int list_id = 0;
int list_size;
@@ -854,9 +893,9 @@ static void save_plugin_list(FILE *fp, xine_sarray_t *list) {
fprintf(fp, "api=%d\n", node->info->API );
fprintf(fp, "id=%s\n", node->info->id );
fprintf(fp, "version=%lu\n", (unsigned long) node->info->version );
-
+
switch (node->info->type & PLUGIN_TYPE_MASK){
-
+
case PLUGIN_VIDEO_OUT:
vo_info = node->info->special_info;
fprintf(fp, "visual_type=%d\n", vo_info->visual_type );
@@ -884,7 +923,7 @@ static void save_plugin_list(FILE *fp, xine_sarray_t *list) {
demuxer_info = node->info->special_info;
fprintf(fp, "demuxer_priority=%d\n", demuxer_info->priority);
break;
-
+
case PLUGIN_INPUT:
input_info = node->info->special_info;
fprintf(fp, "input_priority=%d\n", input_info->priority);
@@ -892,10 +931,27 @@ static void save_plugin_list(FILE *fp, xine_sarray_t *list) {
case PLUGIN_POST:
post_info = node->info->special_info;
- fprintf(fp, "post_type=%lu\n", (unsigned long)post_info->type);
- break;
- }
-
+ fprintf(fp, "post_type=%lu\n", (unsigned long)post_info->type);
+ break;
+ }
+
+ /* config entries */
+ if (node->config_entry_list) {
+ xine_list_iterator_t ite = xine_list_front(node->config_entry_list);
+ while (ite) {
+ char *key = xine_list_get_value(node->config_entry_list, ite);
+
+ /* now serialize the config key */
+ char *key_value = this->config->get_serialized_entry(this->config, key);
+
+ lprintf(" config key: %s, serialization: %d bytes\n", key, strlen(key_value));
+ fprintf(fp, "config_key=%s\n", key_value);
+
+ free (key_value);
+ ite = xine_list_next(node->config_entry_list, ite);
+ }
+ }
+
fprintf(fp, "\n");
list_id++;
}
@@ -904,7 +960,7 @@ static void save_plugin_list(FILE *fp, xine_sarray_t *list) {
/*
* load plugin list information from file (cached catalog)
*/
-static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) {
+static void load_plugin_list(xine_t *this, FILE *fp, xine_sarray_t *plugins) {
plugin_node_t *node;
plugin_file_t *file;
@@ -917,20 +973,29 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) {
int i;
uint64_t llu;
unsigned long lu;
- char line[1024];
+ char *line;
char *value;
+ size_t line_len;
int version_ok = 0;
+ line = malloc(LINE_MAX_LENGTH);
+ if (!line)
+ return;
+
node = NULL;
file = NULL;
- while (fgets (line, 1023, fp)) {
+ while (fgets (line, LINE_MAX_LENGTH, fp)) {
if (line[0] == '#')
continue;
-
- if( (value = strchr(line, '\r')) || (value = strchr(line, '\n')) )
- *value = (char) 0; /* eliminate any cr/lf */
+ line_len = strlen(line);
+ if (line_len < 3)
+ continue;
+
+ value = &line[line_len - 1];
+ if( (*value == '\r') || (*value == '\n') )
+ *value-- = (char) 0; /* eliminate any cr/lf */
- if( (value = strchr(line, '\r')) || (value = strchr(line, '\n')) )
+ if( (*value == '\r') || (*value == '\n') )
*value = (char) 0; /* eliminate any cr/lf */
if (line[0] == '[' && version_ok) {
@@ -1005,11 +1070,11 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) {
xine_xmalloc(sizeof(decoder_info_t));
break;
- case PLUGIN_POST:
- node->info->special_info = post_info =
- xine_xmalloc(sizeof(post_info_t));
- break;
- }
+ case PLUGIN_POST:
+ node->info->special_info = post_info =
+ xine_xmalloc(sizeof(post_info_t));
+ break;
+ }
} else if( !strcmp("api",line) ) {
sscanf(value," %d",&i);
@@ -1050,8 +1115,18 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) {
sscanf(value," %d",&i);
input_info->priority = i;
} else if( !strcmp("post_type",line) && post_info ) {
- sscanf(value," %lu",&lu);
- post_info->type = lu;
+ sscanf(value," %lu",&lu);
+ post_info->type = lu;
+ } else if( !strcmp("config_key",line) ) {
+ char* cfg_key;
+
+ cfg_key = this->config->register_serialized_entry(this->config, value);
+ if (cfg_key) {
+ /* this node is a cached node */
+ _attach_entry_to_node(node, cfg_key);
+ } else {
+ lprintf("failed to deserialize config entry key\n");
+ }
}
}
}
@@ -1060,6 +1135,8 @@ static void load_plugin_list(FILE *fp, xine_sarray_t *plugins) {
if( node ) {
xine_sarray_add (plugins, node);
}
+
+ free (line);
}
/**
@@ -1132,7 +1209,7 @@ static void save_catalog (xine_t *this) {
fprintf(fp, "cache_catalog_version=%d\n\n", CACHE_CATALOG_VERSION);
for (i = 0; i < PLUGIN_TYPE_MAX; i++) {
- save_plugin_list (fp, this->plugin_catalog->plugin_lists[i]);
+ save_plugin_list (this, fp, this->plugin_catalog->plugin_lists[i]);
}
fclose(fp);
}
@@ -1149,21 +1226,31 @@ static void load_cached_catalog (xine_t *this) {
/* It can't return NULL without creating directories */
if( (fp = fopen(cachefile,"r")) != NULL ) {
- load_plugin_list (fp, this->plugin_catalog->cache_list);
+ load_plugin_list (this, fp, this->plugin_catalog->cache_list);
fclose(fp);
}
free(cachefile);
}
+/* 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");
@@ -1175,48 +1262,44 @@ void _x_scan_plugins (xine_t *this) {
homedir = strdup(xine_get_homedir());
this->plugin_catalog = _new_catalog();
- load_cached_catalog (this);
-
- if ((pluginpath = getenv("XINE_PLUGIN_PATH")) != NULL) {
- pluginpath = strdup(pluginpath);
+ XINE_PROFILE(load_cached_catalog (this));
+
+ if ((pluginpath = getenv("XINE_PLUGIN_PATH")) != NULL && *pluginpath) {
+ char *p = pluginpath - 1;
+ while (p[1])
+ {
+ char *dir, *q = p;
+ p = strchr (p + 1, XINE_PATH_SEPARATOR_CHAR);
+ if (q[0] == '~' && q[1] == '/')
+ asprintf (&dir, "%s%.*s", homedir, (int)(p - q - 1), q + 1);
+ else
+ dir = strndup (q, p - q);
+ 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);
-
load_required_plugins (this);
+
+ XINE_PROFILE(save_catalog (this));
map_decoders (this);
}
@@ -2604,7 +2687,7 @@ char *xine_get_demux_for_mime_type (xine_t *self, const char *mime_type) {
}
-static void dispose_plugin_list (xine_sarray_t *list) {
+static void dispose_plugin_list (xine_sarray_t *list, int is_cache) {
plugin_node_t *node;
decoder_info_t *decoder_info;
@@ -2641,6 +2724,19 @@ static void dispose_plugin_list (xine_sarray_t *list) {
/* free info structure and string copies */
free (node->info->id);
free (node->info);
+
+ /* don't free the entry list if the node is cache */
+ if (!is_cache) {
+ if (node->config_entry_list) {
+ xine_list_iterator_t ite = xine_list_front (node->config_entry_list);
+ while (ite) {
+ char *key = xine_list_get_value (node->config_entry_list, ite);
+ free (key);
+ ite = xine_list_next (node->config_entry_list, ite);
+ }
+ xine_list_delete(node->config_entry_list);
+ }
+ }
free (node);
}
xine_sarray_delete(list);
@@ -2673,10 +2769,10 @@ void _x_dispose_plugins (xine_t *this) {
int i;
for (i = 0; i < PLUGIN_TYPE_MAX; i++) {
- dispose_plugin_list (this->plugin_catalog->plugin_lists[i]);
+ dispose_plugin_list (this->plugin_catalog->plugin_lists[i], 0);
}
- dispose_plugin_list (this->plugin_catalog->cache_list);
+ dispose_plugin_list (this->plugin_catalog->cache_list, 1);
dispose_plugin_file_list (this->plugin_catalog->file_list);
for (i = 0; this->plugin_catalog->prio_desc[i]; i++)
diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c
index 3da311dfc..c6dc8a2ce 100644
--- a/src/xine-engine/xine.c
+++ b/src/xine-engine/xine.c
@@ -52,6 +52,7 @@
#define LOG_VERBOSE
/*
#define LOG
+#define DEBUG
*/
#define XINE_ENABLE_EXPERIMENTAL_FEATURES
@@ -822,6 +823,19 @@ void _x_flush_events_queues (xine_stream_t *stream) {
pthread_mutex_unlock (&stream->event_queues_lock);
}
+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;
@@ -960,6 +974,7 @@ static int open_internal (xine_stream_t *stream, const char *mrl) {
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);
@@ -1134,7 +1149,9 @@ static int open_internal (xine_stream_t *stream, const char *mrl) {
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 ) ) {
@@ -1683,7 +1700,7 @@ void xine_init (xine_t *this) {
/*
* plugins
*/
- _x_scan_plugins(this);
+ XINE_PROFILE(_x_scan_plugins(this));
#ifdef HAVE_SETLOCALE
if (!setlocale(LC_CTYPE, ""))
diff --git a/src/xine-utils/Makefile.am b/src/xine-utils/Makefile.am
index 75cab2131..c17328ffd 100644
--- a/src/xine-utils/Makefile.am
+++ b/src/xine-utils/Makefile.am
@@ -16,6 +16,8 @@ endif
endif
libxineutils_la_SOURCES = $(pppc_files) \
+ base64.h \
+ base64.c \
cpu_accel.c \
color.c \
copy.c \
diff --git a/src/xine-utils/base64.c b/src/xine-utils/base64.c
new file mode 100644
index 000000000..5730f30db
--- /dev/null
+++ b/src/xine-utils/base64.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2000 Robert Kaye
+ *
+ * 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
+ *
+ * Base64 encoding modified for Musicbrainz
+ * relicensed under the GNU General Public License for use in xine-lib
+ */
+/* --------------------------------------------------------------------------
+
+ MusicBrainz -- The Internet music metadatabase
+
+ Copyright (C) 2000 Robert Kaye
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+
+----------------------------------------------------------------------------*/
+/*
+ * Program: RFC-822 routines (originally from SMTP)
+ *
+ * Author: Mark Crispin
+ * Networks and Distributed Computing
+ * Computing & Communications
+ * University of Washington
+ * Administration Building, AG-44
+ * Seattle, WA 98195
+ * Internet: MRC@CAC.Washington.EDU
+ *
+ * Date: 27 July 1988
+ * Last Edited: 10 September 1998
+ *
+ * Sponsorship: The original version of this work was developed in the
+ * Symbolic Systems Resources Group of the Knowledge Systems
+ * Laboratory at Stanford University in 1987-88, and was funded
+ * by the Biomedical Research Technology Program of the National
+ * Institutes of Health under grant number RR-00785.
+ *
+ * Original version Copyright 1988 by The Leland Stanford Junior University
+ * Copyright 1998 by the University of Washington
+ *
+ * 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 notices appear in all copies and that both the
+ * above copyright notices and this permission notice appear in supporting
+ * documentation, and that the name of the University of Washington or The
+ * Leland Stanford Junior University not be used in advertising or publicity
+ * pertaining to distribution of the software without specific, written prior
+ * permission. This software is made available "as is", and
+ * THE UNIVERSITY OF WASHINGTON AND THE LELAND STANFORD JUNIOR UNIVERSITY
+ * DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE UNIVERSITY OF
+ * WASHINGTON OR THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+
+#include "base64.h"
+
+
+/* NOTE: This is not true RFC822 anymore. The use of the characters
+ '/', '+', and '=' is no bueno when the ID will be used as part of a URL.
+ '_', '.', and '-' have been used instead
+*/
+
+/* Convert binary contents to BASE64
+ * Accepts: source
+ * length of source
+ * pointer to return destination length
+ * Returns: destination as BASE64
+ */
+
+unsigned char *_x_rfc822_binary (void *src,unsigned long srcl,unsigned long *len)
+{
+ unsigned char *ret,*d;
+ unsigned char *s = (unsigned char *) src;
+ static const char v[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
+ unsigned long i = ((srcl + 2) / 3) * 4;
+ *len = i += 2 * ((i / 60) + 1);
+ d = ret = (unsigned char *) malloc ((size_t) ++i);
+ for (i = 0; srcl; s += 3) { /* process tuplets */
+ *d++ = v[s[0] >> 2]; /* byte 1: high 6 bits (1) */
+ /* byte 2: low 2 bits (1), high 4 bits (2) */
+ *d++ = v[((s[0] << 4) + (--srcl ? (s[1] >> 4) : 0)) & 0x3f];
+ /* byte 3: low 4 bits (2), high 2 bits (3) */
+ *d++ = srcl ? v[((s[1] << 2) + (--srcl ? (s[2] >> 6) : 0)) & 0x3f] : '-';
+ /* byte 4: low 6 bits (3) */
+ *d++ = srcl ? v[s[2] & 0x3f] : '-';
+ if (srcl) srcl--; /* count third character if processed */
+ if ((++i) == 15) { /* output 60 characters? */
+ i = 0; /* restart line break count, insert CRLF */
+ *d++ = '\015'; *d++ = '\012';
+ }
+ }
+ *d = '\0'; /* tie off string */
+
+ return ret; /* return the resulting string */
+}
+
+char *_x_base64_encode (const void *src, unsigned long srcl, unsigned long *len)
+{
+ char *ret, *d;
+ unsigned char *s = (unsigned char *) src;
+ char *v = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
+ unsigned long i = ((srcl + 2) / 3) * 4;
+ *len = i;
+ d = ret = (char *) malloc ((size_t) ++i);
+ for (i = 0; srcl; s += 3) { /* process tuplets */
+ *d++ = v[s[0] >> 2]; /* byte 1: high 6 bits (1) */
+ /* byte 2: low 2 bits (1), high 4 bits (2) */
+ *d++ = v[((s[0] << 4) + (--srcl ? (s[1] >> 4) : 0)) & 0x3f];
+ /* byte 3: low 4 bits (2), high 2 bits (3) */
+ *d++ = srcl ? v[((s[1] << 2) + (--srcl ? (s[2] >> 6) : 0)) & 0x3f] : '-';
+ /* byte 4: low 6 bits (3) */
+ *d++ = srcl ? v[s[2] & 0x3f] : '-';
+ if (srcl) srcl--; /* count third character if processed */
+ }
+ *d = '\0'; /* tie off string */
+
+ return ret; /* return the resulting string */
+}
+
+void *_x_base64_decode (const char *src, unsigned long srcl, unsigned long *len)
+{
+ void *ret;
+ unsigned char *d;
+ unsigned long i = ((srcl + 3) / 4) * 3;
+ *len = i;
+ d = ret = (void *) malloc ((size_t)i);
+ for (i = 0; srcl; src += 4) { /* process tuplets */
+ unsigned char tuplet[4];
+ int j;
+
+ for (j = 0; j < 4; j += 1) {
+ if (srcl) {
+ if ((src[j] >= 'A') && (src[j] <= 'Z')) {
+ tuplet[j] = src[j] - 'A';
+ } else if ((src[j] >= 'a') && (src[j] <= 'z')) {
+ tuplet[j] = src[j] - 'a' + 26;
+ } else if ((src[j] >= '0') && (src[j] <= '9')) {
+ tuplet[j] = src[j] - '0' + 52;
+ } else if (src[j] == '.') {
+ tuplet[j] = 62;
+ } else if (src[j] == '_') {
+ tuplet[j] = 63;
+ } else {
+ tuplet[j] = 64;
+ }
+ srcl--;
+ } else {
+ (*len)--;
+ }
+ }
+
+ *d++ = (tuplet[0] << 2) + ((tuplet[1] & 0x3f) >> 4);
+ *d++ = (tuplet[1] << 4) + ((tuplet[2] & 0x3f) >> 2);
+ *d++ = (tuplet[2] << 6) + (tuplet[3] & 0x3f);
+ }
+
+ return ret; /* return the resulting string */
+}
diff --git a/src/xine-utils/base64.h b/src/xine-utils/base64.h
new file mode 100644
index 000000000..f22f9b0c4
--- /dev/null
+++ b/src/xine-utils/base64.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2000 Robert Kaye
+ *
+ * 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
+ *
+ * Base64 encoding modified for Musicbrainz
+ * relicensed under the GNU General Public License for use in xine-lib
+ */
+/* --------------------------------------------------------------------------
+
+ MusicBrainz -- The Internet music metadatabase
+
+ Copyright (C) 2000 Robert Kaye
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+
+----------------------------------------------------------------------------*/
+/*
+ * Program: RFC-822 routines (originally from SMTP)
+ *
+ * Author: Mark Crispin
+ * Networks and Distributed Computing
+ * Computing & Communications
+ * University of Washington
+ * Administration Building, AG-44
+ * Seattle, WA 98195
+ * Internet: MRC@CAC.Washington.EDU
+ *
+ * Date: 27 July 1988
+ * Last Edited: 10 September 1998
+ *
+ * Sponsorship: The original version of this work was developed in the
+ * Symbolic Systems Resources Group of the Knowledge Systems
+ * Laboratory at Stanford University in 1987-88, and was funded
+ * by the Biomedical Research Technology Program of the National
+ * Institutes of Health under grant number RR-00785.
+ *
+ * Original version Copyright 1988 by The Leland Stanford Junior University
+ * Copyright 1998 by the University of Washington
+ *
+ * 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 notices appear in all copies and that both the
+ * above copyright notices and this permission notice appear in supporting
+ * documentation, and that the name of the University of Washington or The
+ * Leland Stanford Junior University not be used in advertising or publicity
+ * pertaining to distribution of the software without specific, written prior
+ * permission. This software is made available "as is", and
+ * THE UNIVERSITY OF WASHINGTON AND THE LELAND STANFORD JUNIOR UNIVERSITY
+ * DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE UNIVERSITY OF
+ * WASHINGTON OR THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef BASE64_H
+#define BASE64_H
+
+unsigned char *_x_rfc822_binary (void *src,unsigned long srcl,unsigned long *len) XINE_PROTECTED;
+
+char *_x_base64_encode (const void *src, unsigned long srcl, unsigned long *len) XINE_PROTECTED;
+void *_x_base64_decode (const char *src, unsigned long srcl, unsigned long *len) XINE_PROTECTED;
+
+#endif
diff --git a/src/xine-utils/utils.c b/src/xine-utils/utils.c
index 8363f5831..d2105c5a2 100644
--- a/src/xine-utils/utils.c
+++ b/src/xine-utils/utils.c
@@ -346,22 +346,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
diff --git a/src/xine-utils/xmllexer.c b/src/xine-utils/xmllexer.c
index 579007e52..75a1aafec 100644
--- a/src/xine-utils/xmllexer.c
+++ b/src/xine-utils/xmllexer.c
@@ -531,27 +531,28 @@ int lexer_get_token_d(char ** _tok, int * _tok_size, int fixed) {
/* Terminate the current token */
tok[tok_pos] = '\0';
switch (state) {
- case 0:
- case 1:
- case 2:
+ case STATE_IDLE:
+ case STATE_EOL:
+ case STATE_SEPAR:
return T_EOF;
break;
- case 3:
+ case STATE_T_M_START:
return T_M_START_1;
break;
- case 4:
+ case STATE_T_M_STOP_1:
return T_M_STOP_1;
break;
- case 5:
+ case STATE_T_M_STOP_2:
return T_ERROR;
break;
- case 6:
+ case STATE_T_EQUAL:
return T_EQUAL;
break;
- case 7:
+ case STATE_T_STRING_SINGLE:
+ case STATE_T_STRING_DOUBLE:
return T_STRING;
break;
- case 100:
+ case STATE_IDENT:
return T_DATA;
break;
default:
diff --git a/version.sh b/version.sh
index 37649ecda..9e5611126 100755
--- a/version.sh
+++ b/version.sh
@@ -1,7 +1,11 @@
#!/bin/sh
# Making releases:
-# 1. Increment XINE_VERSION_SUB
+# 1. For normal releases
+# Increment XINE_VERSION_SUB
+# Clear XINE_VERSION_PATCH
+# For patch releases
+# Increment XINE_VERSION_PATCH (use ".1", ".2" etc.)
# 2. Remove .cvsversion before running make dist
# 3. Adjust the values of XINE_LT_CURRENT, XINE_LT_REVISION, and XINE_LT_AGE
# according to the following rules:
@@ -27,13 +31,14 @@
XINE_VERSION_MAJOR=1
XINE_VERSION_MINOR=1
XINE_VERSION_SUB=90
+XINE_VERSION_PATCH=
XINE_LT_CURRENT=2
XINE_LT_REVISION=0
XINE_LT_AGE=0
test -f "`dirname $0`/.cvsversion" && XINE_VERSION_SUFFIX="hg"
-XINE_VERSION_SPEC="${XINE_VERSION_MAJOR}.${XINE_VERSION_MINOR}.${XINE_VERSION_SUB}${XINE_VERSION_SUFFIX}"
+XINE_VERSION_SPEC="${XINE_VERSION_MAJOR}.${XINE_VERSION_MINOR}.${XINE_VERSION_SUB}${XINE_VERSION_PATCH}${XINE_VERSION_SUFFIX}"
####
#### You should not need to touch anything beyond this point
@@ -42,6 +47,7 @@ XINE_VERSION_SPEC="${XINE_VERSION_MAJOR}.${XINE_VERSION_MINOR}.${XINE_VERSION_SU
echo "m4_define([XINE_VERSION_MAJOR], [${XINE_VERSION_MAJOR}])dnl"
echo "m4_define([XINE_VERSION_MINOR], [${XINE_VERSION_MINOR}])dnl"
echo "m4_define([XINE_VERSION_SUB], [${XINE_VERSION_SUB}])dnl"
+echo "m4_define([XINE_VERSION_PATCH], [${XINE_VERSION_PATCH}])dnl"
echo "m4_define([XINE_VERSION_SUFFIX], [${XINE_VERSION_SUFFIX}])dnl"
echo "m4_define([XINE_VERSION_SPEC], [${XINE_VERSION_SPEC}])dnl"
echo "m4_define([__XINE_LT_CURRENT], [${XINE_LT_CURRENT}])dnl"
diff --git a/win32/Makefile.am b/win32/Makefile.am
index 934ddb81a..6f8795b5c 100644
--- a/win32/Makefile.am
+++ b/win32/Makefile.am
@@ -1,10 +1,19 @@
include $(top_srcdir)/misc/Makefile.common
-SUBDIRS = include
-
EXTRA_DIST = \
scripts/post_install.bat \
scripts/ffmpeg_win32.patch \
+ include/msvc/sys/time.h \
+ include/msvc/config.h \
+ include/msvc/inttypes.h \
+ include/msvc/stdint.h \
+ include/msvc/unistd.h \
+ include/sys/socket.h \
+ include/netinet/in.h \
+ include/sys/socket.h \
+ include/dlfcn.h \
+ include/netdb.h \
+ include/pwd.h \
config.h \
README \
libdvdnav.def \
diff --git a/win32/include/Makefile.am b/win32/include/Makefile.am
deleted file mode 100644
index e7f124586..000000000
--- a/win32/include/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-include $(top_srcdir)/misc/Makefile.common
-
-EXTRA_DIST = \
- msvc/sys/time.h \
- msvc/config.h \
- msvc/inttypes.h \
- msvc/stdint.h \
- msvc/unistd.h \
- sys/socket.h \
- netinet/in.h \
- sys/socket.h \
- dlfcn.h \
- netdb.h \
- pwd.h