summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--po/es.po1201
-rw-r--r--src/input/vcd/libcdio/_cdio_linux.c1198
-rw-r--r--src/xine-engine/buffer_types.c2
4 files changed, 2060 insertions, 342 deletions
diff --git a/ChangeLog b/ChangeLog
index 75d765f95..99cdd003b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -55,6 +55,7 @@ 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]
xine-lib (1.1.8)
* Send a channel-changed event to the frontend when receiving the SYNC
diff --git a/po/es.po b/po/es.po
index 1373458b2..6af72c21a 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,13 +4,14 @@
#
# Juan Manuel García Molina <juanma_gm@wanadoo.es>, 2002.
# Carlos E. Robinson M. <carloser@users.sourceforge.net>, 2006, 2007.
+# Cer: <<== marcas de revision.
msgid ""
msgstr ""
"Project-Id-Version: xine-lib-1.1.4\n"
"Report-Msgid-Bugs-To: xine-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2007-06-02 13:14+0200\n"
-"PO-Revision-Date: 2007-02-28 14:07+0100\n"
-"Last-Translator: Carlos E. Robinson M. <carloser@users.sourceforge.net>\n"
+"POT-Creation-Date: 2007-08-26 22:19+0100\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,35 +21,31 @@ msgstr ""
"X-Poedit-Language: Spanish\n"
"X-Poedit-Country: SPAIN\n"
"X-Poedit-SourceCharset: utf-8\n"
-"X-Poedit-Basepath: /home/cer/compilaciones/xine/xine-lib-1.1.4\n"
+"X-Poedit-Basepath: /home/cer/Documents/babel/xine-lib/po/\n"
#: lib/hstrerror.c:17
-#, fuzzy
msgid "No error"
-msgstr "error desconocido"
+msgstr "Sin error"
#: lib/hstrerror.c:18
-#, fuzzy
msgid "Unknown host"
-msgstr "error desconocido"
+msgstr "Host desconocido"
#: lib/hstrerror.c:19
msgid "No address associated with name"
-msgstr ""
+msgstr "No hay dirección asociada con el nombre"
#: lib/hstrerror.c:20
-#, fuzzy
msgid "Unknown server error"
-msgstr "error desconocido"
+msgstr "Error de servidor desconocido"
#: lib/hstrerror.c:21
msgid "Host name lookup failure"
-msgstr ""
+msgstr "Fallo de búsqueda de nombre del host"
#: lib/hstrerror.c:22
-#, fuzzy
msgid "Unknown error"
-msgstr "error desconocido"
+msgstr "Error desconocido"
#: src/audio_out/audio_alsa_out.c:351
#, c-format
@@ -243,7 +240,7 @@ msgstr ""
"un superbajos para las frecuencias bajas.\n"
"Paso libre: Su sistema de sonido recibirá sonido digital sin decodificar de "
"xine. Necesita conectar un decodificador digital envolvente capaz de "
-"decodificar los formatos que quiera reproducir mediate la salida digital de "
+"decodificar los formatos que quiera reproducir mediante la salida digital de "
"su tarjeta de sonido."
#: src/audio_out/audio_alsa_out.c:1491
@@ -568,8 +565,8 @@ msgid ""
"The unit of the value is one PTS tick, which is the 90000th part of a second."
msgstr ""
"Si observa que el sonido no está sincronizado con la imagen, puede "
-"introducir aquí un desfase fijo para compensar.\n"
-"La unidad del valor es un tick PTS tick, que es 1/90000 de segundo."
+"introducir aquí un desfase fijo para compensar.\n"
+"La unidad del valor es una marca PTS, que es 1/90000 segundo."
#: src/audio_out/audio_esd_out.c:574
msgid "xine audio output plugin using esound"
@@ -592,16 +589,16 @@ msgid ""
msgstr ""
"Puede especificar la máxima distancia entre el audio y el video que xine "
"tolerará antes de que trate de resincronizarlos.\n"
-"La unidad del valor es un tick PTS tick, que es 1/90000 de segundo."
+"La unidad del valor es una marca PTS, que es 1/90000 segundo."
#: src/audio_out/audio_irixal_out.c:417
msgid "xine audio output plugin using IRIX libaudio"
msgstr "complemento de xine de salida de audio usando libaudio IRIX"
#: src/audio_out/audio_jack_out.c:406
-#, fuzzy
msgid "xine output plugin for JACK Audio Connection Kit"
-msgstr "complemento de xine de salida de audio para Coreaudio/Mac OS X"
+msgstr ""
+"complemento de xine de salida de audio para \"JACK Audio Connection Kit\""
#: src/audio_out/audio_none_out.c:225
msgid "xine dummy audio output plugin"
@@ -813,22 +810,23 @@ msgstr ""
"complemento de xine de salida de audio usando dispositivos/drivers "
"compatibles OSS"
+# Cer: ¿pulseaudio?
#: src/audio_out/audio_pulse_out.c:608
-#, fuzzy
msgid "device used for pulseaudio"
-msgstr "dispositivo usado para polypaudio"
+msgstr "dispositivo usado para audio a pulsos"
+# Cer: ¿pulseaudio? Estaba como "polypaudio" pero fuzzy.
#: src/audio_out/audio_pulse_out.c:609
-#, fuzzy
msgid "use 'server[:sink]' for setting the pulseaudio sink device."
msgstr ""
-"use 'server[:sink]' para definir el sumidero del dispositivo polypaudio."
+"use 'server[:sink]' para definir el sumidero del dispositivo audio a pulsos."
+# Cer: ¿pulseaudio?
#: src/audio_out/audio_pulse_out.c:646
-#, fuzzy
msgid "xine audio output plugin using pulseaudio sound server"
msgstr ""
-"complemento de xine de salida de audio usando servidor de sonido polypaudio"
+"complemento de xine de salida de audio usando servidor de sonido audio a "
+"pulsos"
#: src/audio_out/audio_sun_out.c:459 src/audio_out/audio_sun_out.c:952
#, c-format
@@ -854,9 +852,10 @@ msgstr ""
"realmente un dispositivo audio de Sun."
#: src/audio_out/audio_sun_out.c:970
-#, fuzzy, c-format
+#, c-format
msgid "audio_sun_out: audio ioctl on device %s failed: %s\n"
-msgstr "audio_sun_out: fallo al abrir el dispositivo audio %s: %s\n"
+msgstr ""
+"audio_sun_out: fallo al abrir el controlador del dispositivo audio %s: %s\n"
#: src/audio_out/audio_sun_out.c:1024
msgid "xine audio output plugin using sun-compliant audio devices/drivers"
@@ -918,11 +917,11 @@ msgstr "bloque FILM no reconocido\n"
#: src/demuxers/demux_flv.c:172
#, c-format
msgid "unsupported FLV version (%d).\n"
-msgstr ""
+msgstr "Versión FLV no soportada (%d).\n"
#: src/demuxers/demux_flv.c:179
msgid "neither video nor audio stream in this file.\n"
-msgstr ""
+msgstr "no hay flujo de vídeo ni audio en este fichero.\n"
#: src/demuxers/demux_iff.c:235
#, c-format
@@ -1026,7 +1025,7 @@ msgstr "demux_snd: tipo de audio no soportado: %d\n"
#: src/demuxers/demux_tta.c:86
msgid "demux_tta: total frames count too high\n"
-msgstr ""
+msgstr "demux_tta: la cuenta total de cuadros es demasiado alta\n"
#: src/demuxers/demux_voc.c:105
#, c-format
@@ -1628,15 +1627,16 @@ msgstr ""
"que el enlentecimiento no afectaría el rendimiento de la reproducción.\n"
"Un valor de cero desactivará el enlentecimiento."
-#: src/input/input_dvb.c:900
-#, fuzzy, c-format
+#: src/input/input_dvb.c:895
+#, c-format
msgid "input_dvb: failed to open dvb channel file '%s': %s\n"
-msgstr "input_dvb: failló al abrir el fichero de canales DVB '%s'\n"
+msgstr "input_dvb: falló al abrir el fichero de canales'%s': %s\n"
-#: src/input/input_dvb.c:906
-#, fuzzy, c-format
+#: src/input/input_dvb.c:901
+#, c-format
msgid "input_dvb: dvb channel file '%s' is not a plain file\n"
-msgstr "input_dvb: failló al abrir el fichero de canales DVB '%s'\n"
+msgstr ""
+"input_dvb: el fichero de canales dvb '%s' no es un fichero texto plano\n"
#: src/input/input_dvb.c:2116 src/input/input_dvb.c:2948
msgid "input_dvb: tuner_set_channel failed\n"
@@ -1669,8 +1669,8 @@ 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:2826
-#, fuzzy, c-format
+#: src/input/input_dvb.c:2849
+#, 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 "
@@ -1693,7 +1693,7 @@ msgid ""
"input_dvb: dvbs mrl specified but the tuner doesn't appear to be QPSK (DVB-"
"S)\n"
msgstr ""
-"input_dvb: se especificó MRL DVBS pero el sintonizador no aparenta ser QPSK "
+"input_dvb: se especificó mrl dvbs pero el sintonizador no aparenta ser QPSK "
"(DVB-S)\n"
#: src/input/input_dvb.c:2870
@@ -1701,7 +1701,7 @@ msgid ""
"input_dvb: dvbt mrl specified but the tuner doesn't appear to be OFDM (DVB-"
"T)\n"
msgstr ""
-"input_dvb: se especificó MRL DVBT pero el sintonizador no aparenta ser OFDM "
+"input_dvb: se especificó mrl dvbt pero el sintonizador no aparenta ser OFDM "
"(DVB-T)\n"
#: src/input/input_dvb.c:2893
@@ -1709,17 +1709,16 @@ msgid ""
"input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-"
"C)\n"
msgstr ""
-"input_dvb: se especificó MRL DVBC pero el sintonizador no aparenta ser QAM "
+"input_dvb: se especificó mrl dvbc pero el sintonizador no aparenta ser QAM "
"(DVB-C)\n"
-#: src/input/input_dvb.c:2919
-#, fuzzy
+#: 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: se especificó MRL DVBC pero el sintonizador no aparenta ser QAM "
-"(DVB-C)\n"
+"input_dvb: se especificó mrl dvba pero el sintonizador no aparenta ser ATSC "
+"(DVB-A)\n"
#: src/input/input_dvb.c:2954
#, c-format
@@ -1766,7 +1765,19 @@ msgstr "Último canal DVB visto"
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:3264
+#: src/input/input_dvb.c:3283
+msgid "Number of seconds until tuning times out."
+msgstr "Número de segundos hasta que la sintonización temporice."
+
+#: src/input/input_dvb.c:3284
+msgid ""
+"Leave at 0 means try forever. Greater than 0 means wait that many seconds to "
+"get a lock. Minimum is 5 seconds."
+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:3290
msgid "Number of dvb card to use."
msgstr "Número de tarjeta DVB a usar."
@@ -2061,10 +2072,10 @@ msgstr "input_http: el estado de http no es 2xx: >%d %s<\n"
msgid "input_http: content length = %<PRIdMAX> bytes\n"
msgstr "input_http: longitud del contenido = %<PRIdMAX> bytes\n"
-#: src/input/input_http.c:932
-#, fuzzy, c-format
+#: src/input/input_http.c:959
+#, c-format
msgid "input_http: buffer exhausted after %d bytes."
-msgstr "input_http: error de lectura %d\n"
+msgstr "input_http: tampón agotado después de %d bytes."
#: src/input/input_http.c:1010
msgid "http input plugin"
@@ -2278,8 +2289,8 @@ msgid "RTP: reading thread terminated\n"
msgstr "RTP: hilo de lectura terminado\n"
# Cer: no esoy seguro del formato.
-#: src/input/input_rtp.c:623
-#, fuzzy, c-format
+#: src/input/input_rtp.c:648
+#, c-format
msgid "Opening >filename:%s port:%d interface:%s<\n"
msgstr "Abriendo >fichero:%s puerto:%d interfase:%s<\n"
@@ -2462,9 +2473,10 @@ msgstr "URL inválida\n"
msgid "unsupported protocol\n"
msgstr "protocolo no soportado\n"
+# msgstr "Tamponeando..."
#: src/input/net_buf_ctrl.c:89
msgid "Buffering..."
-msgstr "Tamponeando..."
+msgstr "Llenando mem. tampón..."
#: src/input/pnm.c:617
#, c-format
@@ -2739,10 +2751,9 @@ msgstr ""
"ffmpeg_audio_dec: no pude encontrar el decodificador ffmpeg para el tipo de "
"tampón 0x%X\n"
-#: src/libffmpeg/ff_audio_decoder.c:258
-#, fuzzy
+#: src/libffmpeg/ff_audio_decoder.c:256
msgid "ffmpeg_audio_dec: trying to open null codec\n"
-msgstr "ffmpeg_audio_dec: no pude abrir el decodificador\n"
+msgstr "ffmpeg_audio_dec: intentando abrir códec nulo\n"
#: src/libffmpeg/ff_audio_decoder.c:267
msgid "ffmpeg_audio_dec: couldn't open decoder\n"
@@ -2857,7 +2868,6 @@ msgid "path to RealPlayer codecs"
msgstr "camino a los codificadores RealPlayer"
#: src/libreal/real_common.c:108
-#, fuzzy
msgid ""
"If you have RealPlayer installed, specify the path to its codec directory "
"here. You can easily find the codec directory by looking for a file named "
@@ -2866,9 +2876,9 @@ msgid ""
"information on how to install the codecs."
msgstr ""
"Si tiene instalado RealPlayer, indique aquí el camino a su directorio de "
-"codificadores (códecs). Puede encontrar facilmente el directorio de "
-"cofidicadores buscando un fichero llamado \"drv3.so.6.0\". Si xine puede "
-"encontrar los códecs de RealPlayer, los usará para decodificar contenido "
+"codificadores (codecs). Puede encontrar fácilmente el directorio de "
+"codificadores buscando un fichero llamado \"drvc.so\" en él. Si xine puede "
+"encontrar los códecs de RealPlayer, los usará para decodificar el contenido "
"RealPlayer para usted. Consulte el FAQ de xine FAQ para más información "
"sobre cómo instalar los codificadores."
@@ -3022,16 +3032,15 @@ msgstr ""
"Tipografía del directorio de xine que será usada para el texto de los "
"subtítulos."
-#: src/libsputext/xine_sputext_decoder.c:972
-#, fuzzy
+#: src/libsputext/xine_sputext_decoder.c:953
msgid "An outline font file (e.g. a .ttf) to be used for the subtitle text."
msgstr ""
-"Tipografía del directorio de xine que será usada para el texto de los "
-"subtítulos."
+"Un fichero de tipografía tipo linea (pe: a.ttf) que será usada para el texto "
+"de los subtítulos."
#: src/libsputext/xine_sputext_decoder.c:978
msgid "whether to use a freetype font"
-msgstr ""
+msgstr "si debemos usar una tipografía freetype"
#: src/libsputext/xine_sputext_decoder.c:985
msgid "encoding of the subtitles"
@@ -3069,12 +3078,10 @@ msgstr ""
"tarjetas."
#: src/libw32dll/common.c:17
-#, fuzzy
msgid "path to Win32 codecs"
-msgstr "camino a los codificadores RealPlayer"
+msgstr "camino a los codificadores Win32"
#: src/libw32dll/common.c:18
-#, fuzzy
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 "
@@ -3082,12 +3089,12 @@ msgid ""
"Quicktime streams for you. Consult the xine FAQ for more information on how "
"to install the codecs."
msgstr ""
-"Si tiene instalado RealPlayer, indique aquí el camino a su directorio de "
-"codificadores (códecs). Puede encontrar facilmente el directorio de "
-"cofidicadores buscando un fichero llamado \"drv3.so.6.0\". Si xine puede "
-"encontrar los códecs de RealPlayer, los usará para decodificar contenido "
-"RealPlayer para usted. Consulte el FAQ de xine FAQ para más información "
-"sobre cómo instalar los codificadores."
+"Si tiene instalado los paquetes de codificador (codec) Quicktime de Windows "
+"o Apple , indique aquí el camino a su directorio de codificadores. Si xine "
+"puede encontrar los codificadores Quicktime de Windows o Apple, los usará "
+"para decodificar flujos diversos de Windows Media y Quicktime para usted. "
+"Consulte el FAQ de xine FAQ para más información sobre cómo instalar los "
+"codificadores."
#: src/libw32dll/w32codec.c:588
#, c-format
@@ -3303,14 +3310,15 @@ msgstr ""
msgid ": upmixing Mono to Stereo.\n"
msgstr ": mejorando Mono a Stereo.\n"
+# Cer: ¿upmixing?
#: src/post/audio/upmix_mono.c:152
-#, fuzzy, c-format
+#, 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] ""
-": mejorando un canal simple desde los %d canales del flujo original.\n"
+": mejorando un canal simple desde el %d canal del flujo original.\n"
msgstr[1] ""
-": mejorando un canal simple desde los %d canales del flujo original.\n"
+": mejorando un canal simple desde los %d canales del flujo original.\n"
#: src/post/audio/upmix_mono.c:157
msgid ": audio device not capable of AO_CAP_MODE_STEREO.\n"
@@ -3325,9 +3333,14 @@ msgid ""
"weighted mean over past samples (default); 2: use several samples to smooth "
"the variations via the standard weighted mean over past samples.\n"
msgstr ""
+"Normaliza el audio maximizando el volumen sin distorsionar el sonido.\n"
+"\n"
+"Parámetros: Método: 1: usa una muestra única para nivelar las variaciones "
+"vía la media ponderada standard de las muestras pasadas (por defecto); 2 usa "
+"varias muestras para nivelar las variaciones vía la media ponderada standard "
+"de las muestras pasadas.\n"
#: src/post/deinterlace/xine_plugin.c:204
-#, fuzzy
msgid ""
"Advanced tvtime/deinterlacer plugin with pulldown detection\n"
"This plugin aims to provide deinterlacing mechanisms comparable to high "
@@ -3382,9 +3395,9 @@ msgstr ""
"Complemento avanzado tvtime/desentrelazador con detección de despliegue de "
"menú {pulldown}\n"
"Este complemento trata de suministrar mecanismos de desentrelazado "
-"comparables a reproductores progresivos de DVD y los así llamados dobladores "
-"de linea, para usar con monitores de ordenador, proyectores y otros "
-"dispositivos de visualización progresiva.\n"
+"comparables a reproductores de alta calidad progresivos de DVD y los así "
+"llamados dobladores de linea, para usar con monitores de ordenador, "
+"proyectores y otros dispositivos de visualización progresiva.\n"
" \n"
"Parámetros\n"
"\n"
@@ -3394,7 +3407,7 @@ msgstr ""
" 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 "
+"{¿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"
"\n"
@@ -3412,7 +3425,7 @@ msgstr ""
"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 (bandera de usar cuadro progresivo): Flujos de "
+" Use_progressive_frame_flag (use bandera de cuadro progresivo): Flujos de "
"datos MPEG2 bien creados usan una bandera para indicar material progresivo. "
"Este ajuste controla si nos fiamos de esta bandera o no (algunos flujos de "
"datos mpeg2 raros y erróneos la ponen mal).\n"
@@ -3453,8 +3466,8 @@ msgstr ""
"Con más cuadros por segundo, la animación será más suave y rápida, pero "
"también requiere más potencia de CPU."
-#: src/post/goom/xine_goom.c:210
-#, fuzzy
+# Cer: ¿goom?
+#: src/post/goom/xine_goom.c:214
msgid "goom image width"
msgstr "anchura de imagen goom"
@@ -3462,8 +3475,8 @@ msgstr "anchura de imagen goom"
msgid "The width in pixels of the image to be generated."
msgstr "La anchura en píxeles de la imagen a ser generada."
-#: src/post/goom/xine_goom.c:215
-#, fuzzy
+# Cer: ¿goom?
+#: src/post/goom/xine_goom.c:219
msgid "goom image height"
msgstr "altura de imagen goom"
@@ -3475,8 +3488,8 @@ msgstr "La altura en píxeles de la imagen a ser generada."
msgid "colorspace conversion method"
msgstr "método de conversión del espacio de color"
-#: src/post/goom/xine_goom.c:223
-#, fuzzy
+# Cer: ¿goom?
+#: src/post/goom/xine_goom.c:227
msgid ""
"You can choose the colorspace conversion method used by goom.\n"
"The available selections should be self-explaining."
@@ -3537,7 +3550,6 @@ msgstr ""
"* mplayer's boxblur (C) 2002 Michael Niedermayer\n"
#: src/post/planar/denoise3d.c:136
-#, fuzzy
msgid ""
"This filter aims to reduce image noise producing smooth images and making "
"still images really still (This should enhance compressibility.). It can be "
@@ -3553,7 +3565,7 @@ msgid ""
msgstr ""
"Este filtro trata de reducir el ruido de imagen produciendo imágenes suaves "
"y haciendo la foto fija realmente fija (esto debería mejorar la "
-"comprensibilidad). Puede dársele de 0 a 3 parámetros. Si omite un parámetro, "
+"compresibilidad). Puede dársele de 0 a 3 parámetros. Si omite un parámetro, "
"se inferirá un valor razonable\n"
"\n"
"Parámetros\n"
@@ -3636,7 +3648,6 @@ msgstr ""
"* mplayer's eq (C) Richard Felker\n"
#: src/post/planar/expand.c:251
-#, fuzzy
msgid ""
"The expand plugin is meant to take frames of arbitrary aspect ratio and "
"converts them to a different aspect (4:3 by default) by adding black bars on "
@@ -3652,7 +3663,7 @@ msgid ""
msgstr ""
"El complemento expand (expansor) está pensado para tomar cuadros de razón de "
"aspecto arbitrario y convertirlos a una razón de aspecto diferente (4:3 por "
-"defecto) añadiendo barras negras arriba y abajo del cuadro. Esto nos permite "
+"omisión) añadiendo barras negras arriba y abajo del cuadro. Esto nos permite "
"desplazar superposiciones abajo en la zona negra de modo que no cubran la "
"imagen\n"
"\n"
@@ -3661,6 +3672,7 @@ msgstr ""
"superposición\n"
" Overlay_y_offset: Manualmente desplazar la superposición verticalmente\n"
" aspect: La razón de aspecto resultante deseada (4:3 por defecto)\n"
+" Centre_cut_out_mode: extrae la imagen 4:3 contenida en un cuadro 16:9\n"
"\n"
#: src/post/planar/noise.c:402
@@ -3680,6 +3692,21 @@ msgid ""
"\n"
"* mplayer's noise (C) Michael Niedermayer\n"
msgstr ""
+"Añade ruido aleatorio al vídeo.\n"
+"\n"
+"Parámetros:\n"
+" luma_strength: fuerza del ruido añadido al canal luma (0-100, omisión: 8)\n"
+" chroma_strength: fuerza del ruido añadido al canal chroma (0-100, omisión: "
+"5)\n"
+" quality: nivel de calidad del ruido. fixed: patrón de ruido constante; "
+"temporal: el patrón de ruido cambia entre cuadros; averaged temporal: "
+"smoother patrón de ruido más suave que cambia entre cuadros. (omisión: "
+"averaged temporal)\n"
+" type: Tipo de ruido: uniforme or gaussiano. (omisión: gaussiano)\n"
+" pattern: Mezcla ruido aleatorio con un patrón (semi)regular. (omisión: "
+"False)\n"
+"\n"
+"* mplayer's noise (C) Michael Niedermayer\n"
#: src/post/planar/pp.c:108
msgid ""
@@ -3897,39 +3924,37 @@ msgstr ""
"\"=desactivado)."
#: src/video_out/video_out_directfb.c:1516
-#, fuzzy
msgid "video_out_directfb: using hardware subpicture acceleration.\n"
-msgstr "video_out_directfb: usando escalado de imagen en hardware acelerado.\n"
+msgstr "video_out_directfb: usando aceleración hardware de subimagen\n"
#: src/video_out/video_out_directfb.c:1530
-#, fuzzy
msgid "video_out_directfb: layer supports video output.\n"
-msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
+msgstr "video_out_directfb: la capa soporta salida de vídeo\n"
#: src/video_out/video_out_directfb.c:1539
-#, fuzzy
msgid "video_out_directfb: layer doesn't support YV12!\n"
-msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
+msgstr "video_out_directfb: ¡la capa no soporta YV12!\n"
#: src/video_out/video_out_directfb.c:1546
-#, fuzzy
msgid "video_out_directfb: layer doesn't support YUY2!\n"
-msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
+msgstr "video_out_directfb: ¡la capa no soporta YUV2!\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:¡se necesita al menos DirectFB 0.9.25 para reproducir en "
+"esta capa!\n"
#: src/video_out/video_out_directfb.c:1592
-#, fuzzy, c-format
+#, c-format
msgid "video_out_directfb: layer doesn't support buffermode %d!\n"
-msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
+msgstr "video_out_directfb: ¡la capa no soporta modo tamponeado %d!\n"
#: src/video_out/video_out_directfb.c:1598
#, c-format
msgid "video_out_directfb: layer doesn't support options 0x%08x!\n"
-msgstr ""
+msgstr "video_out_directfb: ¡la capa no soporta las opciones 0x%08x!\n"
#: src/video_out/video_out_directfb.c:1692
msgid "video_out_directfb: using hardware accelerated image scaling.\n"
@@ -3944,9 +3969,8 @@ msgstr ""
"hardware.\n"
#: src/video_out/video_out_directfb.c:1782
-#, fuzzy
msgid "video layer id (auto: -1)"
-msgstr "id de la capa de vídeo"
+msgstr "id. de la capa de vídeo (auto: -1)"
#: src/video_out/video_out_directfb.c:1783
msgid "Select the video output layer by its id."
@@ -3954,20 +3978,18 @@ msgstr "Seleccione la capa de salida de vídeo por su id."
#: src/video_out/video_out_directfb.c:1804
#: src/video_out/video_out_directfb.c:2014
-#, fuzzy, c-format
+#, c-format
msgid "video_out_directfb: using display layer #%d.\n"
-msgstr ""
-"video_out_directfb: ¡no se encontró una capa de superposición usable!\n"
+msgstr "video_out_directfb: usando capa de visualización nº %d.\n"
#: src/video_out/video_out_directfb.c:1888
msgid "xine video output plugin using DirectFB."
msgstr "complemento de xine de salida de vídeo usando DirectFB."
#: src/video_out/video_out_directfb.c:2007
-#, fuzzy
msgid "video_out_directfb: no usable display layer was found!\n"
msgstr ""
-"video_out_directfb: ¡no se encontró una capa de superposición usable!\n"
+"video_out_directfb: ¡no se encontró una capa de visualización usable!\n"
#: src/video_out/video_out_directfb.c:2096
msgid "xine video output plugin using DirectFB under XDirectFB."
@@ -4028,16 +4050,17 @@ msgstr ""
"Disminuyendo\n"
" la resolución del tampón de cuadro podría ayudar.\n"
-#: src/video_out/video_out_fb.c:989
-#, fuzzy, c-format
+# Cer: panning --> panoramizado
+# frame flips --> volteos de cuadro
+# Zero copy buffers --> tampones copia cero
+#: src/video_out/video_out_fb.c:969
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: Tampones Zero copy (copia Cero) están DESACTIVADOS "
-"porque el driver del kernel\n"
-" no soporta panoramizado (panning) de pantalla (usado para volteos de "
-"cuadro (frame flips)).\n"
+"AVISO: video_out_fb: 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:1058
#, fuzzy, c-format
@@ -4171,6 +4194,7 @@ msgstr ""
"video_out_pgx32: Error: '%s' no es un dispositivo tampón de cuadro "
"(framebuffer) pgx32\n"
+# Cer: Mmm, coger :-?
#: src/video_out/video_out_pgx64.c:281
msgid "video_out_pgx64: Error: can't grab DGA drawable for video window\n"
msgstr ""
@@ -4290,52 +4314,57 @@ msgstr ""
#: src/video_out/video_out_sdl.c:562
msgid "video_out_sdl: fullscreen mode is NOT supported\n"
-msgstr ""
+msgstr "video_out_sdl: el modo de pantalla completa NO está soportado\n"
-# CER, traducción incierta
+# Cer: traducción incierta
#: src/video_out/video_out_sdl.c:573
-#, fuzzy
msgid "xine video output plugin using the Simple Direct Media Layer"
msgstr ""
-"complemento de xine de salida de vídeo usando la Capa Simple Media Directo"
+"complemento de xine de salida de vídeo usando la Capa Simple de Medios "
+"Directo"
#: src/video_out/video_out_stk.c:454
msgid "xine video output plugin using the Libstk Surface Set-top Toolkit"
-msgstr "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:282
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:298
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:940
msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (3 plane))\n"
-msgstr ""
+msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUV 4:2:0 (3 planos))\n"
#: src/video_out/video_out_syncfb.c:945
msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:0 (2 plane))\n"
-msgstr ""
+msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUV 4:2:0 (2 planos))\n"
#: src/video_out/video_out_syncfb.c:950
msgid "video_out_syncfb: info. (SyncFB module supports YUV 4:2:2)\n"
-msgstr ""
+msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUV 4:2:2)\n"
#: src/video_out/video_out_syncfb.c:956
msgid "video_out_syncfb: info. (SyncFB module supports YUY2)\n"
-msgstr ""
+msgstr "video_out_syncfb: info. (módulo SyncFB soporta YUY2)\n"
#: src/video_out/video_out_syncfb.c:963
msgid "video_out_syncfb: info. (SyncFB module supports RGB565)\n"
-msgstr ""
+msgstr "video_out_syncfb: info. (módulo SyncFB soporta RGB565)\n"
#: src/video_out/video_out_syncfb.c:968
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:987
msgid ""
@@ -4343,25 +4372,32 @@ msgid ""
"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:1011
msgid "default number of frame repetitions"
-msgstr ""
+msgstr "número por defecto de repeticiones de cuadros"
#: src/video_out/video_out_syncfb.c:1012
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 ""
"xine video output plugin using the SyncFB module for Matrox G200/G400 cards"
msgstr ""
+"complemento de vídeo de xine usando el módulo SyncFB para tarjetas Matrox "
+"G200/G400"
#: src/video_out/video_out_syncfb.c:1078
msgid "SyncFB device name"
-msgstr ""
+msgstr "Nombre de dispositivo de SyncFB"
#: src/video_out/video_out_syncfb.c:1079
msgid ""
@@ -4370,30 +4406,36 @@ msgid ""
"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_vidix.c:993
msgid "red intensity"
-msgstr ""
+msgstr "intensidad de rojo "
#: src/video_out/video_out_vidix.c:993
msgid "The intensity of the red colour components."
-msgstr ""
+msgstr "La intensidad de los componentes de color rojo."
#: src/video_out/video_out_vidix.c:998
msgid "green intensity"
-msgstr ""
+msgstr "intensidad de verde"
#: src/video_out/video_out_vidix.c:998
msgid "The intensity of the green colour components."
-msgstr ""
+msgstr "La intensidad de los componentes de color verde."
#: src/video_out/video_out_vidix.c:1003
msgid "blue intensity"
-msgstr ""
+msgstr "intensidad de azul"
#: src/video_out/video_out_vidix.c:1003
msgid "The intensity of the blue colour components."
-msgstr ""
+msgstr "La intensidad de los componentes de color azul."
#: src/video_out/video_out_vidix.c:1016 src/video_out/video_out_xcbxv.c:1305
#: src/video_out/video_out_xv.c:1360 src/video_out/video_out_xvmc.c:1424
@@ -4403,31 +4445,36 @@ msgid ""
"repainting of the entire screen (\"vertical retrace\"). This eliminates "
"flickering and tearing artifacts, but will use more graphics memory."
msgstr ""
+"El doble tamponeado sincronizará la actualización de la imagen de vídeo al "
+"redibujado de la pantalla de video entera (\"vertical retrace\", retrazado "
+"vertical). Esto elimina el parpadeo y artifactos de rajado, pero usa más "
+"memoria gráfica."
#: src/video_out/video_out_vidix.c:1063
msgid "video_out_vidix: adaptor supports the yuy2 format\n"
-msgstr ""
+msgstr "video_out_vidix: el adaptador soporta el formato yuy2\n"
#: src/video_out/video_out_vidix.c:1074
msgid "video_out_vidix: adaptor supports the yv12 format\n"
-msgstr ""
+msgstr "video_out_vidix: el adaptador soporta el formato yv12\n"
#: src/video_out/video_out_vidix.c:1090
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:1098
msgid "video_out_vidix: Couldn't find working VIDIX driver\n"
-msgstr ""
+msgstr "video_out_vidix: No pude localizar el driver VIDIX que funcione\n"
#: src/video_out/video_out_vidix.c:1111
#, c-format
msgid "video_out_vidix: using driver: %s by %s\n"
-msgstr ""
+msgstr "video_out_vidix: usando driver: %s por %s\n"
#: src/video_out/video_out_vidix.c:1158
msgid "video overlay colour key red component"
-msgstr ""
+msgstr "clave de componente rojo en superposición de vídeo"
#: src/video_out/video_out_vidix.c:1159 src/video_out/video_out_vidix.c:1166
#: src/video_out/video_out_vidix.c:1173 src/video_out/video_out_xcbxv.c:1272
@@ -4437,22 +4484,26 @@ 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 ""
+"La llave de color se usa para decirle a la tarjeta gráfica donde superponer "
+"la imagen de vídeo. Pruebe diferentes valores si observa que las ventanas se "
+"vuelven transparentes."
#: src/video_out/video_out_vidix.c:1165
msgid "video overlay colour key green component"
-msgstr ""
+msgstr "clave de componente verde en superposición de vídeo"
#: src/video_out/video_out_vidix.c:1172
msgid "video overlay colour key blue component"
-msgstr ""
+msgstr "clave de componente azul en superposición de vídeo"
#: src/video_out/video_out_vidix.c:1204
msgid "xine video output plugin using libvidix for x11"
-msgstr ""
+msgstr "complemento de salida de vídeo usando libvidix para x11"
#: src/video_out/video_out_vidix.c:1286
msgid "xine video output plugin using libvidix for linux frame buffer"
msgstr ""
+"complemento de salida de vídeo usando libvidix para frame buffer de linux"
#: src/video_out/video_out_xcbshm.c:157 src/video_out/video_out_xshm.c:219
#, c-format
@@ -4472,11 +4523,18 @@ msgstr ""
#, c-format
msgid "%s: => not using MIT Shared Memory extension.\n"
msgstr ""
+"video_out_xcbshm: %s: ubicando imagen\n"
+"video_out_xcbshm: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
#: src/video_out/video_out_xcbshm.c:167 src/video_out/video_out_xshm.c:230
#, c-format
msgid "%s: shared memory error (address error) when allocating image \n"
msgstr ""
+"video_out_xcbshm: error de memoria compartida (error de dirección) ) al "
+"ubicar imagen\n"
+"video_out_xcbshm: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
#: src/video_out/video_out_xcbshm.c:179 src/video_out/video_out_xcbxv.c:297
#: src/video_out/video_out_xshm.c:249 src/video_out/video_out_xv.c:365
@@ -4484,6 +4542,10 @@ msgstr ""
#, c-format
msgid "%s: x11 error during shared memory XImage creation\n"
msgstr ""
+"video_out_xcbshm: x11 error durante creación de XImage en memoria "
+"compartida\n"
+"video_out_xcbshm: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
#: src/video_out/video_out_xcbshm.c:1103 src/video_out/video_out_xshm.c:1161
#, c-format
@@ -4494,43 +4556,58 @@ msgid ""
"a depth of 16 bpp is recommended!\n"
"\n"
msgstr ""
+"\n"
+"\n"
+"AVISO: la profundidad actual de la pantalla es %d. ¡Para el mejor\n"
+"rendimiento se recomienda una profundidad de 16 bpp!\n"
+"\n"
#: src/video_out/video_out_xcbshm.c:1116 src/video_out/video_out_xshm.c:1174
#, c-format
msgid "%s: MIT shared memory extension not present on display.\n"
msgstr ""
+"video_out_xcbshm: la extensión de memoria compartida del MIT (MIT Shared "
+"Memory) no está presente en la pantalla.\n"
-#: src/video_out/video_out_xcbshm.c:1215 src/video_out/video_out_xshm.c:1258
-#, fuzzy, 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"
+#: src/video_out/video_out_xcbshm.c:1212
+msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n"
+msgstr "video_out_xcbshm: su modo de vídeo no fué reconocido, lo siento :-(\n"
#: src/video_out/video_out_xcbshm.c:1245 src/video_out/video_out_xshm.c:1307
msgid "xine video output plugin using the MIT X shared memory extension"
msgstr ""
+"complemento de salida de vídeo de xine usando la extensión de memoria "
+"compartida del MIT (MIT Shared Memory) "
#: src/video_out/video_out_xcbxv.c:265 src/video_out/video_out_xv.c:320
#: src/video_out/video_out_xxmc.c:657
#, c-format
msgid "%s: XvShmCreateImage returned a zero size\n"
msgstr ""
+"video_out_xcbxv: XvShmCreateImage retornó un tamaño cero\n"
+"video_out_xcbxv: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
#: src/video_out/video_out_xcbxv.c:275 src/video_out/video_out_xv.c:329
#: src/video_out/video_out_xxmc.c:666
#, c-format
msgid "%s: shared memory error in shmget: %s\n"
msgstr ""
+"video_out_xcbxv: error de memoria compartida en shmget: %s\n"
+"video_out_xcbxv: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
#: src/video_out/video_out_xcbxv.c:285
#, c-format
msgid "%s: shared memory error (address error)\n"
msgstr ""
+"video_out_xcbxv: x11 error durante creación de XImage en memoria compartida\n"
+"video_out_xcbxv: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
-#: src/video_out/video_out_xcbxv.c:1125 src/video_out/video_out_xv.c:1174
-#: src/video_out/video_out_xxmc.c:2349
-#, c-format
-msgid "%s: Xv extension not present.\n"
-msgstr ""
+#: src/video_out/video_out_xcbxv.c:1291
+msgid "video_out_xcbxv: Xv extension not present.\n"
+msgstr "video_out_xcbxv: la extensión Xv no está presente.\n"
#: src/video_out/video_out_xcbxv.c:1167 src/video_out/video_out_xv.c:1211
#: src/video_out/video_out_xxmc.c:2386
@@ -4539,6 +4616,9 @@ msgid ""
"%s: Xv extension is present but I couldn't find a usable yuv12 port.\n"
"\tLooks like your graphics hardware driver doesn't support Xv?!\n"
msgstr ""
+"video_out_xcbxv: 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"
#: src/video_out/video_out_xcbxv.c:1176
#, c-format
@@ -4546,21 +4626,23 @@ msgid ""
"%s: using Xv port %d from adaptor %s for hardware colorspace conversion and "
"scaling.\n"
msgstr ""
+"video_out_xcbxv: usando puerto Xv %d del adaptador %s para conversión y "
+"escalado de espacio de color en hardware .\n"
#: src/video_out/video_out_xcbxv.c:1280 src/video_out/video_out_xv.c:1335
#: src/video_out/video_out_xvmc.c:1417 src/video_out/video_out_xxmc.c:2507
msgid "autopaint colour key"
-msgstr ""
+msgstr "llave de color autopintado"
#: src/video_out/video_out_xcbxv.c:1281 src/video_out/video_out_xv.c:1336
#: src/video_out/video_out_xvmc.c:1418 src/video_out/video_out_xxmc.c:2508
msgid "Make Xv autopaint its colorkey."
-msgstr ""
+msgstr "Hacer Xv autopintar su llave de color."
#: src/video_out/video_out_xcbxv.c:1288 src/video_out/video_out_xv.c:1343
#: src/video_out/video_out_xxmc.c:2515
msgid "bilinear scaling mode"
-msgstr ""
+msgstr "modo de escalado bilineal"
#: src/video_out/video_out_xcbxv.c:1289 src/video_out/video_out_xv.c:1344
#: src/video_out/video_out_xxmc.c:2516
@@ -4577,6 +4659,25 @@ msgid ""
"1 - horizontal linear filtering\n"
"2 - enable full bilinear filtering"
msgstr ""
+"Selecciona el modo de escalado bilineal para las tarjetas Permedia. Los "
+"valores individuales son:\n"
+"\n"
+"Permedia 2\n"
+"0 - desactivar filtrado bilineal\n"
+"1 - activar filtrado bilineal\n"
+"\n"
+"Permedia 3\n"
+"0 - desactivar filtrado bilineal\n"
+"1 - filtrado horizontal lineal\n"
+"2 - sactivar filtrado bilineal completo"
+
+#: src/video_out/video_out_xcbxv.c:1509
+msgid "video_out_xcbxv: this adaptor supports the yv12 format.\n"
+msgstr "video_out_xcbxv: éste adaptador soporta el formato yv12.\n"
+
+#: src/video_out/video_out_xcbxv.c:1514
+msgid "video_out_xcbxv: this adaptor supports the yuy2 format.\n"
+msgstr "video_out_xcbxv: éste adaptador soporta el formato yuy2.\n"
#: src/video_out/video_out_xcbxv.c:1341 src/video_out/video_out_xv.c:1393
#: src/video_out/video_out_xxmc.c:2572
@@ -4593,48 +4694,230 @@ msgstr "video_out_directfb: ¡no se encontró una capa de salida usable!\n"
#: src/video_out/video_out_xcbxv.c:1354 src/video_out/video_out_xv.c:1420
#: src/video_out/video_out_xxmc.c:2600
msgid "pitch alignment workaround"
-msgstr ""
+msgstr "rodeo para alineamiento de paso"
#: src/video_out/video_out_xcbxv.c:1355 src/video_out/video_out_xv.c:1421
#: src/video_out/video_out_xxmc.c:2601
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:1383 src/video_out/video_out_xv.c:1468
-#: src/video_out/video_out_xxmc.c:2681
-msgid "xine video output plugin using the MIT X video extension"
+#: src/video_out/video_out_xcbxv.c:1529 src/video_out/video_out_xv.c:1598
+#: src/video_out/video_out_xvmc.c:1524
+msgid "deinterlace method (deprecated)"
+msgstr "método de desentrelazado (obsolescente)"
+
+#: src/video_out/video_out_xcbxv.c:1530 src/video_out/video_out_xv.c:1599
+#: src/video_out/video_out_xvmc.c:1525
+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."
+
+#: src/video_out/video_out_xcbxv.c:1584 src/video_out/video_out_xv.c:1672
+#: src/video_out/video_out_xxmc.c:2733
+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:202
+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"
+
+#: src/video_out/video_out_xshm.c:218
#, c-format
-msgid "%s: shared memory error when allocating image\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"
-#: src/video_out/video_out_xv.c:293 src/video_out/video_out_xxmc.c:646
+#: src/video_out/video_out_xshm.c:228
+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"
+
+#: src/video_out/video_out_xshm.c:245
+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"
+
+#: src/video_out/video_out_xshm.c:1170
+msgid "video_out_xshm: MIT shared memory extension not present on display.\n"
+msgstr ""
+"video_out_xshm: la extensión de memoria compartida del MIT (MIT Shared "
+"Memory) no está presente en la pantalla.\n"
+
+#: src/video_out/video_out_xshm.c:1254
+msgid "video_out_xshm: your video mode was not recognized, sorry :-(\n"
+msgstr "video_out_xshm: su modo de vídeoo no fué reconocido, lo siento :-(\n"
+
+#: src/video_out/video_out_xv.c:298
+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"
+
+#: src/video_out/video_out_xv.c:324
+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"
+
+#: src/video_out/video_out_xv.c:332
#, c-format
msgid "%s: XvShmCreateImage failed\n"
msgstr ""
+"video_out_xv: error de memoria compartida en shmget: %s\n"
+"video_out_xv: => no usando la extensión de memoria compartida MIT (MIT "
+"Shared Memory).\n"
+
+#: src/video_out/video_out_xv.c:364
+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"
+
+#: src/video_out/video_out_xv.c:1343
+msgid "video_out_xv: Xv extension not present.\n"
+msgstr "video_out_xv: la extensión Xv no está presente.\n"
+
+#: src/video_out/video_out_xv.c:1380
+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"
-#: src/video_out/video_out_xv.c:1221 src/video_out/video_out_xxmc.c:2396
+#: src/video_out/video_out_xv.c:1389
#, c-format
msgid ""
"%s: using Xv port %ld from adaptor %s for hardware colorspace conversion and "
"scaling.\n"
msgstr ""
+"video_out_xv: usando puerto Xv %ld del adaptador %s para conversión y "
+"escalado de espacio de color en hardware .\n"
+
+#: src/video_out/video_out_xv.c:1564
+msgid "video_out_xv: this adaptor supports the yv12 format.\n"
+msgstr "video_out_xv: éste adaptador soporta el formato yv12.\n"
-#: src/video_out/video_out_xvmc.c:1496
+#: src/video_out/video_out_xv.c:1569
+msgid "video_out_xv: this adaptor supports the yuy2 format.\n"
+msgstr "video_out_xv: éste adaptador soporta el formato yuy2.\n"
+
+#: src/video_out/video_out_xvmc.c:1593
msgid "xine video output plugin using the XvMC X video extension"
-msgstr ""
+msgstr "complemento de vídeo de xine usando extensión de vídeo X XvMC"
#: src/video_out/video_out_xvmc.c:1542
msgid "video_out_xvmc: XvMC extension not present.\n"
-msgstr ""
+msgstr "video_out_xvmc: extensión XvMC no presente.\n"
#: src/video_out/video_out_xvmc.c:1640
msgid ""
"video_out_xvmc: Xv extension is present but I couldn't find a usable yuv12 "
"port.\n"
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:1649
#, c-format
@@ -4642,38 +4925,113 @@ msgid ""
"video_out_xvmc: using Xv port %ld from adaptor %s\n"
" for hardware colorspace conversion and scaling\n"
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:1654
msgid " idct and motion compensation acceleration \n"
-msgstr ""
+msgstr " compensación de movimiento y aceleración idct \n"
#: src/video_out/video_out_xvmc.c:1656
msgid " motion compensation acceleration only\n"
-msgstr ""
+msgstr " sólo compensación de aceleración \n"
#: src/video_out/video_out_xvmc.c:1658
msgid " no XvMC support \n"
-msgstr ""
+msgstr " sin soporte XvMC \n"
#: src/video_out/video_out_xvmc.c:1659
#, c-format
msgid " With Overlay = %d; UnsignedIntra = %d.\n"
+msgstr " Con Overlay = %d; UnsignedIntra = %d.\n"
+
+#: src/video_out/video_out_xxmc.c:650
+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"
-#: src/video_out/video_out_xxmc.c:2606
-msgid "Make XvMC allocate more frames for better buffering."
+#: src/video_out/video_out_xxmc.c:660
+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"
+
+#: src/video_out/video_out_xxmc.c:668
+#, 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: error de memoria compartida en \"shmget\": %s\n"
+"video_out_xxmc: => no se usará la extensión \"MIT Shared Memory\" (memoria "
+"compartida MIT).\n"
-#: src/video_out/video_out_xxmc.c:2607
+#: src/video_out/video_out_xxmc.c:700
+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"
+
+#: src/video_out/video_out_xxmc.c:2388
+msgid "video_out_xxmc: Xv extension not present.\n"
+msgstr "video_out_xxmc: extensión Xv no presente.\n"
+
+#: src/video_out/video_out_xxmc.c:2425
+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"
+
+#: src/video_out/video_out_xxmc.c:2434
+#, c-format
+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"
+
+#: src/video_out/video_out_xxmc.c:2610
+msgid "video_out_xxmc: this adaptor supports the yv12 format.\n"
+msgstr "video_out_xxmc: éste adaptador soporta el formato yv12.\n"
+
+#: src/video_out/video_out_xxmc.c:2615
+msgid "video_out_xxmc: this adaptor supports the yuy2 format.\n"
+msgstr "video_out_xxmc: éste adaptador soporta el formato yuy2.\n"
+
+#: src/video_out/video_out_xxmc.c:2644
+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:2645
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 ""
+"Algunas implementaciones XvMC permiten más de 8 cuadros.\n"
+"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:2613
msgid "Unichrome cpu save"
-msgstr ""
+msgstr "Ahorro de cpu unichrome"
#: src/video_out/video_out_xxmc.c:2614
msgid ""
@@ -4681,44 +5039,84 @@ msgid ""
"Only for Linux kernel 2.6 series or 2.4 with multimedia patch.\n"
"Experimental.\n"
msgstr ""
+"Ahorra tiempo de CPU durmiendo mientras trabaja el decodificador.\n"
+"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:2620
msgid "Fix buggy NVIDIA XvMC subpicture colors"
-msgstr ""
+msgstr "Arreglar colores de subimagen en NVIDIA XvMC con errores"
#: src/video_out/video_out_xxmc.c:2621
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 ""
+"Hay un bug en la librería XvMC de NVIDIA que hace que el color \n"
+"rojo en el DEP aparezca como azul y viceversa.\n"
+"Esta opción proporciona un arreglo.\n"
#: src/video_out/video_out_xxmc.c:2626
msgid "Use bob as accelerated deinterlace method."
-msgstr ""
+msgstr "Use «bob» como método acelerado de desentrelazado."
#: src/video_out/video_out_xxmc.c:2627
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"
+"al doble de la frecuencia de cuadro.\n"
+
+#: src/video_out/video_out_xxmc.c:2671
+msgid "Don't use bob deinterlacing for progressive frames."
+msgstr "No usar desentrelazado «bob» para cuadros progresivos."
+
+#: src/video_out/video_out_xxmc.c:2672
+msgid ""
+"Progressive frames don't need deinterlacing, so disabling it on\n"
+"demand should result in a better picture.\n"
+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:2678
+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:2679
+msgid ""
+"Bob deinterlacing adds some noise to horizontal lines, so disabling it\n"
+"on demand should result in a better OSD picture.\n"
+msgstr ""
+"El desentrelazado «bob» añade algún ruido a las lineas horizontales,\n"
+"de manera que desactivarlo bajo demanda debería resultar en una\n"
+"mejor imagen VEP (visualización en pantalla, OSD)\n"
#: src/video_out/x11osd.c:276 src/video_out/xcbosd.c:270
msgid "x11osd: XShape extension not available. unscaled overlay disabled.\n"
msgstr ""
+"x11osd: extensión XShape no disponible. Superposición no escalada "
+"desactivada.\n"
#: src/video_out/x11osd.c:289 src/video_out/xcbosd.c:283
msgid "x11osd: error creating window. unscaled overlay disabled.\n"
msgstr ""
+"x11osd: error al crear ventana . Superposición no escalada desactivada.\n"
#: src/video_out/x11osd.c:297 src/video_out/x11osd.c:338
#: src/video_out/xcbosd.c:293
msgid "x11osd: error creating pixmap. unscaled overlay disabled.\n"
msgstr ""
+"x11osd: error al crear pixmap (mapa de píxeles). Superposición no escalada "
+"desactivada.\n"
#: src/video_out/x11osd.c:348 src/video_out/xcbosd.c:332
#, c-format
msgid "x11osd: unscaled overlay created (%s mode).\n"
-msgstr ""
+msgstr "x11osd: superposición no escalada creada (modo %s).\n"
#: src/xine-engine/alphablend.c:2146
msgid "disable exact alpha blending of overlays"
@@ -4741,16 +5139,16 @@ msgstr ""
#: src/xine-engine/audio_decoder.c:366
#, c-format
msgid "audio_decoder: no plugin available to handle '%s'\n"
-msgstr ""
+msgstr "audio_decoder: no hay disponible complemento para manejar '%s'\n"
#: src/xine-engine/audio_decoder.c:383
#, c-format
msgid "audio_decoder: error, unknown buffer type: %08x\n"
-msgstr ""
+msgstr "audio_decoder: error, tipo de tampón desconocido: %08x\n"
#: src/xine-engine/audio_decoder.c:485
msgid "number of audio buffers"
-msgstr ""
+msgstr "número de tampones de audio"
#: src/xine-engine/audio_decoder.c:486
msgid ""
@@ -4758,31 +5156,39 @@ msgid ""
"queue. Higher values mean smoother playback for unreliable inputs, but also "
"increased latency and memory consumption."
msgstr ""
+"El número de tampones de memoria de audio (cada uno tiene 8k) que xine usa "
+"en su propia cola. Valores más altos implican reproducción más suave de "
+"entradas poco fiables, pero también aumentan la latencia y el consumo de "
+"memoria."
#: src/xine-engine/audio_out.c:1078
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:1220
msgid "write to sound card failed. Was a USB device unplugged ?\n"
msgstr ""
+"la escritura a la tarjeta de sonido falló. Supondremos que el dispositivo se "
+"desconectó.\n"
#: src/xine-engine/audio_out.c:1373
msgid "8 bits not supported by driver, converting to 16 bits.\n"
-msgstr ""
+msgstr "8 bits no soportados por el driver, convirtiendo a 16 bits.\n"
#: src/xine-engine/audio_out.c:1381
msgid "mono not supported by driver, converting to stereo.\n"
-msgstr ""
+msgstr "mono no soportado por el driver, convirtiendo a estéreo.\n"
#: src/xine-engine/audio_out.c:1387
msgid "stereo not supported by driver, converting to mono.\n"
-msgstr ""
+msgstr "estéreo no soportado por el driver, convirtiendo a mono.\n"
#: src/xine-engine/audio_out.c:2041
msgid "method to sync audio and video"
-msgstr ""
+msgstr "método para sincronizar audio y vídeo"
#: src/xine-engine/audio_out.c:2042
msgid ""
@@ -4806,10 +5212,29 @@ msgid ""
"passthrough, where audio data is passed to an external decoder in digital "
"form."
msgstr ""
+"Cuando se reproduce audio y vídeo, hay al menos dos lrelojes concernidos: el "
+"reloj del sistema, con el cual se sincronizan los cuadros de vídeo, y el "
+"reloj en el hardware de sonido, que determina la velocidad de reproducción "
+"del sonido. Estos relojes nunca van a la misma velocidad, excepto en los "
+"raros casos en los que son físicamente idénticos. En general, los dos "
+"relojes derivarán después de algún tiempo, por lo que xine ofrece dos "
+"maneras de mantener sincronizados el audio y el vídeo:\n"
+"\n"
+"metronom feedback (realimentación metronómica)\n"
+"Este es el método estándar, que se aplica a contrarestar la deriva de vídeo "
+"tan pronto como la deriva de audio se ha acumulado por encima de un límite.\n"
+"\n"
+"resample (remuestreo)\n"
+"Para algún hardware de vídeo, que está limitado a una cadencia de cuadro "
+"fija (como DXR3 o las otras tarjetas decodificadoras) lo de arriba no "
+"funciona, porque el vídeo no puede derivar. Por tanto remuestreamos el flujo "
+"de audio para hacerlo más largo o corto y compensar el error de deriva de "
+"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:2070
msgid "enable resampling"
-msgstr ""
+msgstr "activar remuestreo (resampling)"
#: src/xine-engine/audio_out.c:2071
msgid ""
@@ -4818,10 +5243,14 @@ msgid ""
"you can select, whether resampling is enabled, disabled or used "
"automatically when necessary."
msgstr ""
+"Cuando la cadencia de muestreo del audio decodificado no se ajusta a las "
+"capacidades de su hardware de sonido, se requiere una adaptación denominada "
+"\"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:2078
msgid "always resample to this rate (0 to disable)"
-msgstr ""
+msgstr "siempre remuestrear a ésta cadencia (0 para desactivar)"
#: src/xine-engine/audio_out.c:2079
msgid ""
@@ -4829,10 +5258,13 @@ msgid ""
"hardware. By setting a value other than zero here, you can force the audio "
"stream to be resampled to the given rate."
msgstr ""
+"Algunos manejadores de audio no anuncian correctamente las capacidades del "
+"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:2088
msgid "offset for digital passthrough"
-msgstr ""
+msgstr "compensación para paso a través digital"
#: src/xine-engine/audio_out.c:2089
msgid ""
@@ -4840,10 +5272,14 @@ msgid ""
"you can enter a fixed offset here to compensate.\n"
"The unit of the value is one PTS tick, which is the 90000th part of a second."
msgstr ""
+"Si usa un decodificador externo envolvente y el audio está adelantado o "
+"retrasado respecto al vídeo, puede introducir aquí un desplazamiento fijo "
+"para compensar.\n"
+"Las unidades del valor es una marca PTS, que es 1/90000 segundo."
#: src/xine-engine/audio_out.c:2098
msgid "play audio even on slow/fast speeds"
-msgstr ""
+msgstr "reproduzca vídeo incluso a velocidades lentas/rápidas"
#: src/xine-engine/audio_out.c:2099
msgid ""
@@ -4852,101 +5288,117 @@ msgid ""
"pitch). If want to experiment preserving the pitch you may try the 'stretch' "
"audio post plugin instead."
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."
#: src/xine-engine/audio_out.c:2170
msgid "startup audio volume"
-msgstr ""
+msgstr "volumen de audio inicial"
#: src/xine-engine/audio_out.c:2171
msgid "The overall audio volume set at xine startup."
-msgstr ""
+msgstr "El volumen de sonido al arrancar xine."
#: src/xine-engine/audio_out.c:2174
msgid "restore volume level at startup"
-msgstr ""
+msgstr "restaurar el nivel del volumen al arrancar"
#: src/xine-engine/audio_out.c:2175
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:2205
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"
#: src/xine-engine/buffer.c:67
#, c-format
msgid "xine-lib: buffer.c: There has been a fatal error: TOO MANY FREE's\n"
msgstr ""
+"xine-lib: buffer.c: Ha ocurrido un error fatal: DEMASIADAS LIBERACIONES DE "
+"MEMORIA (FREE'S)\n"
#: src/xine-engine/configfile.c:925
#, 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:1030
#, 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:1031
msgid "configfile: WARNING: your configuration will not be saved\n"
-msgstr ""
+msgstr "configfile: AVISO: su configuración no será guardada\n"
#: src/xine-engine/configfile.c:1130
#, c-format
msgid "configfile: WARNING: writing configuration to %s failed\n"
-msgstr ""
+msgstr "configfile: AVISO: la escritura de la configuración a %s falló\n"
#: src/xine-engine/configfile.c:1131
#, 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:1132
#, c-format
msgid "configfile: WARNING: you should check the backup file %s\n"
-msgstr ""
+msgstr "configfile: AVISO: debería comprobar el fichero de respaldo %s\n"
#: src/xine-engine/configfile.c:1267
#, c-format
msgid "configfile: entry '%s' mustn't be modified from MRL\n"
-msgstr ""
+msgstr "configfile: la entrada '%s' no debería ser modificada desde MRL\n"
#: src/xine-engine/info_helper.c:230
msgid "info_helper: can't find out current locale character set\n"
msgstr ""
+"info_helper: no puedo encontrar el \"locale\" actual del juego de "
+"caracteres\n"
#: src/xine-engine/info_helper.c:244
#, c-format
msgid ""
"info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n"
msgstr ""
+"info_helper: conversión no soportada %s -> UTF-8, conversión no realizada\n"
#: src/xine-engine/input_cache.c:171
#, c-format
msgid ": open() function should never be called\n"
-msgstr ""
+msgstr ": la función open() no debiera ser nunca llamada\n"
#: src/xine-engine/input_cache.c:353
#, c-format
msgid ": input plugin not defined!\n"
-msgstr ""
+msgstr ": ¡complemento de entrada no definido!\n"
#: src/xine-engine/input_rip.c:140 src/xine-engine/input_rip.c:260
#, c-format
msgid "input_rip: reading of saved data failed: %s\n"
-msgstr ""
+msgstr "input_rip: falló la lectura de los datos guardados: %s\n"
#: src/xine-engine/input_rip.c:155
#, c-format
msgid "input_rip: reading by input plugin failed\n"
-msgstr ""
+msgstr "input_rip: falló la lectura por complemento de entrada\n"
#: src/xine-engine/input_rip.c:163 src/xine-engine/input_rip.c:292
#: src/xine-engine/input_rip.c:658
#, c-format
msgid "input_rip: error writing to file %<PRIdMAX> bytes: %s\n"
-msgstr ""
+msgstr "input_rip: error escribiendo al fichero %<PRIdMAX> bytes: %s\n"
#: src/xine-engine/input_rip.c:184
#, c-format
@@ -4956,22 +5408,22 @@ msgstr ""
#: src/xine-engine/input_rip.c:315 src/xine-engine/input_rip.c:420
#, c-format
msgid "input_rip: seeking failed\n"
-msgstr ""
+msgstr "input_rip: la búsqueda falló\n"
#: src/xine-engine/input_rip.c:372 src/xine-engine/input_rip.c:390
#, c-format
msgid "input_rip: seeking failed: %s\n"
-msgstr ""
+msgstr "input_rip: la búsqueda falló: %s\n"
#: src/xine-engine/input_rip.c:398
#, c-format
msgid "input_rip: %<PRIdMAX> bytes dropped\n"
-msgstr ""
+msgstr "input_rip: %<PRIdMAX> bytes desechados\n"
#: src/xine-engine/input_rip.c:563
#, c-format
msgid "input_rip: input plugin not defined!\n"
-msgstr ""
+msgstr "input_rip: ¡complemento de entrada no definido!\n"
#: src/xine-engine/input_rip.c:569
#, c-format
@@ -4979,85 +5431,99 @@ msgid ""
"input_rip: target directory wasn't specified, please fill out the option "
"'media.capture.save_dir'\n"
msgstr ""
+"input_rip: el directorio de destino no fué especificado, por favor rellene "
+"la opción 'media.capture.save_dir'\n"
#: src/xine-engine/input_rip.c:571
msgid ""
"The stream save feature is disabled until you set media.capture.save_dir in "
"the configuration."
msgstr ""
+"La característica de guardar flujo de datos está desactivada hasta que "
+"defina media.capture.save_dir en la configuración."
+# CER: ¿ripeado?
#: src/xine-engine/input_rip.c:578
#, c-format
msgid "input_rip: ripping/caching of this source is not permitted!\n"
-msgstr ""
+msgstr "input_rip: ¡ripeado/cacheado de esta fuente no está permitido!\n"
+# CER: el "." está mal colocado, pero al final daría eror.
#: src/xine-engine/input_rip.c:580
msgid ""
"xine is not allowed to save from this source. (possibly copyrighted "
"material?)"
msgstr ""
+"a xine no se le permite grabar desde esta fuente. (¿puede ser material con "
+"copyright?)"
#: src/xine-engine/input_rip.c:586
#, c-format
msgid "input_rip: file name not given!\n"
-msgstr ""
+msgstr "input_rip: file ¡el nombre no está dado!\n"
#: src/xine-engine/input_rip.c:628
#, c-format
msgid "input_rip: error opening file %s: %s\n"
-msgstr ""
+msgstr "input_rip: error abriendo fichero %s: %s\n"
#: src/xine-engine/io_helper.c:252
#, c-format
msgid "io_helper: waiting abandoned\n"
-msgstr ""
+msgstr "io_helper: espera abandonada\n"
#: src/xine-engine/io_helper.c:259
#, c-format
msgid "io_helper: waiting failed: %s\n"
-msgstr ""
+msgstr "io_helper: falló la espera: %s\n"
#: src/xine-engine/io_helper.c:314
msgid "failed to get status of socket"
-msgstr ""
+msgstr "falló la consecución de un socket"
#: src/xine-engine/io_helper.c:388
#, c-format
msgid "io_helper: Permission denied\n"
-msgstr ""
+msgstr "io_helper: Permiso denegado\n"
#: src/xine-engine/io_helper.c:392
#, c-format
msgid "io_helper: File not found\n"
-msgstr ""
+msgstr "io_helper: Fichero no encontrado\n"
#: src/xine-engine/io_helper.c:396
#, c-format
msgid "io_helper: Connection Refused\n"
-msgstr ""
+msgstr "io_helper: Conexión Rechazada\n"
#: src/xine-engine/load_plugins.c:215
#, c-format
msgid "map_decoder_list: no space for decoder, skipped.\n"
-msgstr ""
+msgstr "map_decoder_list: no hay espacio para el decodificador, omitido.\n"
#: src/xine-engine/load_plugins.c:330
#, c-format
msgid ""
"load_plugins: ignoring plugin %s, wrong iface version %d (should be %d)\n"
msgstr ""
+"load_plugins: ignorando complemento%s, versión \"iface\" equivocada%d "
+"(debería ser %d)\n"
#: src/xine-engine/load_plugins.c:387
#, c-format
msgid "priority for %s decoder"
-msgstr ""
+msgstr "prioridad para decodificador %s"
-#: src/xine-engine/load_plugins.c:398
+# CER: ¿rank?
+#: 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"
"A priority of 0 enables the decoder's default priority."
msgstr ""
+"La prioridad proporciona un rango o grado en caso que algún medio pueda ser "
+"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:426
#, c-format
@@ -5065,6 +5531,8 @@ msgid ""
"load_plugins: demuxer plugin %s does not provide a priority, xine-lib will "
"use the default priority.\n"
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:443
#, c-format
@@ -5072,6 +5540,8 @@ msgid ""
"load_plugins: input plugin %s does not provide a priority, xine-lib will use "
"the default priority.\n"
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:499
#, c-format
@@ -5087,26 +5557,31 @@ msgstr "load_plugins: encontrado complemento estático\n"
#, 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:512
#, 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:529
#, c-format
msgid "load_plugins: unknown plugin type %d in %s\n"
-msgstr ""
+msgstr "load_plugins: tipo de complemento desconocido %d en %s\n"
#: src/xine-engine/load_plugins.c:533
#, c-format
msgid "load_plugins: unknown statically linked plugin type %d\n"
msgstr ""
+"load_plugins: tipo de complemento estáticamente ligado desconocido %d\n"
-#: src/xine-engine/load_plugins.c:593
+# CER: ¿stat?
+#: src/xine-engine/load_plugins.c:590
#, c-format
msgid "load_plugins: unable to stat %s\n"
-msgstr ""
+msgstr "load_plugins: incapaz de obtener estado %s\n"
#: src/xine-engine/load_plugins.c:634
#, c-format
@@ -5114,6 +5589,8 @@ msgid ""
"load_plugins: cannot open plugin lib %s:\n"
"%s\n"
msgstr ""
+"load_plugins: no puedo abrir librería de complemento %s:\n"
+"%s\n"
#: src/xine-engine/load_plugins.c:649
#, c-format
@@ -5121,11 +5598,13 @@ msgid ""
"load_plugins: can't get plugin info from %s:\n"
"%s\n"
msgstr ""
+"load_plugins: no puedo conseguir información del complemento de %s:\n"
+"%s\n"
#: src/xine-engine/load_plugins.c:667
#, c-format
msgid "load_plugins: skipping unreadable plugin directory %s.\n"
-msgstr ""
+msgstr "load_plugins: omitiendo directorio de complementos ilegible %s.\n"
#: src/xine-engine/load_plugins.c:716
#, c-format
@@ -5133,37 +5612,36 @@ msgid ""
"load_plugins: cannot (stage 2) open plugin lib %s:\n"
"%s\n"
msgstr ""
+"load_plugins: no puedo (etapa 2) abrir librería de complementos %s:\n"
+"%s\n"
#: src/xine-engine/load_plugins.c:742
#, c-format
msgid "load_plugins: Yikes! %s doesn't contain plugin info.\n"
-msgstr ""
-
-#: src/xine-engine/load_plugins.c:1104 src/xine-engine/load_plugins.c:1113
-#, fuzzy, c-format
-msgid "Unable to create %s directory: %s\n"
-msgstr "Incapaz de crear el objeto de sonido directo."
+msgstr "load_plugins: ¡Ondiá! %s no contiene información del complemento.\n"
#: src/xine-engine/load_plugins.c:1345
#, c-format
msgid "load_plugins: unknown content detection strategy %d\n"
-msgstr ""
+msgstr "load_plugins: estrategia %d de detección de contenido desconocida\n"
#: src/xine-engine/load_plugins.c:1455
#, c-format
msgid "load_plugins: using demuxer '%s'\n"
-msgstr ""
+msgstr "load_plugins: usando desmultiplexor '%s'\n"
#: src/xine-engine/load_plugins.c:1766
#, c-format
msgid "load_plugins: failed to load audio output plugin <%s>\n"
-msgstr ""
+msgstr "load_plugins: fallé al cargar complemento de salida de audio <%s>\n"
#: src/xine-engine/load_plugins.c:1769
msgid ""
"load_plugins: audio output auto-probing didn't find any usable audio "
"driver.\n"
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:2073
#, c-format
@@ -5171,49 +5649,52 @@ msgid ""
"load_plugins: cannot unload plugin lib %s:\n"
"%s\n"
msgstr ""
+"load_plugins: no puedo descargar librería de complementos %s:\n"
+"%s\n"
#: src/xine-engine/osd.c:747
#, c-format
msgid "font '%s-%d' already loaded, weird.\n"
-msgstr ""
+msgstr "la tipografía '%s-%d' ya estaba cargada, raro.\n"
#: src/xine-engine/osd.c:759
#, c-format
msgid "font '%s' loading failed (%d < %d)\n"
-msgstr ""
+msgstr "la carga de la tipografía '%s' falló (%d < %d)\n"
#: src/xine-engine/osd.c:769
#, c-format
msgid "wrong version for font '%s'. expected %d found %d.\n"
msgstr ""
+"versión incorrecta para la tipografía '%s'. Se esperaba %d se encontró %d.\n"
+
+#: src/xine-engine/osd.c:824
+msgid "osd: cannot initialize ft2 library\n"
+msgstr "osd: no puedo inicializar librería ft2\n"
#: src/xine-engine/osd.c:856
#, c-format
msgid "osd: error matching font %s with FontConfig"
-msgstr ""
+msgstr "osd: error encajando tipografía %s con FontConfig"
#: src/xine-engine/osd.c:870
#, c-format
msgid "osd: error loading font %s with FontConfig"
-msgstr ""
+msgstr "osd: error cargando tipografía %s con FontConfig"
#: src/xine-engine/osd.c:874
#, c-format
msgid "osd: error looking up font %s with FontConfig"
-msgstr ""
+msgstr "osd: error buscando tipografía %s con FontConfig"
#: src/xine-engine/osd.c:914
#, c-format
-msgid "osd: error loading font %s with in XDG data directories.\n"
-msgstr ""
-
-#: src/xine-engine/osd.c:923
-msgid "osd: cannot initialize ft2 library\n"
-msgstr ""
+msgid "osd: error loading font %s with ft2\n"
+msgstr "osd: error cargando tipografía %s con ft2\n"
#: src/xine-engine/osd.c:945
msgid "osd: error setting font size (no scalable font?)\n"
-msgstr ""
+msgstr "osd: error poniendo tamaño de (¿tipografía no escalable?)\n"
#: src/xine-engine/osd.c:1061
#, c-format
@@ -5221,40 +5702,42 @@ msgid ""
"osd: unknown sequence starting with byte 0x%02X in encoding \"%s\", "
"skipping\n"
msgstr ""
+"osd: secuencia desconocida comenzando con byte 0x%02X en codificación \"%s"
+"\", saltando\n"
#: src/xine-engine/osd.c:1117
msgid "osd: can't find out current locale character set\n"
-msgstr ""
+msgstr "osd: no puedo encontrar juego de caracteres actual del \"locale\"\n"
#: src/xine-engine/osd.c:1127
#, c-format
msgid "osd: unsupported conversion %s -> %s, no conversion performed\n"
-msgstr ""
+msgstr "osd: conversión no soportada %s -> %s, conversión no realizada\n"
#: src/xine-engine/osd.c:1182 src/xine-engine/osd.c:1350
msgid "osd: font isn't defined\n"
-msgstr ""
+msgstr "osd: la tipografía no está definida\n"
#: src/xine-engine/osd.c:1221
msgid "osd: error loading glyph\n"
-msgstr ""
+msgstr "osd: error cargando glifo\n"
#: src/xine-engine/osd.c:1227
msgid "osd: error in rendering glyph\n"
-msgstr ""
+msgstr "osd: error en renderizado de glifo\n"
#: src/xine-engine/osd.c:1387
#, c-format
msgid "osd: error loading glyph %i\n"
-msgstr ""
+msgstr "osd: error cargando glifo %i\n"
#: src/xine-engine/osd.c:1394
msgid "osd: error in rendering\n"
-msgstr ""
+msgstr "osd: error en renderizado\n"
#: src/xine-engine/osd.c:1660
msgid "palette (foreground-border-background) to use for subtitles and OSD"
-msgstr ""
+msgstr "paleta (frente-borde-fondo) a usar para subtítulos y VEP (OSD)"
#: src/xine-engine/osd.c:1661
msgid ""
@@ -5262,20 +5745,23 @@ msgid ""
"specify any colouring themselves. The palettes are listed in the form: "
"foreground-border-background."
msgstr ""
+"La paleta para la visualización en pantalla y algunos formatos de subtítulos "
+"que no especifican ningún coloreado ellos mismos. Las paletas se listan en "
+"la forma:frente-borde-fondo."
#: src/xine-engine/video_decoder.c:390
#, c-format
msgid "video_decoder: no plugin available to handle '%s'\n"
-msgstr ""
+msgstr "video_decoder: no hay complemento disponible para manejar '%s'\n"
#: src/xine-engine/video_decoder.c:469
#, c-format
msgid "video_decoder: error, unknown buffer type: %08x\n"
-msgstr ""
+msgstr "video_decoder: error, tipo de tampón desconocido: %08x\n"
#: src/xine-engine/video_decoder.c:505
msgid "number of video buffers"
-msgstr ""
+msgstr "número de tampones de vídeo"
#: src/xine-engine/video_decoder.c:506
msgid ""
@@ -5283,11 +5769,15 @@ msgid ""
"queue. Higher values mean smoother playback for unreliable inputs, but also "
"increased latency and memory consumption."
msgstr ""
+"El número de tampones de memoria de vídeo (cada uno tiene 8k) que xine usa "
+"en su propia cola. Valores más altos implican reproducción más suave de "
+"entradas poco fiables, pero también aumentan la latencia y el consumo de "
+"memoria."
#: src/xine-engine/video_out.c:671
#, c-format
msgid "%d frames delivered, %d frames skipped, %d frames discarded\n"
-msgstr "%d marcos llegados, %d frames saltados, %d frames descartados\n"
+msgstr "%d marcos entregados, %d cuadros omitidos, %d cuadros descartados\n"
#: src/xine-engine/video_out.c:844
#, c-format
@@ -5295,36 +5785,44 @@ msgid ""
"video_out: throwing away image with pts %<PRId64> because it's too old "
"(diff : %<PRId64>).\n"
msgstr ""
+"video_out: tirando la imagen con pts %<PRId64> porque es demasiado vieja "
+"(diff : %<PRId64>).\n"
#: src/xine-engine/video_out.c:1863
msgid "default number of video frames"
-msgstr ""
+msgstr "número por defecto de marcos de vídeo"
#: src/xine-engine/video_out.c:1864
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 ""
+"El número por omisión de cuadros de vídeo a pedir del manejador de vídeo de "
+"salida. Algunos manejadores invalidará este ajuste con sus propios valores."
#: src/xine-engine/video_out.c:1921
msgid "percentage of skipped frames to tolerate"
-msgstr ""
+msgstr "porcentaje de cuadros omitidos a tolerar"
#: src/xine-engine/video_out.c:1922
msgid ""
"When more than this percentage of frames are not shown, because they were "
"not decoded in time, xine sends a notification."
msgstr ""
+"Cuando más de este porcentaje de cuadros no sean mostrados, porque no fueron "
+"decodificados a tiempo, xine envía una notificación."
#: src/xine-engine/video_out.c:1927
msgid "percentage of discarded frames to tolerate"
-msgstr ""
+msgstr "porcentaje de cuadros descartados a tolerar"
#: src/xine-engine/video_out.c:1928
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 ""
+"Cuando más de este porcentaje de cuadros no sean mostrados, porque no fueron "
+"programados para su visualización a tiempo, xine envía una notificación."
#: src/xine-engine/video_out.c:1965
msgid "video_out: sorry, this should not happen. please restart xine.\n"
@@ -5333,7 +5831,7 @@ msgstr ""
#: src/xine-engine/vo_scale.c:389
msgid "horizontal image position in the output window"
-msgstr ""
+msgstr "posición horizontal de la imagen en la ventana de salida"
#: src/xine-engine/vo_scale.c:390
msgid ""
@@ -5342,10 +5840,15 @@ msgid ""
"The position is given as a percentage, so a value of 50 means \"in the middle"
"\", while 0 means \"at the very left\" and 100 \"at the very right\"."
msgstr ""
+"Si el tamaño horizontal de ventana de vídeo es mayor que el tamaño real de "
+"la imagen a mostrar, puede ajustar la posición donde se sitúe la imagen.\n"
+"La posición se da como un porcentaje, de modo que un valor de 50 significa "
+"\"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:397
msgid "vertical image position in the output window"
-msgstr ""
+msgstr "posición vertical de la imagen en la ventana de salida"
#: src/xine-engine/vo_scale.c:398
msgid ""
@@ -5354,10 +5857,15 @@ msgid ""
"The position is given as a percentage, so a value of 50 means \"in the middle"
"\", while 0 means \"at the top\" and 100 \"at the bottom\"."
msgstr ""
+"Si el tamaño vertical de la ventana es mayor que la imagen real a mostrar, "
+"puede ajustar la posición vertical en la que se situará la imagen.\n"
+"La posición se da como un porcentaje, de modo que un valor de 50 significa "
+"\"en el centro\", mientras que 0 significa\"arriba a tope\" y 100 \"abajo al "
+"fondo\"."
#: src/xine-engine/vo_scale.c:405
msgid "disable all video scaling"
-msgstr ""
+msgstr "desactive todo escalado de vídeo"
#: src/xine-engine/vo_scale.c:406
msgid ""
@@ -5369,25 +5877,33 @@ msgid ""
"video output drivers like XShm, where the image scaling is not hardware "
"accelerated, this can dramatically reduce CPU usage."
msgstr ""
-
-#: src/xine-engine/xine.c:771 src/xine-engine/xine.c:878
-#: src/xine-engine/xine.c:917 src/xine-engine/xine.c:953
-#: src/xine-engine/xine.c:965 src/xine-engine/xine.c:978
-#: src/xine-engine/xine.c:991 src/xine-engine/xine.c:1004
-#: src/xine-engine/xine.c:1030 src/xine-engine/xine.c:1055
-#: src/xine-engine/xine.c:1090
+"Si desea que la imagen se muestre siempre en su resolución original, puede "
+"desactivar todo escalado de la imagen aquí.\n"
+"Esto por supuesto significa que la imagen ya no se adaptará al tamaño de la "
+"ventana de vídeo y que vídeos con una razón de aspecto de píxel distinta de "
+"1:1, como DVDs anamórficos, se mostrarán distorsionados. Pero por otro lado, "
+"con algunos drivers de salida de vídeo como XShm, donde el escalado de la "
+"imagen no está acelerado en hardware, esto puede reducir drásticamente el "
+"uso de cpu."
+
+#: src/xine-engine/xine.c:790 src/xine-engine/xine.c:897
+#: src/xine-engine/xine.c:936 src/xine-engine/xine.c:972
+#: src/xine-engine/xine.c:984 src/xine-engine/xine.c:997
+#: src/xine-engine/xine.c:1010 src/xine-engine/xine.c:1023
+#: src/xine-engine/xine.c:1049 src/xine-engine/xine.c:1074
+#: src/xine-engine/xine.c:1109
msgid "xine: error while parsing mrl\n"
-msgstr ""
+msgstr "xine: error mientras se interpretaba mrl\n"
#: src/xine-engine/xine.c:807
#, c-format
msgid "xine: found input plugin : %s\n"
-msgstr ""
+msgstr "xine: encontrado complemento de entrada : %s\n"
#: src/xine-engine/xine.c:825
#, c-format
msgid "xine: input plugin cannot open MRL [%s]\n"
-msgstr ""
+msgstr "xine: el complemento de entrada no puede abrir el MRL [%s]\n"
#: src/xine-engine/xine.c:841
#, c-format
@@ -5397,56 +5913,59 @@ msgstr "xine: no se puede encontrar el complemento de entrada para MRL [%s]\n"
#: src/xine-engine/xine.c:867
#, c-format
msgid "xine: specified demuxer %s failed to start\n"
-msgstr "xine_play: fallo al iniciar el demultiplexor %s especificado\n"
+msgstr "xine: fallo al iniciar el demultiplexor %s especificado\n"
-#: src/xine-engine/xine.c:903
+# cer: ¿join rip?
+#: src/xine-engine/xine.c:922
#, c-format
msgid "xine: join rip input plugin\n"
-msgstr ""
+msgstr "xine: complemento de entrada join rip \n"
#: src/xine-engine/xine.c:910
msgid "xine: error opening rip input plugin instance\n"
-msgstr ""
+msgstr "xine: error al abrir instancia de complemento de entrada rip\n"
#: src/xine-engine/xine.c:941
#, 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:970
msgid "ignoring video\n"
-msgstr ""
+msgstr "ignorando vídeo\n"
#: src/xine-engine/xine.c:983
msgid "ignoring audio\n"
-msgstr ""
+msgstr "ignorando audio\n"
#: src/xine-engine/xine.c:996
msgid "ignoring subpicture\n"
-msgstr ""
+msgstr "ignorando subimagen\n"
#: src/xine-engine/xine.c:1009
msgid "input cache plugin disabled\n"
-msgstr ""
+msgstr "caché del complemento de entrada desactivado\n"
#: src/xine-engine/xine.c:1080
#, c-format
msgid "subtitle mrl opened '%s'\n"
-msgstr ""
+msgstr "abierto mrl de subtítulos '%s'\n"
#: src/xine-engine/xine.c:1084
msgid "xine: error opening subtitle mrl\n"
-msgstr ""
+msgstr "xine: error abriendo mrl de subtítulos\n"
#: src/xine-engine/xine.c:1116
#, c-format
msgid "xine: error while parsing MRL\n"
-msgstr ""
+msgstr "xine: error al interpretar MRL\n"
#: src/xine-engine/xine.c:1123
#, c-format
msgid "xine: changing option '%s' from MRL isn't permitted\n"
-msgstr ""
+msgstr "xine: cambiar la ocpión '%s' del MRL no está permitido\n"
#: src/xine-engine/xine.c:1143
#, c-format
@@ -5477,18 +5996,22 @@ msgstr "xine_play: fallo al iniciar el demultiplexor\n"
#, 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:1597
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:1626
msgid "xine: locale not supported by C library\n"
-msgstr ""
+msgstr "xine: \"locale\" no soportada por la librería de C\n"
#: src/xine-engine/xine.c:1635
msgid "media format detection strategy"
-msgstr ""
+msgstr "estrategia de detecciónde formato"
#: src/xine-engine/xine.c:1636
msgid ""
@@ -5507,10 +6030,26 @@ msgid ""
"extension\n"
"Detect by file name extension only.\n"
msgstr ""
+"xine ofrece varios métodos para detectar el formato de medios introducidos "
+"para reproducirlos. Los valores individuales son:\n"
+"\n"
+"default\n"
+"Primero prueba a detectar por el contenido, y después por la extensión del "
+"nombre del fichero.\n"
+"\n"
+"reverse\n"
+"Primero prueba a detectar por la extensión del nombre del fichero, y después "
+"por el contenido.\n"
+"\n"
+"content\n"
+"Detectar sólo por el contenido.\n"
+"\n"
+"extension\n"
+"Detectar sólo por la extensión del nombre del fichero.\n"
#: src/xine-engine/xine.c:1654
msgid "directory for saving streams"
-msgstr ""
+msgstr "directorio para guardar flujos de bits"
#: src/xine-engine/xine.c:1655
msgid ""
@@ -5521,10 +6060,16 @@ msgid ""
"you should be careful that the directory you specify is robust against any "
"content in any file."
msgstr ""
+"Cuando se usa la función de grabar flujo, los ficheros se escribirán sólo a "
+"éste directorio.\n"
+"Este ajuste es crítico para la seguridad, porque cuando se cambia a un "
+"directorio diferente, xine puede usarse para llenar ficheros con contenido "
+"arbitrario. Así que debiera ser cuidadoso que el directorio especificado sea "
+"robusto contra cualquier contenido en cualquier fichero."
#: src/xine-engine/xine.c:1666
msgid "allow implicit changes to the configuration (e.g. by MRL)"
-msgstr ""
+msgstr "permitir cambios implícitos a la configuración (p.e. por MRL)"
#: src/xine-engine/xine.c:1667
msgid ""
@@ -5535,10 +6080,17 @@ msgid ""
"from untrusted remote sources. If you allow them to arbitrarily change your "
"configuration, you might end with a totally messed up xine."
msgstr ""
+"Si se activa, usted permite a xine cabiar su configuración sin acciones "
+"explícitas por su parte. Por ejemplo cambios de configuración demandados por "
+"MRLs o embebidos en la lista de reproducción serán realizados.\n"
+"Este ajuste es crítico para la seguridad, porque xine puede recibir MRLs o "
+"listas de reproducción de sitios remotos no confiables. Si les permite "
+"arbitrariamente cambiar su configuración, usted podría acabar con un xine "
+"totalmente enredado."
#: src/xine-engine/xine.c:1681
msgid "Timeout for network stream reading (in seconds)"
-msgstr ""
+msgstr "Temporización para lectura de flujos de bits desde red (en segundos)"
#: src/xine-engine/xine.c:1682
msgid ""
@@ -5546,6 +6098,10 @@ msgid ""
"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 ""
+"Especifica la temporización cuando se leen flujos de datos desde la red, en "
+"segundos. Valore demasiado bajos pueden detener la transmisión cuando la "
+"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:2034
msgid "messages"
@@ -5561,64 +6117,59 @@ msgstr "traza"
#: src/xine-engine/xine_interface.c:958
msgid "Warning:"
-msgstr ""
+msgstr "Aviso:"
#: src/xine-engine/xine_interface.c:959
-#, fuzzy
msgid "Unknown host:"
-msgstr "error desconocido"
+msgstr "host desconocido:"
#: src/xine-engine/xine_interface.c:960
-#, fuzzy
msgid "Unknown device:"
-msgstr "Tipo de evento desconocido: "
+msgstr "Dispositivo desconocido:"
#: src/xine-engine/xine_interface.c:961
msgid "Network unreachable"
-msgstr ""
+msgstr "Red no alcanzable"
#: src/xine-engine/xine_interface.c:962
msgid "Connection refused:"
-msgstr ""
+msgstr "Conexión rechazada:"
#: src/xine-engine/xine_interface.c:963
-#, fuzzy
msgid "File not found:"
-msgstr "input_file: Fichero no encontrado: >%s<\n"
+msgstr "Fichero no encontrado:"
#: src/xine-engine/xine_interface.c:964
msgid "Read error from:"
-msgstr ""
+msgstr "Error de lectura desde:"
#: src/xine-engine/xine_interface.c:965
msgid "Error loading library:"
-msgstr ""
+msgstr "Error de carga de librería:"
#: src/xine-engine/xine_interface.c:966
-#, fuzzy
msgid "Encrypted media stream detected"
-msgstr "ogg: detectado stream de audio vorbis\n"
+msgstr "Detectado flujo de bits de medios encriptado"
#: src/xine-engine/xine_interface.c:967
msgid "Security message:"
-msgstr ""
+msgstr "Mensaje de seguridad:"
#: src/xine-engine/xine_interface.c:968
-#, fuzzy
msgid "Audio device unavailable"
-msgstr "nombre del dispositivo de audio OSS"
+msgstr "Dispositivo de audio no disponible"
#: src/xine-engine/xine_interface.c:969
msgid "Permission error"
-msgstr ""
+msgstr "Error de permisos"
#: src/xine-engine/xine_interface.c:970
msgid "File is empty:"
-msgstr ""
+msgstr "El fichero está vacío:"
#: src/xine-utils/memcpy.c:479
msgid "memcopy method used by xine"
-msgstr ""
+msgstr "método \"memcopy\" usado por xine"
#: src/xine-utils/memcpy.c:480
msgid ""
@@ -5626,45 +6177,11 @@ msgid ""
"on todays computers. Therefore xine provides various tuned methods to do "
"this copying. Usually, the best method is detected automatically."
msgstr ""
+"El copiado de grandes bloques de memoria es una de las operaciones más "
+"costosas en las computadoras actuales. Por tanto xine provee varios metodos "
+"ajustados para hacer este copiado. Usualmente, el método mejor se detecta "
+"automáticamente."
#: src/xine-utils/memcpy.c:507
msgid "Benchmarking memcpy methods (smaller is better):\n"
-msgstr ""
-
-#, fuzzy
-#~ msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n"
-#~ msgstr "video_out_fb: Lo sentimos, su modo de vídeo no fue reconocido .\n"
-
-#~ msgid "CDDB cache directory"
-#~ msgstr "directorio caché del CDDB"
-
-#~ 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 ""
-#~ "Las respuestas del servidor CDDB serán almacenadas temporalmente en este "
-#~ "directorio.\n"
-#~ "Esta configuración es crítica para su seguridad, porque nombres sin "
-#~ "control serán creados en este directorio. Asegúrese de poner un "
-#~ "directorio dedicado que no se use para ninguna otra cosa que el cacheado "
-#~ "del CDDB."
-
-#~ msgid "path to the title key cache"
-#~ msgstr "camino al caché de claves de títulos"
-
-#~ 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 ""
-#~ "Puesto que rompler la protección de copia de DVDs crifrados puede "
-#~ "consumir bastante tiempo, libdvdcss almacenará las claves rotas en éste "
-#~ "directorio.\n"
-#~ "Esta configuración es de seguridad crítica, porque en este directorio se "
-#~ "crearán ficheros con nombres incontrolables. Asegúrse de usar un "
-#~ "directorio dedicado que no se use para otra cosa excepto cacheado de "
-#~ "claves de DVDs."
+msgstr "Evaluando métodos \"memcpy\" (menor es mejor):\n"
diff --git a/src/input/vcd/libcdio/_cdio_linux.c b/src/input/vcd/libcdio/_cdio_linux.c
new file mode 100644
index 000000000..acc04a839
--- /dev/null
+++ b/src/input/vcd/libcdio/_cdio_linux.c
@@ -0,0 +1,1198 @@
+/*
+ $Id: _cdio_linux.c,v 1.4 2006/09/26 22:18:44 dgp85 Exp $
+
+ Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
+ Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+/* This file contains Linux-specific code and implements low-level
+ control of the CD drive.
+*/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.4 2006/09/26 22:18:44 dgp85 Exp $";
+
+#include <string.h>
+
+#include <cdio/sector.h>
+#include <cdio/util.h>
+#include <cdio/types.h>
+#include <cdio/scsi_mmc.h>
+#include <cdio/cdtext.h>
+#include "cdtext_private.h"
+#include "cdio_assert.h"
+#include "cdio_private.h"
+
+#ifdef HAVE_LINUX_CDROM
+
+#if defined(HAVE_LINUX_VERSION_H)
+# include <linux/version.h>
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,16)
+# define __CDIO_LINUXCD_BUILD
+# else
+# error "You need a kernel greater than 2.2.16 to have CDROM support"
+# endif
+#else
+# error "You need <linux/version.h> to have CDROM support"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <mntent.h>
+#include <limits.h>
+
+#include <linux/cdrom.h>
+#include <scsi/scsi.h>
+#include <scsi/sg.h>
+#include <scsi/scsi_ioctl.h>
+#include <sys/mount.h>
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+
+typedef enum {
+ _AM_NONE,
+ _AM_IOCTL,
+ _AM_READ_CD,
+ _AM_READ_10
+} access_mode_t;
+
+typedef struct {
+ /* Things common to all drivers like this.
+ This must be first. */
+ generic_img_private_t gen;
+
+ access_mode_t access_mode;
+
+ /* Some of the more OS specific things. */
+ /* Entry info for each track, add 1 for leadout. */
+ struct cdrom_tocentry tocent[CDIO_CD_MAX_TRACKS+1];
+
+ struct cdrom_tochdr tochdr;
+
+} _img_private_t;
+
+/* Some ioctl() errno values which occur when the tray is empty */
+#define ERRNO_TRAYEMPTY(errno) \
+ ((errno == EIO) || (errno == ENOENT) || (errno == EINVAL))
+
+/**** prototypes for static functions ****/
+static bool is_cdrom_linux(const char *drive, char *mnttype);
+static bool read_toc_linux (void *p_user_data);
+static int run_scsi_cmd_linux( const void *p_user_data,
+ unsigned int i_timeout,
+ unsigned int i_cdb,
+ const scsi_mmc_cdb_t *p_cdb,
+ scsi_mmc_direction_t e_direction,
+ unsigned int i_buf,
+ /*in/out*/ void *p_buf );
+static access_mode_t
+
+str_to_access_mode_linux(const char *psz_access_mode)
+{
+ const access_mode_t default_access_mode = _AM_IOCTL;
+
+ if (NULL==psz_access_mode) return default_access_mode;
+
+ if (!strcmp(psz_access_mode, "IOCTL"))
+ return _AM_IOCTL;
+ else if (!strcmp(psz_access_mode, "READ_CD"))
+ return _AM_READ_CD;
+ else if (!strcmp(psz_access_mode, "READ_10"))
+ return _AM_READ_10;
+ else {
+ cdio_warn ("unknown access type: %s. Default IOCTL used.",
+ psz_access_mode);
+ return default_access_mode;
+ }
+}
+
+static char *
+check_mounts_linux(const char *mtab)
+{
+ FILE *mntfp;
+ struct mntent *mntent;
+
+ mntfp = setmntent(mtab, "r");
+ if ( mntfp != NULL ) {
+ char *tmp;
+ char *mnt_type;
+ char *mnt_dev;
+
+ while ( (mntent=getmntent(mntfp)) != NULL ) {
+ mnt_type = malloc(strlen(mntent->mnt_type) + 1);
+ if (mnt_type == NULL)
+ continue; /* maybe you'll get lucky next time. */
+
+ mnt_dev = malloc(strlen(mntent->mnt_fsname) + 1);
+ if (mnt_dev == NULL) {
+ free(mnt_type);
+ continue;
+ }
+
+ strcpy(mnt_type, mntent->mnt_type);
+ strcpy(mnt_dev, mntent->mnt_fsname);
+
+ /* Handle "supermount" filesystem mounts */
+ if ( strcmp(mnt_type, "supermount") == 0 ) {
+ tmp = strstr(mntent->mnt_opts, "fs=");
+ if ( tmp ) {
+ free(mnt_type);
+ mnt_type = strdup(tmp + strlen("fs="));
+ if ( mnt_type ) {
+ tmp = strchr(mnt_type, ',');
+ if ( tmp ) {
+ *tmp = '\0';
+ }
+ }
+ }
+ tmp = strstr(mntent->mnt_opts, "dev=");
+ if ( tmp ) {
+ free(mnt_dev);
+ mnt_dev = strdup(tmp + strlen("dev="));
+ if ( mnt_dev ) {
+ tmp = strchr(mnt_dev, ',');
+ if ( tmp ) {
+ *tmp = '\0';
+ }
+ }
+ }
+ }
+ if ( strcmp(mnt_type, "iso9660") == 0 ) {
+ if (is_cdrom_linux(mnt_dev, mnt_type) > 0) {
+ free(mnt_type);
+ endmntent(mntfp);
+ return mnt_dev;
+ }
+ }
+ free(mnt_dev);
+ free(mnt_type);
+ }
+ endmntent(mntfp);
+ }
+ return NULL;
+}
+
+/*!
+ Return the value associated with the key "arg".
+*/
+static const char *
+get_arg_linux (void *env, const char key[])
+{
+ _img_private_t *_obj = env;
+
+ if (!strcmp (key, "source")) {
+ return _obj->gen.source_name;
+ } else if (!strcmp (key, "access-mode")) {
+ switch (_obj->access_mode) {
+ case _AM_IOCTL:
+ return "ioctl";
+ case _AM_READ_CD:
+ return "READ_CD";
+ case _AM_READ_10:
+ return "READ_10";
+ case _AM_NONE:
+ return "no access method";
+ }
+ }
+ return NULL;
+}
+
+#undef USE_LINUX_CAP
+#ifdef USE_LINUX_CAP
+/*!
+ Return the the kind of drive capabilities of device.
+
+ Note: string is malloc'd so caller should free() then returned
+ string when done with it.
+
+ */
+static void
+get_drive_cap_linux (const void *p_user_data,
+ /*out*/ cdio_drive_read_cap_t *p_read_cap,
+ /*out*/ cdio_drive_write_cap_t *p_write_cap,
+ /*out*/ cdio_drive_misc_cap_t *p_misc_cap)
+{
+ const _img_private_t *p_env = p_user_data;
+ int32_t i_drivetype;
+
+ i_drivetype = ioctl (p_env->gen.fd, CDROM_GET_CAPABILITY, CDSL_CURRENT);
+
+ if (i_drivetype < 0) {
+ *p_read_cap = CDIO_DRIVE_CAP_ERROR;
+ *p_write_cap = CDIO_DRIVE_CAP_ERROR;
+ *p_misc_cap = CDIO_DRIVE_CAP_ERROR;
+ return;
+ }
+
+ *p_read_cap = 0;
+ *p_write_cap = 0;
+ *p_misc_cap = 0;
+
+ /* Reader */
+ if (i_drivetype & CDC_PLAY_AUDIO)
+ *p_read_cap |= CDIO_DRIVE_CAP_READ_AUDIO;
+ if (i_drivetype & CDC_CD_R)
+ *p_read_cap |= CDIO_DRIVE_CAP_READ_CD_R;
+ if (i_drivetype & CDC_CD_RW)
+ *p_read_cap |= CDIO_DRIVE_CAP_READ_CD_RW;
+ if (i_drivetype & CDC_DVD)
+ *p_read_cap |= CDIO_DRIVE_CAP_READ_DVD_ROM;
+
+ /* Writer */
+ if (i_drivetype & CDC_CD_RW)
+ *p_read_cap |= CDIO_DRIVE_CAP_WRITE_CD_RW;
+ if (i_drivetype & CDC_DVD_R)
+ *p_read_cap |= CDIO_DRIVE_CAP_WRITE_DVD_R;
+ if (i_drivetype & CDC_DVD_RAM)
+ *p_read_cap |= CDIO_DRIVE_CAP_WRITE_DVD_RAM;
+
+ /* Misc */
+ if (i_drivetype & CDC_CLOSE_TRAY)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
+ if (i_drivetype & CDC_OPEN_TRAY)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_EJECT;
+ if (i_drivetype & CDC_LOCK)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_LOCK;
+ if (i_drivetype & CDC_SELECT_SPEED)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_SELECT_SPEED;
+ if (i_drivetype & CDC_SELECT_DISC)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_SELECT_DISC;
+ if (i_drivetype & CDC_MULTI_SESSION)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_MULTI_SESSION;
+ if (i_drivetype & CDC_MEDIA_CHANGED)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED;
+ if (i_drivetype & CDC_RESET)
+ *p_misc_cap |= CDIO_DRIVE_CAP_MISC_RESET;
+}
+#endif
+
+/*!
+ Return the media catalog number MCN.
+
+ Note: string is malloc'd so caller should free() then returned
+ string when done with it.
+
+ */
+static char *
+get_mcn_linux (const void *p_user_data) {
+
+ struct cdrom_mcn mcn;
+ const _img_private_t *p_env = p_user_data;
+ memset(&mcn, 0, sizeof(mcn));
+ if (ioctl(p_env->gen.fd, CDROM_GET_MCN, &mcn) != 0)
+ return NULL;
+ return strdup(mcn.medium_catalog_number);
+}
+
+/*!
+ Get format of track.
+*/
+static track_format_t
+get_track_format_linux(void *p_user_data, track_t i_track)
+{
+ _img_private_t *p_env = p_user_data;
+
+ if ( !p_env ) return TRACK_FORMAT_ERROR;
+
+ if (!p_env->gen.toc_init) read_toc_linux (p_user_data) ;
+
+ if (i_track > (p_env->gen.i_tracks+p_env->gen.i_first_track)
+ || i_track < p_env->gen.i_first_track)
+ return TRACK_FORMAT_ERROR;
+
+ i_track -= p_env->gen.i_first_track;
+
+ /* This is pretty much copied from the "badly broken" cdrom_count_tracks
+ in linux/cdrom.c.
+ */
+ if (p_env->tocent[i_track].cdte_ctrl & CDIO_CDROM_DATA_TRACK) {
+ if (p_env->tocent[i_track].cdte_format == CDIO_CDROM_CDI_TRACK)
+ return TRACK_FORMAT_CDI;
+ else if (p_env->tocent[i_track].cdte_format == CDIO_CDROM_XA_TRACK)
+ return TRACK_FORMAT_XA;
+ else
+ return TRACK_FORMAT_DATA;
+ } else
+ return TRACK_FORMAT_AUDIO;
+
+}
+
+/*!
+ Return true if we have XA data (green, mode2 form1) or
+ XA data (green, mode2 form2). That is track begins:
+ sync - header - subheader
+ 12 4 - 8
+
+ FIXME: there's gotta be a better design for this and get_track_format?
+*/
+static bool
+get_track_green_linux(void *p_user_data, track_t i_track)
+{
+ _img_private_t *p_env = p_user_data;
+
+ if (!p_env->gen.toc_init) read_toc_linux (p_user_data) ;
+
+ if (i_track >= (p_env->gen.i_tracks+p_env->gen.i_first_track)
+ || i_track < p_env->gen.i_first_track)
+ return false;
+
+ i_track -= p_env->gen.i_first_track;
+
+ /* FIXME: Dunno if this is the right way, but it's what
+ I was using in cd-info for a while.
+ */
+ return ((p_env->tocent[i_track].cdte_ctrl & 2) != 0);
+}
+
+/*!
+ Return the starting MSF (minutes/secs/frames) for track number
+ track_num in obj. Track numbers usually start at something
+ greater than 0, usually 1.
+
+ The "leadout" track is specified either by
+ using i_track LEADOUT_TRACK or the total tracks+1.
+ False is returned if there is no track entry.
+*/
+static bool
+get_track_msf_linux(void *p_user_data, track_t i_track, msf_t *msf)
+{
+ _img_private_t *p_env = p_user_data;
+
+ if (NULL == msf) return false;
+
+ if (!p_env->gen.toc_init) read_toc_linux (p_user_data) ;
+
+ if (i_track == CDIO_CDROM_LEADOUT_TRACK)
+ i_track = p_env->gen.i_tracks + p_env->gen.i_first_track;
+
+ if (i_track > (p_env->gen.i_tracks+p_env->gen.i_first_track)
+ || i_track < p_env->gen.i_first_track) {
+ return false;
+ } else {
+ struct cdrom_msf0 *msf0=
+ &p_env->tocent[i_track-p_env->gen.i_first_track].cdte_addr.msf;
+ msf->m = cdio_to_bcd8(msf0->minute);
+ msf->s = cdio_to_bcd8(msf0->second);
+ msf->f = cdio_to_bcd8(msf0->frame);
+ return true;
+ }
+}
+
+/*!
+ Eject media in CD drive.
+ Return 0 if success and 1 for failure, and 2 if no routine.
+ */
+static int
+eject_media_linux (void *p_user_data) {
+
+ _img_private_t *p_env = p_user_data;
+ int ret=2;
+ int status;
+ int fd;
+
+ if ((fd = open (p_env->gen.source_name, O_RDONLY|O_NONBLOCK)) > -1) {
+ if((status = ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT)) > 0) {
+ switch(status) {
+ case CDS_TRAY_OPEN:
+ if((ret = ioctl(fd, CDROMCLOSETRAY)) != 0) {
+ cdio_warn ("ioctl CDROMCLOSETRAY failed: %s\n", strerror(errno));
+ ret = 1;
+ }
+ break;
+ case CDS_DISC_OK:
+ if((ret = ioctl(fd, CDROMEJECT)) != 0) {
+ int eject_error = errno;
+ /* Try ejecting the MMC way... */
+ ret = scsi_mmc_eject_media(p_env->gen.cdio);
+ if (0 != ret) {
+ cdio_warn("ioctl CDROMEJECT failed: %s\n",
+ strerror(eject_error));
+ ret = 1;
+ }
+ }
+ /* force kernel to reread partition table when new disc inserted */
+ ret = ioctl(p_env->gen.fd, BLKRRPART);
+ break;
+ default:
+ cdio_warn ("Unknown CD-ROM (%d)\n", status);
+ ret = 1;
+ }
+ } else {
+ cdio_warn ("CDROM_DRIVE_STATUS failed: %s\n", strerror(errno));
+ ret=1;
+ }
+ close(fd);
+ } else
+ ret = 2;
+ close(p_env->gen.fd);
+ p_env->gen.fd = -1;
+ return ret;
+}
+
+/*!
+ Get disc type associated with the cd object.
+*/
+static discmode_t
+get_discmode_linux (void *p_user_data)
+{
+ _img_private_t *p_env = p_user_data;
+
+ int32_t i_discmode;
+
+ /* See if this is a DVD. */
+ cdio_dvd_struct_t dvd; /* DVD READ STRUCT for layer 0. */
+
+ dvd.physical.type = CDIO_DVD_STRUCT_PHYSICAL;
+ dvd.physical.layer_num = 0;
+ if (0 == ioctl (p_env->gen.fd, DVD_READ_STRUCT, &dvd)) {
+ switch(dvd.physical.layer[0].book_type) {
+ case CDIO_DVD_BOOK_DVD_ROM: return CDIO_DISC_MODE_DVD_ROM;
+ case CDIO_DVD_BOOK_DVD_RAM: return CDIO_DISC_MODE_DVD_RAM;
+ case CDIO_DVD_BOOK_DVD_R: return CDIO_DISC_MODE_DVD_R;
+ case CDIO_DVD_BOOK_DVD_RW: return CDIO_DISC_MODE_DVD_RW;
+ case CDIO_DVD_BOOK_DVD_PR: return CDIO_DISC_MODE_DVD_PR;
+ case CDIO_DVD_BOOK_DVD_PRW: return CDIO_DISC_MODE_DVD_PRW;
+ default: return CDIO_DISC_MODE_DVD_OTHER;
+ }
+ }
+
+ i_discmode = ioctl (p_env->gen.fd, CDROM_DISC_STATUS);
+
+ if (i_discmode < 0) return CDIO_DISC_MODE_ERROR;
+
+ /* FIXME Need to add getting DVD types. */
+ switch(i_discmode) {
+ case CDS_AUDIO:
+ return CDIO_DISC_MODE_CD_DA;
+ case CDS_DATA_1:
+ case CDS_DATA_2:
+ return CDIO_DISC_MODE_CD_DATA;
+ case CDS_MIXED:
+ return CDIO_DISC_MODE_CD_MIXED;
+ case CDS_XA_2_1:
+ case CDS_XA_2_2:
+ return CDIO_DISC_MODE_CD_XA;
+ case CDS_NO_INFO:
+ return CDIO_DISC_MODE_NO_INFO;
+ default:
+ return CDIO_DISC_MODE_ERROR;
+ }
+}
+
+/* Check a drive to see if it is a CD-ROM
+ Return 1 if a CD-ROM. 0 if it exists but isn't a CD-ROM drive
+ and -1 if no device exists .
+*/
+static bool
+is_cdrom_linux(const char *drive, char *mnttype)
+{
+ bool is_cd=false;
+ int cdfd;
+ struct cdrom_tochdr tochdr;
+
+ /* If it doesn't exist, return -1 */
+ if ( !cdio_is_device_quiet_generic(drive) ) {
+ return(false);
+ }
+
+ /* If it does exist, verify that it's an available CD-ROM */
+ cdfd = open(drive, (O_RDONLY|O_NONBLOCK), 0);
+ if ( cdfd >= 0 ) {
+ if ( ioctl(cdfd, CDROMREADTOCHDR, &tochdr) != -1 ) {
+ is_cd = true;
+ }
+ close(cdfd);
+ }
+ /* Even if we can't read it, it might be mounted */
+ else if ( mnttype && (strcmp(mnttype, "iso9660") == 0) ) {
+ is_cd = true;
+ }
+ return(is_cd);
+}
+
+/* MMC driver to read audio sectors.
+ Can read only up to 25 blocks.
+*/
+static int
+_read_audio_sectors_linux (void *p_user_data, void *buf, lsn_t lsn,
+ unsigned int nblocks)
+{
+ _img_private_t *p_env = p_user_data;
+ return scsi_mmc_read_sectors( p_env->gen.cdio, buf, lsn,
+ CDIO_MMC_READ_TYPE_CDDA, nblocks);
+}
+
+/* Packet driver to read mode2 sectors.
+ Can read only up to 25 blocks.
+*/
+static int
+_read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
+ unsigned int nblocks, bool b_read_10)
+{
+ scsi_mmc_cdb_t cdb = {{0, }};
+
+ CDIO_MMC_SET_READ_LBA(cdb.field, lba);
+
+ if (b_read_10) {
+ int retval;
+
+ CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_READ_10);
+ CDIO_MMC_SET_READ_LENGTH16(cdb.field, nblocks);
+
+ if ((retval = scsi_mmc_set_blocksize (p_env->gen.cdio, M2RAW_SECTOR_SIZE)))
+ return retval;
+
+ if ((retval = run_scsi_cmd_linux (p_env, 0,
+ scsi_mmc_get_cmd_len(cdb.field[0]),
+ &cdb,
+ SCSI_MMC_DATA_READ,
+ M2RAW_SECTOR_SIZE * nblocks,
+ p_buf)))
+ {
+ scsi_mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
+ return retval;
+ }
+
+ if ((retval = scsi_mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE)))
+ return retval;
+ } else
+
+ cdb.field[1] = 0; /* sector size mode2 */
+ cdb.field[9] = 0x58; /* 2336 mode2 */
+
+ CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_READ_CD);
+ CDIO_MMC_SET_READ_LENGTH24(cdb.field, nblocks);
+
+ return run_scsi_cmd_linux (p_env, 0,
+ scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
+ SCSI_MMC_DATA_READ,
+ M2RAW_SECTOR_SIZE * nblocks, p_buf);
+
+ return 0;
+}
+
+static int
+_read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
+ unsigned int nblocks, bool b_read_10)
+{
+ unsigned int l = 0;
+ int retval = 0;
+
+ while (nblocks > 0)
+ {
+ const unsigned nblocks2 = (nblocks > 25) ? 25 : nblocks;
+ void *p_buf2 = ((char *)p_buf ) + (l * M2RAW_SECTOR_SIZE);
+
+ retval |= _read_mode2_sectors_mmc (p_env, p_buf2, lba + l,
+ nblocks2, b_read_10);
+
+ if (retval)
+ break;
+
+ nblocks -= nblocks2;
+ l += nblocks2;
+ }
+
+ return retval;
+}
+
+/*!
+ Reads a single mode1 sector from cd device into data starting
+ from lsn. Returns 0 if no error.
+ */
+static int
+_read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
+ bool b_form2)
+{
+
+#if FIXED
+ char buf[M2RAW_SECTOR_SIZE] = { 0, };
+ struct cdrom_msf *p_msf = (struct cdrom_msf *) &buf;
+ msf_t _msf;
+
+ _img_private_t *p_env = p_user_data;
+
+ cdio_lba_to_msf (cdio_lsn_to_lba(lsn), &_msf);
+ msf->cdmsf_min0 = cdio_from_bcd8(_msf.m);
+ msf->cdmsf_sec0 = cdio_from_bcd8(_msf.s);
+ msf->cdmsf_frame0 = cdio_from_bcd8(_msf.f);
+
+ retry:
+ switch (p_env->access_mode)
+ {
+ case _AM_NONE:
+ cdio_warn ("no way to read mode1");
+ return 1;
+ break;
+
+ case _AM_IOCTL:
+ if (ioctl (p_env->gen.fd, CDROMREADMODE1, &buf) == -1)
+ {
+ perror ("ioctl()");
+ return 1;
+ /* exit (EXIT_FAILURE); */
+ }
+ break;
+
+ case _AM_READ_CD:
+ case _AM_READ_10:
+ if (_read_mode2_sectors (p_env->gen.fd, buf, lsn, 1,
+ (p_env->access_mode == _AM_READ_10)))
+ {
+ perror ("ioctl()");
+ if (p_env->access_mode == _AM_READ_CD)
+ {
+ cdio_info ("READ_CD failed; switching to READ_10 mode...");
+ p_env->access_mode = _AM_READ_10;
+ goto retry;
+ }
+ else
+ {
+ cdio_info ("READ_10 failed; switching to ioctl(CDROMREADMODE2) mode...");
+ p_env->access_mode = _AM_IOCTL;
+ goto retry;
+ }
+ return 1;
+ }
+ break;
+ }
+
+ memcpy (data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
+ b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
+
+#else
+ return cdio_generic_read_form1_sector(p_user_data, p_data, lsn);
+#endif
+ return 0;
+}
+
+/*!
+ Reads nblocks of mode2 sectors from cd device into data starting
+ from lsn.
+ Returns 0 if no error.
+ */
+static int
+_read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
+ bool b_form2, unsigned int nblocks)
+{
+ _img_private_t *p_env = p_user_data;
+ unsigned int i;
+ int retval;
+ unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE;
+
+ for (i = 0; i < nblocks; i++) {
+ if ( (retval = _read_mode1_sector_linux (p_env,
+ ((char *)p_data) + (blocksize*i),
+ lsn + i, b_form2)) )
+ return retval;
+ }
+ return 0;
+}
+
+/*!
+ Reads a single mode2 sector from cd device into data starting
+ from lsn. Returns 0 if no error.
+ */
+static int
+_read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
+ bool b_form2)
+{
+ char buf[M2RAW_SECTOR_SIZE] = { 0, };
+ struct cdrom_msf *msf = (struct cdrom_msf *) &buf;
+ msf_t _msf;
+
+ _img_private_t *p_env = p_user_data;
+
+ cdio_lba_to_msf (cdio_lsn_to_lba(lsn), &_msf);
+ msf->cdmsf_min0 = cdio_from_bcd8(_msf.m);
+ msf->cdmsf_sec0 = cdio_from_bcd8(_msf.s);
+ msf->cdmsf_frame0 = cdio_from_bcd8(_msf.f);
+
+ retry:
+ switch (p_env->access_mode)
+ {
+ case _AM_NONE:
+ cdio_warn ("no way to read mode2");
+ return 1;
+ break;
+
+ case _AM_IOCTL:
+ if (ioctl (p_env->gen.fd, CDROMREADMODE2, &buf) == -1)
+ {
+ perror ("ioctl()");
+ return 1;
+ /* exit (EXIT_FAILURE); */
+ }
+ break;
+
+ case _AM_READ_CD:
+ case _AM_READ_10:
+ if (_read_mode2_sectors (p_env, buf, lsn, 1,
+ (p_env->access_mode == _AM_READ_10)))
+ {
+ perror ("ioctl()");
+ if (p_env->access_mode == _AM_READ_CD)
+ {
+ cdio_info ("READ_CD failed; switching to READ_10 mode...");
+ p_env->access_mode = _AM_READ_10;
+ goto retry;
+ }
+ else
+ {
+ cdio_info ("READ_10 failed; switching to ioctl(CDROMREADMODE2) mode...");
+ p_env->access_mode = _AM_IOCTL;
+ goto retry;
+ }
+ return 1;
+ }
+ break;
+ }
+
+ if (b_form2)
+ memcpy (p_data, buf, M2RAW_SECTOR_SIZE);
+ else
+ memcpy (((char *)p_data), buf + CDIO_CD_SUBHEADER_SIZE, CDIO_CD_FRAMESIZE);
+
+ return 0;
+}
+
+/*!
+ Reads nblocks of mode2 sectors from cd device into data starting
+ from lsn.
+ Returns 0 if no error.
+ */
+static int
+_read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
+ bool b_form2, unsigned int nblocks)
+{
+ _img_private_t *p_env = p_user_data;
+ unsigned int i;
+ unsigned int i_blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE;
+
+ /* For each frame, pick out the data part we need */
+ for (i = 0; i < nblocks; i++) {
+ int retval;
+ if ( (retval = _read_mode2_sector_linux (p_env,
+ ((char *)data) + (i_blocksize*i),
+ lsn + i, b_form2)) )
+ return retval;
+ }
+ return 0;
+}
+
+/*!
+ Read and cache the CD's Track Table of Contents and track info.
+ Return false if successful or true if an error.
+*/
+static bool
+read_toc_linux (void *p_user_data)
+{
+ _img_private_t *p_env = p_user_data;
+ int i;
+
+ /* read TOC header */
+ if ( ioctl(p_env->gen.fd, CDROMREADTOCHDR, &p_env->tochdr) == -1 ) {
+ cdio_warn("%s: %s\n",
+ "error in ioctl CDROMREADTOCHDR", strerror(errno));
+ return false;
+ }
+
+ p_env->gen.i_first_track = p_env->tochdr.cdth_trk0;
+ p_env->gen.i_tracks = p_env->tochdr.cdth_trk1;
+
+ /* read individual tracks */
+ for (i= p_env->gen.i_first_track; i<=p_env->gen.i_tracks; i++) {
+ p_env->tocent[i-p_env->gen.i_first_track].cdte_track = i;
+ p_env->tocent[i-p_env->gen.i_first_track].cdte_format = CDROM_MSF;
+ if ( ioctl(p_env->gen.fd, CDROMREADTOCENTRY,
+ &p_env->tocent[i-p_env->gen.i_first_track]) == -1 ) {
+ cdio_warn("%s %d: %s\n",
+ "error in ioctl CDROMREADTOCENTRY for track",
+ i, strerror(errno));
+ return false;
+ }
+ /****
+ struct cdrom_msf0 *msf= &env->tocent[i-1].cdte_addr.msf;
+
+ fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n",
+ i, msf->minute, msf->second, msf->frame);
+ ****/
+
+ }
+
+ /* read the lead-out track */
+ p_env->tocent[p_env->gen.i_tracks].cdte_track = CDIO_CDROM_LEADOUT_TRACK;
+ p_env->tocent[p_env->gen.i_tracks].cdte_format = CDROM_MSF;
+
+ if (ioctl(p_env->gen.fd, CDROMREADTOCENTRY,
+ &p_env->tocent[p_env->gen.i_tracks]) == -1 ) {
+ cdio_warn("%s: %s\n",
+ "error in ioctl CDROMREADTOCENTRY for lead-out",
+ strerror(errno));
+ return false;
+ }
+
+ /*
+ struct cdrom_msf0 *msf= &env->tocent[p_env->gen.i_tracks].cdte_addr.msf;
+
+ fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n",
+ i, msf->minute, msf->second, msf->frame);
+ */
+
+ p_env->gen.toc_init = true;
+ return true;
+}
+
+/*!
+ Run a SCSI MMC command.
+
+ cdio CD structure set by cdio_open().
+ i_timeout time in milliseconds we will wait for the command
+ to complete. If this value is -1, use the default
+ time-out value.
+ p_buf Buffer for data, both sending and receiving
+ i_buf Size of buffer
+ e_direction direction the transfer is to go.
+ cdb CDB bytes. All values that are needed should be set on
+ input. We'll figure out what the right CDB length should be.
+
+ We return true if command completed successfully and false if not.
+ */
+static int
+run_scsi_cmd_linux( const void *p_user_data,
+ unsigned int i_timeout_ms,
+ unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
+ scsi_mmc_direction_t e_direction,
+ unsigned int i_buf, /*in/out*/ void *p_buf )
+{
+ const _img_private_t *p_env = p_user_data;
+ struct cdrom_generic_command cgc;
+ memset (&cgc, 0, sizeof (struct cdrom_generic_command));
+ memcpy(&cgc.cmd, p_cdb, i_cdb);
+ cgc.buflen = i_buf;
+ cgc.buffer = p_buf;
+ cgc.data_direction = (SCSI_MMC_DATA_READ == cgc.data_direction)
+ ? CGC_DATA_READ : CGC_DATA_WRITE;
+
+#ifdef HAVE_LINUX_CDROM_TIMEOUT
+ cgc.timeout = i_timeout_ms;
+#endif
+
+ return ioctl (p_env->gen.fd, CDROM_SEND_PACKET, &cgc);
+}
+
+/*!
+ Return the size of the CD in logical block address (LBA) units.
+ */
+static uint32_t
+stat_size_linux (void *p_user_data)
+{
+ _img_private_t *p_env = p_user_data;
+
+ struct cdrom_tocentry tocent;
+ uint32_t size;
+
+ tocent.cdte_track = CDIO_CDROM_LEADOUT_TRACK;
+ tocent.cdte_format = CDROM_LBA;
+ if (ioctl (p_env->gen.fd, CDROMREADTOCENTRY, &tocent) == -1)
+ {
+ perror ("ioctl(CDROMREADTOCENTRY)");
+ exit (EXIT_FAILURE);
+ }
+
+ size = tocent.cdte_addr.lba;
+
+ return size;
+}
+
+/*!
+ Set the arg "key" with "value" in the source device.
+ Currently "source" and "access-mode" are valid keys.
+ "source" sets the source device in I/O operations
+ "access-mode" sets the the method of CD access
+
+ 0 is returned if no error was found, and nonzero if there as an error.
+*/
+static int
+set_arg_linux (void *p_user_data, const char key[], const char value[])
+{
+ _img_private_t *p_env = p_user_data;
+
+ if (!strcmp (key, "source"))
+ {
+ if (!value)
+ return -2;
+
+ free (p_env->gen.source_name);
+
+ p_env->gen.source_name = strdup (value);
+ }
+ else if (!strcmp (key, "access-mode"))
+ {
+ return str_to_access_mode_linux(value);
+ }
+ else
+ return -1;
+
+ return 0;
+}
+
+/* checklist: /dev/cdrom, /dev/dvd /dev/hd?, /dev/scd? /dev/sr? */
+static char checklist1[][40] = {
+ {"cdrom"}, {"dvd"}, {""}
+};
+static char checklist2[][40] = {
+ {"?a hd?"}, {"?0 scd?"}, {"?0 sr?"}, {""}
+};
+
+#endif /* HAVE_LINUX_CDROM */
+
+/*!
+ Return an array of strings giving possible CD devices.
+ */
+char **
+cdio_get_devices_linux (void)
+{
+#ifndef HAVE_LINUX_CDROM
+ return NULL;
+#else
+ unsigned int i;
+ char drive[40];
+ char *ret_drive;
+ bool exists;
+ char **drives = NULL;
+ unsigned int num_drives=0;
+
+ /* Scan the system for CD-ROM drives.
+ */
+ for ( i=0; strlen(checklist1[i]) > 0; ++i ) {
+ sprintf(drive, "/dev/%s", checklist1[i]);
+ if ( (exists=is_cdrom_linux(drive, NULL)) > 0 ) {
+ cdio_add_device_list(&drives, drive, &num_drives);
+ }
+ }
+
+ /* Now check the currently mounted CD drives */
+ if (NULL != (ret_drive = check_mounts_linux("/etc/mtab"))) {
+ cdio_add_device_list(&drives, ret_drive, &num_drives);
+ free(ret_drive);
+ }
+
+ /* Finally check possible mountable drives in /etc/fstab */
+ if (NULL != (ret_drive = check_mounts_linux("/etc/fstab"))) {
+ cdio_add_device_list(&drives, ret_drive, &num_drives);
+ free(ret_drive);
+ }
+
+ /* Scan the system for CD-ROM drives.
+ Not always 100% reliable, so use the USE_MNTENT code above first.
+ */
+ for ( i=0; strlen(checklist2[i]) > 0; ++i ) {
+ unsigned int j;
+ char *insert;
+ exists = true;
+ for ( j=checklist2[i][1]; exists; ++j ) {
+ sprintf(drive, "/dev/%s", &checklist2[i][3]);
+ insert = strchr(drive, '?');
+ if ( insert != NULL ) {
+ *insert = j;
+ }
+ if ( (exists=is_cdrom_linux(drive, NULL)) > 0 ) {
+ cdio_add_device_list(&drives, drive, &num_drives);
+ }
+ }
+ }
+ cdio_add_device_list(&drives, NULL, &num_drives);
+ return drives;
+#endif /*HAVE_LINUX_CDROM*/
+}
+
+/*!
+ Return a string containing the default CD device.
+ */
+char *
+cdio_get_default_device_linux(void)
+{
+#ifndef HAVE_LINUX_CDROM
+ return NULL;
+
+#else
+ unsigned int i;
+ char drive[40];
+ bool exists;
+ char *ret_drive;
+
+ /* Scan the system for CD-ROM drives.
+ */
+ for ( i=0; strlen(checklist1[i]) > 0; ++i ) {
+ sprintf(drive, "/dev/%s", checklist1[i]);
+ if ( (exists=is_cdrom_linux(drive, NULL)) > 0 ) {
+ return strdup(drive);
+ }
+ }
+
+ /* Now check the currently mounted CD drives */
+ if (NULL != (ret_drive = check_mounts_linux("/etc/mtab")))
+ return ret_drive;
+
+ /* Finally check possible mountable drives in /etc/fstab */
+ if (NULL != (ret_drive = check_mounts_linux("/etc/fstab")))
+ return ret_drive;
+
+ /* Scan the system for CD-ROM drives.
+ Not always 100% reliable, so use the USE_MNTENT code above first.
+ */
+ for ( i=0; strlen(checklist2[i]) > 0; ++i ) {
+ unsigned int j;
+ char *insert;
+ exists = true;
+ for ( j=checklist2[i][1]; exists; ++j ) {
+ sprintf(drive, "/dev/%s", &checklist2[i][3]);
+ insert = strchr(drive, '?');
+ if ( insert != NULL ) {
+ *insert = j;
+ }
+ if ( (exists=is_cdrom_linux(drive, NULL)) > 0 ) {
+ return(strdup(drive));
+ }
+ }
+ }
+ return NULL;
+#endif /*HAVE_LINUX_CDROM*/
+}
+/*!
+ Initialization routine. This is the only thing that doesn't
+ get called via a function pointer. In fact *we* are the
+ ones to set that up.
+ */
+CdIo *
+cdio_open_linux (const char *psz_source_name)
+{
+ return cdio_open_am_linux(psz_source_name, NULL);
+}
+
+/*!
+ Initialization routine. This is the only thing that doesn't
+ get called via a function pointer. In fact *we* are the
+ ones to set that up.
+ */
+CdIo *
+cdio_open_am_linux (const char *psz_orig_source, const char *access_mode)
+{
+
+#ifdef HAVE_LINUX_CDROM
+ CdIo *ret;
+ _img_private_t *_data;
+ char *psz_source;
+
+ cdio_funcs _funcs = {
+ .eject_media = eject_media_linux,
+ .free = cdio_generic_free,
+ .get_arg = get_arg_linux,
+ .get_cdtext = get_cdtext_generic,
+ .get_default_device = cdio_get_default_device_linux,
+ .get_devices = cdio_get_devices_linux,
+ .get_discmode = get_discmode_linux,
+#if USE_LINUX_CAP
+ .get_drive_cap = get_drive_cap_linux,
+#else
+ .get_drive_cap = scsi_mmc_get_drive_cap_generic,
+#endif
+ .get_first_track_num= get_first_track_num_generic,
+ .get_hwinfo = NULL,
+ .get_mcn = get_mcn_linux,
+ .get_num_tracks = get_num_tracks_generic,
+ .get_track_format = get_track_format_linux,
+ .get_track_green = get_track_green_linux,
+ .get_track_lba = NULL, /* This could be implemented if need be. */
+ .get_track_msf = get_track_msf_linux,
+ .lseek = cdio_generic_lseek,
+ .read = cdio_generic_read,
+ .read_audio_sectors = _read_audio_sectors_linux,
+ .read_mode1_sector = _read_mode1_sector_linux,
+ .read_mode1_sectors = _read_mode1_sectors_linux,
+ .read_mode2_sector = _read_mode2_sector_linux,
+ .read_mode2_sectors = _read_mode2_sectors_linux,
+ .read_toc = read_toc_linux,
+ .run_scsi_mmc_cmd = run_scsi_cmd_linux,
+ .set_arg = set_arg_linux,
+ .stat_size = stat_size_linux
+ };
+
+ _data = _cdio_malloc (sizeof (_img_private_t));
+
+ _data->access_mode = str_to_access_mode_linux(access_mode);
+ _data->gen.init = false;
+ _data->gen.toc_init = false;
+ _data->gen.fd = -1;
+ _data->gen.b_cdtext_init = false;
+ _data->gen.b_cdtext_error = false;
+
+ if (NULL == psz_orig_source) {
+ psz_source=cdio_get_default_device_linux();
+ if (NULL == psz_source) {
+ free(_data);
+ return NULL;
+ }
+ set_arg_linux(_data, "source", psz_source);
+ free(psz_source);
+ } else {
+ if (cdio_is_device_generic(psz_orig_source))
+ set_arg_linux(_data, "source", psz_orig_source);
+ else {
+ /* The below would be okay if all device drivers worked this way. */
+#if 0
+ cdio_info ("source %s is not a device", psz_orig_source);
+#endif
+ free(_data);
+ return NULL;
+ }
+ }
+
+ ret = cdio_new ((void *)_data, &_funcs);
+ if (ret == NULL) return NULL;
+
+ if (cdio_generic_init(_data)) {
+ return ret;
+ } else {
+ cdio_generic_free (_data);
+ return NULL;
+ }
+
+#else
+ return NULL;
+#endif /* HAVE_LINUX_CDROM */
+
+}
+
+bool
+cdio_have_linux (void)
+{
+#ifdef HAVE_LINUX_CDROM
+ return true;
+#else
+ return false;
+#endif /* HAVE_LINUX_CDROM */
+}
diff --git a/src/xine-engine/buffer_types.c b/src/xine-engine/buffer_types.c
index f686f61a1..0421fecc8 100644
--- a/src/xine-engine/buffer_types.c
+++ b/src/xine-engine/buffer_types.c
@@ -59,6 +59,7 @@ static const video_db_t video_db[] = {
ME_FOURCC('P', 'I', 'M', '1'),
ME_FOURCC('m', 'p', 'g', '2'),
ME_FOURCC('m', 'p', 'g', '1'),
+ ME_FOURCC(0x02, 0, 0, 0x10),
0
},
BUF_VIDEO_MPEG,
@@ -1212,3 +1213,4 @@ void _x_waveformatex_le2me( xine_waveformatex *wavex ) {
wavex->wBitsPerSample = le2me_16(wavex->wBitsPerSample);
wavex->cbSize = le2me_16(wavex->cbSize);
}
+