diff options
author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2007-10-29 17:09:31 +0000 |
---|---|---|
committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2007-10-29 17:09:31 +0000 |
commit | 5a10eb278db0b2629967c52ff84d4a87c0e021c7 (patch) | |
tree | f3d82fd971be308c50425dcb3f6b0b50b2e6c757 | |
parent | d75bda83c7b1f6d1b9805ae651c33658e5b060ed (diff) | |
parent | 09d7a31dac92a6eb2aa5d4096a4f80e9761d7df8 (diff) | |
download | xine-lib-5a10eb278db0b2629967c52ff84d4a87c0e021c7.tar.gz xine-lib-5a10eb278db0b2629967c52ff84d4a87c0e021c7.tar.bz2 |
Merge from 1.1.
Spanish translation merge needs checking.
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | po/es.po | 1201 | ||||
-rw-r--r-- | src/input/vcd/libcdio/_cdio_linux.c | 1198 | ||||
-rw-r--r-- | src/xine-engine/buffer_types.c | 2 |
4 files changed, 2060 insertions, 342 deletions
@@ -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 @@ -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); } + |