From 41a83c2799f83313c6213976553fe69e48ea78df Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 17 Apr 2014 10:14:56 +0100 Subject: Fix update of gain control from gain calculator dialog. --- src/wx/audio_panel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc index 0838fa8ab..1c679d336 100644 --- a/src/wx/audio_panel.cc +++ b/src/wx/audio_panel.cc @@ -166,7 +166,7 @@ AudioPanel::gain_calculate_button_clicked () /* This appears to be necessary, as the change is not signalled, I think. */ - _gain->update_from_model (); + _gain->view_changed (); d->Destroy (); } -- cgit v1.2.3 From ed5f11654baf824ed4438fdd29680aea63a70bad Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 21 Apr 2014 20:26:20 +0100 Subject: Update to es_ES translation from Manual AC. Signed-off-by: Manual AC --- ChangeLog | 6 +- src/lib/po/es_ES.po | 178 +++++++++++++-------------- src/tools/po/es_ES.po | 42 ++++--- src/wx/po/es_ES.po | 325 +++++++++++++++++++++----------------------------- 4 files changed, 245 insertions(+), 306 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index ab9cff1e8..46865e635 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,12 @@ +2014-04-21 Carl Hetherington + + * Update to es_ES translation from Manuel AC. + 2014-04-17 Carl Hetherington * Fix update of the gain control when using the gain calculator dialog. - Reported-by: Andy Neddermeyer - * Version 1.66.12 released. 2014-04-07 Carl Hetherington diff --git a/src/lib/po/es_ES.po b/src/lib/po/es_ES.po index 5144bbb0f..337185c5f 100644 --- a/src/lib/po/es_ES.po +++ b/src/lib/po/es_ES.po @@ -8,35 +8,34 @@ msgstr "" "Project-Id-Version: LIBDCPOMATIC\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-31 16:10+0100\n" -"PO-Revision-Date: 2013-11-09 03:09-0500\n" +"PO-Revision-Date: 2014-04-20 10:12-0500\n" "Last-Translator: Manuel AC \n" "Language-Team: Manuel AC \n" -"Language: es-ES\n" +"Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.7\n" +"X-Generator: Poedit 1.6.4\n" #: src/lib/sndfile_content.cc:62 msgid "%1 [audio]" -msgstr "" +msgstr "%1 [audio]" #: src/lib/ffmpeg_content.cc:207 msgid "%1 [movie]" -msgstr "" +msgstr "%1 [película]" #: src/lib/sndfile_content.cc:83 msgid "%1 channels, %2kHz, %3 samples" -msgstr "" +msgstr "%1 canales, %2kHz, %3 muestras" #: src/lib/ffmpeg_content.cc:242 -#, fuzzy msgid "%1 frames; %2 frames per second" -msgstr "fotogramas por segundo" +msgstr "%1 imágenes; %2 imágenes per second" #: src/lib/video_content.cc:205 msgid "%1x%2 pixels (%3:1)" -msgstr "" +msgstr "%1x%2 pixels (%3:1)" #: src/lib/ratio.cc:35 msgid "1.19" @@ -60,7 +59,7 @@ msgstr "reducción de ruido 3D" #: src/lib/ratio.cc:36 msgid "4:3" -msgstr "" +msgstr "4:3" #: src/lib/ratio.cc:37 msgid "Academy" @@ -75,9 +74,8 @@ msgid "An error occurred whilst handling the file %1." msgstr "Ha ocurrido un error con el fichero %1." #: src/lib/analyse_audio_job.cc:48 -#, fuzzy msgid "Analyse audio" -msgstr "Analizar audio de %1" +msgstr "Analizar audio" #: src/lib/scaler.cc:64 msgid "Area" @@ -105,79 +103,77 @@ msgstr "Centro" #: src/lib/writer.cc:77 msgid "Checking existing image data" -msgstr "" +msgstr "Comprobando las imágenes existentes" #: src/lib/writer.cc:460 msgid "Computing audio digest" -msgstr "" +msgstr "Calculando la firma resumen del audio" #: src/lib/image_content.cc:100 msgid "Computing digest" -msgstr "" +msgstr "Calculando la firma resumen" #: src/lib/writer.cc:456 msgid "Computing image digest" -msgstr "" +msgstr "Calculando la firma resumen de imagen" #: src/lib/util.cc:838 -#, fuzzy msgid "Content and DCP have the same rate.\n" msgstr "La fuente y el DCP tienen la misma velocidad.\n" #: src/lib/audio_content.cc:82 msgid "Content to be joined must have the same audio delay." -msgstr "" +msgstr "Para unir contenido debe tener el mismo retardo de audio." #: src/lib/audio_content.cc:78 msgid "Content to be joined must have the same audio gain." -msgstr "" +msgstr "Para unir contenido debe tener la misma ganancia de audio." #: src/lib/video_content.cc:140 msgid "Content to be joined must have the same colour conversion." -msgstr "" +msgstr "Para unir contenido debe tener la misma conversión de color." #: src/lib/video_content.cc:132 msgid "Content to be joined must have the same crop." -msgstr "" +msgstr "Para unir contenido debe tener el mismo recorte." #: src/lib/video_content.cc:120 msgid "Content to be joined must have the same picture size." -msgstr "" +msgstr "Para unir contenido debe tener el mismo tamaño de imagen." #: src/lib/video_content.cc:136 -#, fuzzy msgid "Content to be joined must have the same scale setting." -msgstr "La fuente y el DCP tienen la misma velocidad." +msgstr "Para unir contenido debe tener la misma redimensión." #: src/lib/subtitle_content.cc:74 -#, fuzzy msgid "Content to be joined must have the same subtitle X offset." -msgstr "La fuente y el DCP tienen la misma velocidad." +msgstr "" +"Para unir contenido debe tener el mismo desplazamiento de subtítulo en X." #: src/lib/subtitle_content.cc:78 -#, fuzzy msgid "Content to be joined must have the same subtitle Y offset." -msgstr "La fuente y el DCP tienen la misma velocidad." +msgstr "" +"Para unir contenido debe tener el mismo desplazamiento de subtítulo en Y." #: src/lib/subtitle_content.cc:82 msgid "Content to be joined must have the same subtitle scale." -msgstr "" +msgstr "Para unir contenido debe tener el mismo tamaño de subtítulo." #: src/lib/video_content.cc:124 msgid "Content to be joined must have the same video frame rate." -msgstr "" +msgstr "Para unir contenido debe tener la misma velocidad de imagen." #: src/lib/video_content.cc:128 msgid "Content to be joined must have the same video frame type." -msgstr "" +msgstr "Para unir contenido debe tener el mismo tamaño de imagen." #: src/lib/ffmpeg_content.cc:112 msgid "Content to be joined must use the same audio stream." -msgstr "" +msgstr "Para unir contenido debe usar el mismo tipo de audio." #: src/lib/ffmpeg_content.cc:108 msgid "Content to be joined must use the same subtitle stream." -msgstr "" +msgstr "Para unir contenido debe tener el mismo tipo de subtítulos." #: src/lib/scp_dcp_job.cc:110 msgid "Copy DCP to TMS" @@ -192,18 +188,16 @@ msgid "Could not create remote directory %1 (%2)" msgstr "No se pudo crear la carpeta remota %1 (%2)" #: src/lib/job.cc:90 -#, fuzzy msgid "Could not open %1" -msgstr "no se pudo abrir el fichero %1" +msgstr "No se pudo abrir %1" #: src/lib/scp_dcp_job.cc:182 msgid "Could not open %1 to send" msgstr "No se pudo abrir %1 para enviar" #: src/lib/internet.cc:72 -#, fuzzy msgid "Could not open downloaded ZIP file" -msgstr "no se pudo abrir el fichero %1" +msgstr "No se puedo abrir el fichero ZIP descargado" #: src/lib/film.cc:990 msgid "Could not read DCP to make KDM for" @@ -218,14 +212,12 @@ msgid "Could not write to remote file (%1)" msgstr "No se pudo escribir el fichero remoto (%1)" #: src/lib/util.cc:850 -#, fuzzy msgid "DCP will run at %1%% of the content speed.\n" msgstr "El DCP se reproducirá al %1%% de la velocidad de la fuente.\n" #: src/lib/util.cc:841 -#, fuzzy msgid "DCP will use every other frame of the content.\n" -msgstr "El DCP usará fotogramas alternos de la fuente.\n" +msgstr "El DCP usará imágenes alternas de la fuente.\n" #: src/lib/job.cc:91 msgid "" @@ -238,7 +230,7 @@ msgstr "" #: src/lib/ffmpeg_content.cc:89 msgid "" "DCP-o-matic no longer supports the `%1' filter, so it has been turned off." -msgstr "" +msgstr "DCP-o-matic ya no ofrece el filtro `%1', así que ha sido desactivado." #: src/lib/filter.cc:65 src/lib/filter.cc:66 src/lib/filter.cc:67 msgid "De-interlacing" @@ -255,33 +247,38 @@ msgid "" "Best regards,\n" "DCP-o-matic" msgstr "" +"Estimado proyeccionista\n" +"\n" +"Adjuntas encontrará las llaves KDM para $CPL_NAME.\n" +"\n" +"Estas llaves KDM son válidas desde $START_TIME hasta $END_TIME.\n" +"\n" +"Atentamente,\n" +"DCP-o-matic" #: src/lib/dolby_cp750.cc:27 -#, fuzzy msgid "Dolby CP650 and CP750" -msgstr "Dolby CP750" +msgstr "Dolby CP650 and CP750" #: src/lib/internet.cc:65 msgid "Download failed (%1/%2 error %3)" -msgstr "" +msgstr "Descarga fallida (%1/%2 error %3)" #: src/lib/util.cc:843 -#, fuzzy msgid "Each content frame will be doubled in the DCP.\n" -msgstr "Se doblará cada fotograma de la fuente en el DCP.\n" +msgstr "Se doblará cada imagen en el DCP.\n" #: src/lib/util.cc:845 -#, fuzzy msgid "Each content frame will be repeated %1 more times in the DCP.\n" -msgstr "Se doblará cada fotograma de la fuente en el DCP.\n" +msgstr "Cada imagen será repetida otras %1 veces en el DCP.\n" #: src/lib/send_kdm_email_job.cc:50 msgid "Email KDMs for %1" -msgstr "" +msgstr "Enviar por email las KDM para %1" #: src/lib/writer.cc:120 msgid "Encoding image data" -msgstr "" +msgstr "Codificando imagen" #: src/lib/job.cc:320 msgid "Error (%1)" @@ -309,7 +306,7 @@ msgstr "Flat" #: src/lib/ratio.cc:43 msgid "Full frame" -msgstr "" +msgstr "Frame completo" #: src/lib/scaler.cc:65 msgid "Gaussian" @@ -321,7 +318,7 @@ msgstr "Gradient debander" #: src/lib/util.cc:806 msgid "Hearing impaired" -msgstr "" +msgstr "Sordos" #: src/lib/filter.cc:71 msgid "High quality 3D denoiser" @@ -349,12 +346,11 @@ msgstr "Izquierda" #: src/lib/util.cc:808 msgid "Left centre" -msgstr "" +msgstr "Centro izquierda" #: src/lib/util.cc:810 -#, fuzzy msgid "Left rear surround" -msgstr "Surround izquierda" +msgstr "Surround trasero izquierda" #: src/lib/util.cc:804 msgid "Left surround" @@ -362,7 +358,7 @@ msgstr "Surround izquierda" #: src/lib/util.cc:803 msgid "Lfe (sub)" -msgstr "" +msgstr "Lfe (bajos)" #: src/lib/filter.cc:68 src/lib/filter.cc:69 src/lib/filter.cc:72 msgid "Misc" @@ -374,12 +370,11 @@ msgstr "Motion compensating deinterlacer" #: src/lib/video_content.cc:447 msgid "No scale" -msgstr "" +msgstr "No redimensionar" #: src/lib/video_content.cc:444 -#, fuzzy msgid "No stretch" -msgstr "Flat sin deformación" +msgstr "Sin deformación" #: src/lib/filter.cc:70 src/lib/filter.cc:71 src/lib/filter.cc:73 msgid "Noise reduction" @@ -392,14 +387,15 @@ msgstr "OK (ejecución %1)" #: src/lib/content.cc:100 msgid "Only the first piece of content to be joined can have a start trim." msgstr "" +"Solo la primera pieza a ser unida puede tener un recorte en su comienzo." #: src/lib/content.cc:104 msgid "Only the last piece of content to be joined can have an end trim." -msgstr "" +msgstr "Solo la última pieza a ser unida puede tener un recorte en su final." #: src/lib/job.cc:103 msgid "Out of memory" -msgstr "" +msgstr "Falta de memoria" #: src/lib/filter.cc:73 msgid "Overcomplete wavelet denoiser" @@ -418,9 +414,8 @@ msgid "Rating" msgstr "Clasificación" #: src/lib/config.cc:84 src/lib/config.cc:168 -#, fuzzy msgid "Rec. 709" -msgstr "Rec 709" +msgstr "Rec. 709" #: src/lib/util.cc:801 msgid "Right" @@ -428,12 +423,11 @@ msgstr "Derecha" #: src/lib/util.cc:809 msgid "Right centre" -msgstr "" +msgstr "Centro derecha" #: src/lib/util.cc:811 -#, fuzzy msgid "Right rear surround" -msgstr "Surround derecha" +msgstr "Surround trasero derecha" #: src/lib/util.cc:805 msgid "Right surround" @@ -481,15 +475,14 @@ msgstr "" #: src/lib/job.cc:103 msgid "There was not enough memory to do this." -msgstr "" +msgstr "No hubo suficiente memoria para hacer esto." #: src/lib/film.cc:406 -#, fuzzy msgid "" "This film was created with a newer version of DCP-o-matic, and it cannot be " "loaded into this version. Sorry!" msgstr "" -"Esta película se creó con una versión antigua de DCP-o-matic, y " +"Esta película se creó con una versión más reciente de DCP-o-matic, y " "desgraciadamente no s puede cargar. Necesitas crear una nueva película, " "volver a añadir y configurar ton contenido. ¡Lo siento!" @@ -517,7 +510,7 @@ msgstr "Transitional" #: src/lib/internet.cc:77 msgid "Unexpected ZIP file contents" -msgstr "" +msgstr "Contenidos inesperados del fichero ZIP" #: src/lib/job.cc:120 msgid "Unknown error" @@ -537,7 +530,7 @@ msgstr "Sin título" #: src/lib/util.cc:807 msgid "Visually impaired" -msgstr "" +msgstr "Ciegos" #: src/lib/scp_dcp_job.cc:102 msgid "Waiting" @@ -557,12 +550,11 @@ msgstr "Tienes que añadir contenido al DCP antes de crearlo." #: src/lib/image_content.cc:68 msgid "[moving images]" -msgstr "" +msgstr "[imágenes en movimiento]" #: src/lib/image_content.cc:66 -#, fuzzy msgid "[still]" -msgstr "imagen fija" +msgstr "[imagen fija]" #: src/lib/film.cc:247 msgid "cannot contain slashes" @@ -577,9 +569,8 @@ msgid "connecting" msgstr "conectando" #: src/lib/film.cc:295 -#, fuzzy msgid "container" -msgstr "contenido" +msgstr "continente" #: src/lib/film.cc:303 msgid "content type" @@ -590,9 +581,8 @@ msgid "copying %1" msgstr "copiando %1" #: src/lib/exceptions.cc:36 -#, fuzzy msgid "could not create file %1" -msgstr "No se pudo escribir el fichero remoto (%1)" +msgstr "No se pudo crear el fichero (%1)" #: src/lib/ffmpeg.cc:176 msgid "could not find audio decoder" @@ -608,15 +598,13 @@ msgstr "no se pudo encontrar decodificador de vídeo" #: src/lib/writer.cc:424 msgid "could not move audio MXF into the DCP (%1)" -msgstr "" +msgstr "no s puedo mover el audio MXF en el DCP (%1)" #: src/lib/sndfile_decoder.cc:56 -#, fuzzy msgid "could not open audio file for reading" -msgstr "no se pudo abrir el fichero para lectura" +msgstr "no se pudo abrir el fichero de audio para lectura" #: src/lib/exceptions.cc:29 -#, fuzzy msgid "could not open file %1" msgstr "no se pudo abrir el fichero %1" @@ -625,21 +613,18 @@ msgid "could not open file for reading" msgstr "no se pudo abrir el fichero para lectura" #: src/lib/dcp_video_frame.cc:358 -#, fuzzy msgid "could not read encoded data" -msgstr "no se encontró el decodificador de audio" +msgstr "no se pudo leer la información codificada" #: src/lib/exceptions.cc:42 -#, fuzzy msgid "could not read from file %1 (%2)" -msgstr "No se pudo crear la carpeta remota %1 (%2)" +msgstr "No se pudo leer del fichero %1 (%2)" #: src/lib/resampler.cc:102 msgid "could not run sample-rate converter" msgstr "no se pudo ejecutar el conversor de velocidad" #: src/lib/resampler.cc:83 -#, fuzzy msgid "could not run sample-rate converter for %1 samples (%2) (%3)" msgstr "no se pudo ejecutar el conversor de velocidad" @@ -652,29 +637,28 @@ msgid "could not start SSH session" msgstr "no se pudo abrir la sesión SSH" #: src/lib/exceptions.cc:48 -#, fuzzy msgid "could not write to file %1 (%2)" -msgstr "No se pudo escribir el fichero remoto (%1)" +msgstr "No se pudo escribir en el fichero (%1)" #: src/lib/util.cc:601 msgid "error during async_accept (%1)" -msgstr "" +msgstr "error durante async_accept (%1)" #: src/lib/util.cc:577 msgid "error during async_connect (%1)" -msgstr "" +msgstr "error durante async_connect (%1)" #: src/lib/util.cc:650 msgid "error during async_read (%1)" -msgstr "" +msgstr "error durante async_read (%1)" #: src/lib/util.cc:622 msgid "error during async_write (%1)" -msgstr "" +msgstr "error durante async_write (%1)" #: src/lib/transcode_job.cc:100 msgid "frames per second" -msgstr "fotogramas por segundo" +msgstr "imágenes por segundo" #: src/lib/util.cc:152 msgid "hour" @@ -702,7 +686,7 @@ msgstr "falta una configuración obligatoria %1" #: src/lib/image_content.cc:83 msgid "moving" -msgstr "" +msgstr "moviendo" #: src/lib/ffmpeg_decoder.cc:575 msgid "multi-part subtitles not yet supported" @@ -735,14 +719,12 @@ msgid "seconds" msgstr "segundos" #: src/lib/image_content.cc:81 -#, fuzzy msgid "still" msgstr "imagen fija" #: src/lib/ffmpeg_examiner.cc:168 -#, fuzzy msgid "unknown" -msgstr "Error desconocido" +msgstr "desconocido" #~ msgid "Cubic interpolating deinterlacer" #~ msgstr "Desentrelazado por interpolación cúbica" diff --git a/src/tools/po/es_ES.po b/src/tools/po/es_ES.po index 3b5c01d2b..e26a8221c 100644 --- a/src/tools/po/es_ES.po +++ b/src/tools/po/es_ES.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: DCPOMATIC\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-31 16:10+0100\n" -"PO-Revision-Date: 2013-11-09 02:47-0500\n" +"PO-Revision-Date: 2014-04-20 10:21-0500\n" "Last-Translator: Manuel AC \n" "Language-Team: Manuel AC \n" -"Language: es-ES\n" +"Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.7\n" +"X-Generator: Poedit 1.6.4\n" #: src/tools/dcpomatic.cc:396 msgid "%1 already exists as a file, so you cannot use it for a new film." @@ -23,7 +23,7 @@ msgstr "%1 ya existe como fichero, no puedes usarlo para una nueva película." #: src/tools/dcpomatic_batch.cc:49 msgid "&Add Film..." -msgstr "" +msgstr "&Añadir película..." #: src/tools/dcpomatic.cc:270 msgid "&Edit" @@ -75,7 +75,7 @@ msgstr "&Enviar DCP al TMS" #: src/tools/dcpomatic.cc:273 msgid "&Tools" -msgstr "" +msgstr "&Herramientas" #: src/tools/dcpomatic_batch.cc:146 msgid "" @@ -88,24 +88,22 @@ msgid "About" msgstr "Acerca de" #: src/tools/dcpomatic.cc:263 -#, fuzzy msgid "About DCP-o-matic" -msgstr "DVD-o-matic" +msgstr "Acerca de DVD-o-matic" #: src/tools/dcpomatic_batch.cc:84 msgid "Add Film..." -msgstr "" +msgstr "Añadir película..." #: src/tools/dcpomatic.cc:508 msgid "An unknown exeception occurred." -msgstr "" +msgstr "Ha ocurrido un error desconocido." #: src/tools/dcpomatic.cc:259 msgid "Check for updates" -msgstr "" +msgstr "Buscar actualizaciones" #: src/tools/dcpomatic.cc:663 src/tools/dcpomatic_batch.cc:255 -#, fuzzy msgid "Could not load film %1 (%2)" msgstr "No se pudo cargar la película %s (%s)" @@ -120,7 +118,7 @@ msgstr "No se pudo mostrar el DCP (no se pudo ejecutar konqueror)" #: src/tools/dcpomatic.cc:531 msgid "Could not show DCP (could not run nautilus)" -msgstr "No se pudo mostrar el DCP (no se pudo ejecutar nautilus)" +msgstr "No se pudo mostrar el DCP (no se pudo ejecutar nautilos)" #: src/tools/dcpomatic.cc:367 src/tools/dcpomatic.cc:623 #: src/tools/dcpomatic.cc:678 @@ -129,11 +127,11 @@ msgstr "DCP-o-matic" #: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240 msgid "DCP-o-matic Batch Converter" -msgstr "" +msgstr "Convertidor por lotes DCP-o-matic" #: src/tools/dcpomatic.cc:258 msgid "Encoding servers..." -msgstr "" +msgstr "Servidores de codificación..." #: src/tools/dcpomatic.cc:95 msgid "Film changed" @@ -142,12 +140,12 @@ msgstr "Película cambiada" #: src/tools/dcpomatic_batch.cc:145 msgid "Free, open-source DCP generation from almost anything." msgstr "" -"Generación de DCP a partir de casi cualquier fuente, libre y de código " -"abierto." +"Generación libre y de código abierto de DCP a partir de casi cualquier " +"fuente." #: src/tools/dcpomatic.cc:257 msgid "Hints..." -msgstr "" +msgstr "Pistas..." #: src/tools/dcpomatic.cc:252 msgid "Make &KDMs..." @@ -176,10 +174,13 @@ msgid "" "The DCP for this film will take up about %.1f Gb, and the disk that you are " "using only has %.1f Gb available. Do you want to continue anyway?" msgstr "" +"El DCP de esta película usará aproximadamente %.1f Gb, y el disco " +"seleccionado solo tiene %.1f Gb disponibles. Quieres continuar de todas " +"formas?" #: src/tools/dcpomatic.cc:771 msgid "The DCP-o-matic download server could not be contacted." -msgstr "" +msgstr "Imposible conectar con el servidor de descarga de DCP-o-matic." #: src/tools/dcpomatic.cc:386 msgid "" @@ -190,7 +191,7 @@ msgstr "" #: src/tools/dcpomatic.cc:766 msgid "There are no new versions of DCP-o-matic available." -msgstr "" +msgstr "No hay disponibles nuevas versiones de DCP-o-matic." #: src/tools/dcpomatic.cc:583 src/tools/dcpomatic_batch.cc:104 msgid "There are unfinished jobs; are you sure you want to quit?" @@ -201,6 +202,9 @@ msgid "" "This film was created with an old version of DVD-o-matic and may not load " "correctly in this version. Please check the film's settings carefully." msgstr "" +"Este proyecto se creó con una versión antigua de DVD-o-matic y puede que no " +"cargue correctamente en esta versión. Por favor revisa cuidadosamente las " +"opciones." #: src/tools/dcpomatic.cc:584 src/tools/dcpomatic_batch.cc:105 msgid "Unfinished jobs" diff --git a/src/wx/po/es_ES.po b/src/wx/po/es_ES.po index 3b8632ed4..bc457f992 100644 --- a/src/wx/po/es_ES.po +++ b/src/wx/po/es_ES.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: libdcpomatic-wx\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-31 16:10+0100\n" -"PO-Revision-Date: 2013-11-09 03:00-0500\n" +"PO-Revision-Date: 2014-04-20 12:06-0500\n" "Last-Translator: Manuel AC \n" "Language-Team: Manuel AC \n" -"Language: es-ES\n" +"Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.7\n" +"X-Generator: Poedit 1.6.4\n" #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57 #: src/wx/subtitle_panel.cc:66 @@ -23,7 +23,6 @@ msgid "%" msgstr "%" #: src/wx/about_dialog.cc:78 -#, fuzzy msgid "" "(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen" msgstr "" @@ -31,7 +30,7 @@ msgstr "" #: src/wx/config_dialog.cc:125 msgid "(password will be stored on disk in plaintext)" -msgstr "" +msgstr "(claves guardadas como texto plano en el disco)" #: src/wx/config_dialog.cc:98 msgid "(restart DCP-o-matic to see language changes)" @@ -39,11 +38,11 @@ msgstr "(reinicia DCP-o-matic para ver el cambio de idioma)" #: src/wx/audio_mapping_view.cc:135 msgid "-3dB" -msgstr "" +msgstr "-3dB" #: src/wx/colour_conversion_editor.cc:83 msgid "1 / " -msgstr "" +msgstr "1 / " #: src/wx/audio_panel.cc:236 msgid "1 channel" @@ -51,19 +50,19 @@ msgstr "1 canal" #: src/wx/video_panel.cc:196 msgid "2D" -msgstr "" +msgstr "2D" #: src/wx/film_editor.cc:220 msgid "2K" -msgstr "" +msgstr "2K" #: src/wx/film_editor.cc:168 msgid "3D" -msgstr "" +msgstr "3D" #: src/wx/video_panel.cc:199 msgid "3D alternate" -msgstr "" +msgstr "3D alterno" #: src/wx/video_panel.cc:197 msgid "3D left/right" @@ -71,20 +70,19 @@ msgstr "3D izquierda/derecha" #: src/wx/video_panel.cc:198 msgid "3D top/bottom" -msgstr "" +msgstr "3D arriba/abajo" #: src/wx/film_editor.cc:221 msgid "4K" -msgstr "" +msgstr "4K" #: src/wx/update_dialog.cc:34 msgid "A new version of DCP-o-matic is available." -msgstr "" +msgstr "Una nueva versión de DCP-o-matic está disponible." #: src/wx/about_dialog.cc:30 -#, fuzzy msgid "About DCP-o-matic" -msgstr "DCP-o-matic" +msgstr "Acerca de DCP-o-matic" #: src/wx/kdm_dialog.cc:66 msgid "Add Cinema..." @@ -104,11 +102,11 @@ msgstr "Añadir carpeta..." #: src/wx/editable_list.h:62 msgid "Add..." -msgstr "" +msgstr "Añadir..." #: src/wx/about_dialog.cc:107 msgid "Artwork by" -msgstr "" +msgstr "Grafismo de" #: src/wx/audio_dialog.cc:33 src/wx/audio_panel.cc:40 msgid "Audio" @@ -127,27 +125,25 @@ msgid "Audio Language (e.g. EN)" msgstr "Idioma del audio (ej. ES)" #: src/wx/audio_panel.cc:81 -#, fuzzy msgid "Audio Stream" -msgstr "Retardo del audio" +msgstr "Flujo de audio" #: src/wx/film_editor.cc:163 -#, fuzzy msgid "Audio channels" -msgstr "canales" +msgstr "Canales de audio" #: src/wx/audio_mapping_view.cc:353 #, c-format msgid "" "Audio will be passed from content channel %d to DCP channel %d unaltered." -msgstr "" +msgstr "El audio del canal %d pasará al canal %d del DCP sin modificar." #: src/wx/audio_mapping_view.cc:356 #, c-format msgid "" "Audio will be passed from content channel %d to DCP channel %d with gain " "%.1fdB." -msgstr "" +msgstr "El audio del canal %d pasará al canal %d del DCP con ganancia %.1fdB." #: src/wx/job_wrapper.cc:38 #, c-format @@ -164,11 +160,11 @@ msgstr "Explorar..." #: src/wx/audio_mapping_view.cc:320 msgid "BsL" -msgstr "" +msgstr "BsL" #: src/wx/audio_mapping_view.cc:324 msgid "BsR" -msgstr "" +msgstr "BsR" #: src/wx/gain_calculator_dialog.cc:32 msgid "But I have to use fader" @@ -176,7 +172,7 @@ msgstr "pero tengo que usar el fader a" #: src/wx/audio_mapping_view.cc:288 msgid "C" -msgstr "" +msgstr "C" #: src/wx/audio_panel.cc:63 msgid "Calculate..." @@ -187,20 +183,17 @@ msgid "Cancel" msgstr "Cancelar" #: src/wx/screen_dialog.cc:44 -#, fuzzy msgid "Certificate" -msgstr "Seleccionar fichero de contenido" +msgstr "Certificado" #: src/wx/dolby_certificate_dialog.cc:157 #: src/wx/doremi_certificate_dialog.cc:67 -#, fuzzy msgid "Certificate downloaded" -msgstr "Seleccionar fichero de contenido" +msgstr "Certificado descargado" #: src/wx/audio_gain_dialog.cc:26 -#, fuzzy msgid "Channel gain" -msgstr "Canales" +msgstr "Ganancia del canal" #: src/wx/audio_dialog.cc:44 msgid "Channels" @@ -208,33 +201,29 @@ msgstr "Canales" #: src/wx/config_dialog.cc:137 msgid "Check for testing updates as well as stable ones" -msgstr "" +msgstr "Buscar actualizaciones de prueba y estables" #: src/wx/config_dialog.cc:133 msgid "Check for updates on startup" -msgstr "" +msgstr "Buscar actualizaciones al iniciar" #: src/wx/content_menu.cc:182 -#, fuzzy msgid "Choose a file" -msgstr "Crear en carpeta" +msgstr "Elige un fichero" #: src/wx/film_editor.cc:775 msgid "Choose a file or files" msgstr "Elegir un fichero o ficheros" #: src/wx/content_menu.cc:175 src/wx/film_editor.cc:798 -#, fuzzy msgid "Choose a folder" -msgstr "Crear en carpeta" +msgstr "Elige una carpeta" #: src/wx/dolby_certificate_dialog.cc:43 -#, fuzzy msgid "Cinema" -msgstr "Añadir cine..." +msgstr "Cine" #: src/wx/config_dialog.cc:561 -#, fuzzy msgid "Colour Conversions" msgstr "Conversiones de color" @@ -244,9 +233,8 @@ msgid "Colour conversion" msgstr "Conversión de color" #: src/wx/film_editor.cc:134 -#, fuzzy msgid "Container" -msgstr "Contenido" +msgstr "Continente" #: src/wx/audio_mapping_view.cc:273 src/wx/film_editor.cc:85 msgid "Content" @@ -262,9 +250,8 @@ msgid "Content frame rate %.4f\n" msgstr "Velocidad del contenido %.4f\n" #: src/wx/dci_metadata_dialog.cc:32 -#, fuzzy msgid "Content version" -msgstr "Tipo de contenido" +msgstr "Versión del contenido" #: src/wx/video_panel.cc:289 #, c-format @@ -287,7 +274,7 @@ msgstr "No se pudo crear el DCP: %s" #: src/wx/dolby_certificate_dialog.cc:39 msgid "Country" -msgstr "" +msgstr "País" #: src/wx/new_film_dialog.cc:40 msgid "Create in folder" @@ -308,7 +295,7 @@ msgstr "Nombre DCI" #: src/wx/film_editor.cc:87 src/wx/kdm_dialog.cc:107 msgid "DCP" -msgstr "" +msgstr "DCP" #: src/wx/film_editor.cc:118 msgid "DCP Name" @@ -319,56 +306,49 @@ msgid "DCP-o-matic" msgstr "DCP-o-matic" #: src/wx/audio_dialog.cc:98 -#, fuzzy, c-format +#, c-format msgid "DCP-o-matic audio - %s" -msgstr "Audio DCP-o-matic - %1" +msgstr "Audio DCP-o-matic - %s" #: src/wx/config_dialog.cc:331 msgid "Default DCI name details" msgstr "Detalles por defecto del nombre DCI" #: src/wx/config_dialog.cc:344 -#, fuzzy msgid "Default JPEG2000 bandwidth" -msgstr "Ancho de banda JPEG2000" +msgstr "Ancho de banda JPEG2000 por defecto" #: src/wx/config_dialog.cc:353 -#, fuzzy msgid "Default audio delay" -msgstr "Tipo de contenido" +msgstr "Retardo de audio por defecto" #: src/wx/config_dialog.cc:335 -#, fuzzy msgid "Default container" -msgstr "Tipo de contenido" +msgstr "Contenedor por defecto" #: src/wx/config_dialog.cc:339 -#, fuzzy msgid "Default content type" -msgstr "Tipo de contenido" +msgstr "Tipo de contenido por defecto" #: src/wx/config_dialog.cc:365 -#, fuzzy msgid "Default creator" -msgstr "Tipo de contenido" +msgstr "Creador por defecto" #: src/wx/config_dialog.cc:323 msgid "Default directory for new films" msgstr "Carpeta por defecto para nuevas películas" #: src/wx/config_dialog.cc:315 -#, fuzzy msgid "Default duration of still images" -msgstr "Carpeta por defecto para nuevas películas" +msgstr "Duración por defecto de las imágenes fijas" #: src/wx/config_dialog.cc:361 -#, fuzzy msgid "Default issuer" -msgstr "Tipo de contenido" +msgstr "Emisor por defecto" #: src/wx/config_dialog.cc:294 msgid "Defaults" -msgstr "" +msgstr "Por defecto" #: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78 msgid "Details..." @@ -381,43 +361,41 @@ msgstr "Espacio requerido en disco" #: src/wx/screen_dialog.cc:64 src/wx/screen_dialog.cc:118 #: src/wx/screen_dialog.cc:135 msgid "Dolby" -msgstr "" +msgstr "Dolby" #: src/wx/screen_dialog.cc:63 src/wx/screen_dialog.cc:114 #: src/wx/screen_dialog.cc:134 msgid "Doremi" -msgstr "" +msgstr "Doremi" #: src/wx/doremi_certificate_dialog.cc:48 msgid "Doremi serial numbers must have 6 digits" -msgstr "" +msgstr "Los números de serie de Doremi deben tener 6 cifras" #: src/wx/film_editor.cc:288 msgid "Down" -msgstr "" +msgstr "Bajar" #: src/wx/download_certificate_dialog.cc:37 src/wx/screen_dialog.cc:47 msgid "Download" -msgstr "" +msgstr "Descargar" #: src/wx/download_certificate_dialog.cc:27 msgid "Download certificate" -msgstr "" +msgstr "Descargar certificado" #: src/wx/dolby_certificate_dialog.cc:132 #: src/wx/doremi_certificate_dialog.cc:52 msgid "Downloading certificate" -msgstr "" +msgstr "Descargando certificado" #: src/wx/kdm_dialog.cc:68 -#, fuzzy msgid "Edit Cinema..." -msgstr "Editar..." +msgstr "Editar cine..." #: src/wx/kdm_dialog.cc:75 -#, fuzzy msgid "Edit Screen..." -msgstr "Editar..." +msgstr "Editar pantalla..." #: src/wx/audio_mapping_view.cc:136 src/wx/config_dialog.cc:332 #: src/wx/video_panel.cc:154 src/wx/video_panel.cc:171 @@ -426,18 +404,16 @@ msgid "Edit..." msgstr "Editar..." #: src/wx/cinema_dialog.cc:31 -#, fuzzy msgid "Email address for KDM delivery" msgstr "Remitente para los emails de KDM" #: src/wx/servers_list_dialog.cc:30 -#, fuzzy msgid "Encoding Servers" msgstr "Servidores de codificación" #: src/wx/film_editor.cc:159 msgid "Encrypted" -msgstr "" +msgstr "Encriptado" #: src/wx/dci_metadata_dialog.cc:50 msgid "Facility (e.g. DLA)" @@ -445,9 +421,8 @@ msgstr "Compañía (ej. DLA)" #: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91 #: src/wx/dolby_certificate_dialog.cc:106 -#, fuzzy msgid "Fetching..." -msgstr "contando..." +msgstr "Recuperando..." #: src/wx/properties_dialog.cc:36 msgid "Film Properties" @@ -463,12 +438,11 @@ msgstr "Filtros" #: src/wx/content_menu.cc:52 msgid "Find missing..." -msgstr "" +msgstr "Buscar ausentes..." #: src/wx/film_editor.cc:145 -#, fuzzy msgid "Frame Rate" -msgstr "Velocidad DCP" +msgstr "Velocidad" #: src/wx/properties_dialog.cc:39 msgid "Frames" @@ -493,11 +467,11 @@ msgstr "Remitente para los emails de KDM" #: src/wx/audio_mapping_view.cc:134 msgid "Full" -msgstr "" +msgstr "Completo" #: src/wx/timing_panel.cc:43 msgid "Full length" -msgstr "" +msgstr "Duración completa" #: src/wx/gain_calculator_dialog.cc:27 msgid "Gain Calculator" @@ -506,7 +480,7 @@ msgstr "Calculadora de ganancia" #: src/wx/audio_gain_dialog.cc:28 #, c-format msgid "Gain for content channel %d in DCP channel %d" -msgstr "" +msgstr "Ganancia del canal %d en el canal %d del DCP" #: src/wx/properties_dialog.cc:52 msgid "Gb" @@ -514,15 +488,15 @@ msgstr "Gb" #: src/wx/audio_mapping_view.cc:304 msgid "HI" -msgstr "" +msgstr "HI" #: src/wx/hints_dialog.cc:26 msgid "Hints" -msgstr "" +msgstr "Pistas" #: src/wx/servers_list_dialog.cc:40 msgid "Host" -msgstr "" +msgstr "Host" #: src/wx/server_dialog.cc:38 msgid "Host name or IP address" @@ -541,9 +515,8 @@ msgid "IP address" msgstr "Dirección IP" #: src/wx/config_dialog.cc:519 -#, fuzzy msgid "IP address / host name" -msgstr "Dirección IP" +msgstr "Dirección IP / nombre" #: src/wx/colour_conversion_editor.cc:44 msgid "Input gamma" @@ -551,7 +524,7 @@ msgstr "Gamma de entrada" #: src/wx/film_editor.cc:224 msgid "Interop" -msgstr "" +msgstr "Interop" #: src/wx/film_editor.cc:178 msgid "JPEG2000 bandwidth" @@ -559,10 +532,9 @@ msgstr "Ancho de banda JPEG2000" #: src/wx/content_menu.cc:51 msgid "Join" -msgstr "" +msgstr "Unir" #: src/wx/config_dialog.cc:694 -#, fuzzy msgid "KDM Email" msgstr "Email KDM" @@ -572,11 +544,11 @@ msgstr "Mantener el video secuencia" #: src/wx/audio_mapping_view.cc:280 msgid "L" -msgstr "" +msgstr "L" #: src/wx/audio_mapping_view.cc:312 msgid "Lc" -msgstr "" +msgstr "Lc" #: src/wx/video_panel.cc:87 msgid "Left crop" @@ -584,7 +556,7 @@ msgstr "Recorte izquierda" #: src/wx/audio_mapping_view.cc:292 msgid "Lfe" -msgstr "" +msgstr "Lfe" #: src/wx/colour_conversion_editor.cc:49 msgid "Linearise input gamma curve for low values" @@ -592,26 +564,23 @@ msgstr "Hacer lineal la curva de gamma de entrada para valores bajos" #: src/wx/screen_dialog.cc:46 msgid "Load from file..." -msgstr "" +msgstr "Cargar de fichero..." #: src/wx/audio_mapping_view.cc:296 -#, fuzzy msgid "Ls" -msgstr "s" +msgstr "Ls" #: src/wx/film_editor.cc:749 msgid "MISSING: " -msgstr "" +msgstr "FALTA:" #: src/wx/config_dialog.cc:121 -#, fuzzy msgid "Mail password" -msgstr "Clave del TMS" +msgstr "Clave del correo" #: src/wx/config_dialog.cc:117 -#, fuzzy msgid "Mail user name" -msgstr "Usuario del TMS" +msgstr "Usuario del correo" #: src/wx/kdm_dialog.cc:47 msgid "Make KDMs" @@ -619,21 +588,19 @@ msgstr "Crear KDMs" #: src/wx/colour_conversion_editor.cc:67 msgid "Matrix" -msgstr "" +msgstr "Matriz" #: src/wx/config_dialog.cc:109 -#, fuzzy msgid "Maximum JPEG2000 bandwidth" -msgstr "Ancho de banda JPEG2000" +msgstr "Ancho de banda JPEG2000 máximo" #: src/wx/config_dialog.cc:348 src/wx/film_editor.cc:182 msgid "Mbit/s" -msgstr "" +msgstr "Mbit/s" #: src/wx/video_panel.cc:277 -#, fuzzy msgid "Multiple content selected" -msgstr "Tipo de contenido" +msgstr "Varios contenidos seleccionados" #: src/wx/dir_picker_ctrl.cc:51 msgid "My Documents" @@ -650,12 +617,12 @@ msgstr "Nueva película" #: src/wx/update_dialog.cc:36 msgid "New versions of DCP-o-matic are available." -msgstr "" +msgstr "Nuevas versiones disponibles de DCP-o-matic." #: src/wx/audio_mapping_view.cc:351 #, c-format msgid "No audio will be passed from content channel %d to DCP channel %d." -msgstr "" +msgstr "No pasará audio del canal de origen %d al canal %d del DCP." #: src/wx/video_panel.cc:152 src/wx/video_panel.cc:246 msgid "None" @@ -663,16 +630,15 @@ msgstr "Ninguno" #: src/wx/audio_mapping_view.cc:133 msgid "Off" -msgstr "" +msgstr "Off" #: src/wx/screen_dialog.cc:65 msgid "Other" -msgstr "" +msgstr "Otros" #: src/wx/config_dialog.cc:113 -#, fuzzy msgid "Outgoing mail server" -msgstr "Servidores de codificación" +msgstr "Servidor de salida de correo" #: src/wx/colour_conversion_editor.cc:78 msgid "Output gamma" @@ -688,9 +654,8 @@ msgid "Padded with black to %dx%d (%.2f:1)\n" msgstr "Completado con negro hasta %dx%d (%.2f:1)\n" #: src/wx/config_dialog.cc:639 -#, fuzzy msgid "Password" -msgstr "Clave del TMS" +msgstr "Clave" #: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164 msgid "Pause" @@ -706,7 +671,7 @@ msgstr "Reproducir" #: src/wx/timing_panel.cc:52 msgid "Play length" -msgstr "" +msgstr "Duración" #: src/wx/audio_plot.cc:43 msgid "Please wait; audio is being analysed..." @@ -718,7 +683,7 @@ msgstr "Posición" #: src/wx/audio_mapping_view.cc:284 msgid "R" -msgstr "" +msgstr "R" #: src/wx/audio_dialog.cc:61 msgid "RMS" @@ -730,7 +695,7 @@ msgstr "Clasificación (ej. 16)" #: src/wx/audio_mapping_view.cc:316 msgid "Rc" -msgstr "" +msgstr "Rc" #: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284 #: src/wx/editable_list.h:66 @@ -738,23 +703,20 @@ msgid "Remove" msgstr "Quitar" #: src/wx/kdm_dialog.cc:70 -#, fuzzy msgid "Remove Cinema" -msgstr "Quitar" +msgstr "Quitar cine" #: src/wx/kdm_dialog.cc:77 -#, fuzzy msgid "Remove Screen" -msgstr "Quitar" +msgstr "Quitar pantalla" #: src/wx/repeat_dialog.cc:26 msgid "Repeat" msgstr "Repetir" #: src/wx/repeat_dialog.cc:24 -#, fuzzy msgid "Repeat Content" -msgstr "Seleccionar fichero de contenido" +msgstr "Repetir contenido" #: src/wx/content_menu.cc:50 msgid "Repeat..." @@ -770,25 +732,23 @@ msgstr "Continuar" #: src/wx/audio_mapping_view.cc:359 msgid "Right click to change gain." -msgstr "" +msgstr "Click derecho para cambiar la ganancia." #: src/wx/video_panel.cc:98 msgid "Right crop" msgstr "Recorte derecha" #: src/wx/audio_mapping_view.cc:300 -#, fuzzy msgid "Rs" -msgstr "s" +msgstr "Rs" #: src/wx/film_editor.cc:223 msgid "SMPTE" -msgstr "" +msgstr "SMPTE" #: src/wx/video_panel.cc:131 -#, fuzzy msgid "Scale to" -msgstr "Escalador" +msgstr "Redimensionar a" #: src/wx/video_panel.cc:313 #, c-format @@ -800,9 +760,8 @@ msgid "Scaler" msgstr "Escalador" #: src/wx/screen_dialog.cc:102 -#, fuzzy msgid "Select Certificate File" -msgstr "Seleccionar fichero de contenido" +msgstr "Seleccionar fichero de certificado" #: src/wx/kdm_dialog.cc:140 msgid "Send by email" @@ -810,7 +769,7 @@ msgstr "Enviar por email" #: src/wx/dolby_certificate_dialog.cc:47 msgid "Serial number" -msgstr "" +msgstr "Número de serie" #: src/wx/server_dialog.cc:28 msgid "Server" @@ -818,12 +777,11 @@ msgstr "Servidor" #: src/wx/doremi_certificate_dialog.cc:35 msgid "Server serial number" -msgstr "" +msgstr "Número de serie del servidor" #: src/wx/config_dialog.cc:499 -#, fuzzy msgid "Servers" -msgstr "Servidor" +msgstr "Servidores" #: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61 msgid "Set" @@ -839,7 +797,7 @@ msgstr "Mostrar audio..." #: src/wx/film_editor.cc:155 msgid "Signed" -msgstr "" +msgstr "Firmado" #: src/wx/audio_dialog.cc:71 msgid "Smoothing" @@ -847,12 +805,11 @@ msgstr "Suavizado" #: src/wx/timeline_dialog.cc:38 msgid "Snap" -msgstr "" +msgstr "Acoplar" #: src/wx/update_dialog.cc:43 -#, fuzzy msgid "Stable version " -msgstr "Tipo de contenido" +msgstr "Versión estable" #: src/wx/film_editor.cc:187 msgid "Standard" @@ -871,19 +828,16 @@ msgid "Subtitle Scale" msgstr "Escala del subtítulo" #: src/wx/subtitle_panel.cc:70 -#, fuzzy msgid "Subtitle Stream" -msgstr "Escala del subtítulo" +msgstr "Flujo de subtítulos" #: src/wx/subtitle_panel.cc:44 -#, fuzzy msgid "Subtitle X Offset" -msgstr "Desplazamiento del subtítulo" +msgstr "Desplazamiento del subtítulo en X" #: src/wx/subtitle_panel.cc:53 -#, fuzzy msgid "Subtitle Y Offset" -msgstr "Desplazamiento del subtítulo" +msgstr "Desplazamiento del subtítulo en Y" #: src/wx/subtitle_panel.cc:34 msgid "Subtitles" @@ -894,28 +848,24 @@ msgid "Supported by" msgstr "Soportado por" #: src/wx/config_dialog.cc:607 -#, fuzzy msgid "TMS" -msgstr "RMS" +msgstr "TMS" #: src/wx/config_dialog.cc:631 -#, fuzzy msgid "Target path" -msgstr "Ruta en el TMS" +msgstr "Ruta" #: src/wx/dci_metadata_dialog.cc:41 msgid "Territory (e.g. UK)" msgstr "Territorio (ej. ES)" #: src/wx/update_dialog.cc:48 -#, fuzzy msgid "Test version " -msgstr "Tipo de contenido" +msgstr "Versión en prueba" #: src/wx/about_dialog.cc:188 -#, fuzzy msgid "Tested by" -msgstr "Traducido por" +msgstr "Comprobado por" #: src/wx/content_menu.cc:223 msgid "" @@ -923,14 +873,16 @@ msgid "" "missing. Either try again with the correct content file or remove the " "missing content." msgstr "" +"El fichero(s) especificados no es el mismo que el ausente. Puedes probar de " +"nuevo con el fichero correcto o eliminar el contenido ausente." #: src/wx/hints_dialog.cc:97 msgid "There are no hints: everything looks good!" -msgstr "" +msgstr "No hay recomendaciones: ¡todo parece bien!" #: src/wx/film_viewer.cc:133 msgid "There is not enough free memory to do that." -msgstr "" +msgstr "No hay suficiente memoria para hacer eso." #: src/wx/servers_list_dialog.cc:48 msgid "Threads" @@ -945,9 +897,8 @@ msgid "Time" msgstr "Tiempo" #: src/wx/timeline_dialog.cc:32 -#, fuzzy msgid "Timeline" -msgstr "Tiempo" +msgstr "Línea de tiempo" #: src/wx/film_editor.cc:290 msgid "Timeline..." @@ -955,7 +906,7 @@ msgstr "Linea de tiempo..." #: src/wx/timing_panel.cc:35 msgid "Timing" -msgstr "" +msgstr "Tiempo" #: src/wx/video_panel.cc:109 msgid "Top crop" @@ -966,28 +917,24 @@ msgid "Translated by" msgstr "Traducido por" #: src/wx/timing_panel.cc:49 -#, fuzzy msgid "Trim from end" -msgstr "Recortar fotogramas" +msgstr "Recortar del final" #: src/wx/timing_panel.cc:46 -#, fuzzy msgid "Trim from start" -msgstr "Recortar fotogramas" +msgstr "Recortar del inicio" #: src/wx/audio_dialog.cc:55 src/wx/video_panel.cc:74 msgid "Type" msgstr "Tipo" #: src/wx/dolby_certificate_dialog.cc:148 -#, fuzzy msgid "Unexpected certificate filename form" -msgstr "Seleccionar fichero de contenido" +msgstr "Nombre inesperado del fichero de certificado" #: src/wx/screen_dialog.cc:62 -#, fuzzy msgid "Unknown" -msgstr "desconocido" +msgstr "Desconocido" #: src/wx/kdm_dialog.cc:93 msgid "Until" @@ -995,11 +942,11 @@ msgstr "Hasta" #: src/wx/film_editor.cc:286 msgid "Up" -msgstr "" +msgstr "Subir" #: src/wx/update_dialog.cc:27 msgid "Update" -msgstr "" +msgstr "Actualizar" #: src/wx/film_editor.cc:128 msgid "Use DCI name" @@ -1007,34 +954,31 @@ msgstr "Usar el nombre DCI" #: src/wx/config_dialog.cc:515 msgid "Use all servers" -msgstr "" +msgstr "Usar todos los servidores" #: src/wx/film_editor.cc:149 msgid "Use best" msgstr "Usar la mejor" #: src/wx/content_colour_conversion_dialog.cc:42 -#, fuzzy msgid "Use preset" -msgstr "Usar la mejor" +msgstr "Usar por defecto" #: src/wx/config_dialog.cc:635 -#, fuzzy msgid "User name" -msgstr "Usar el nombre DCI" +msgstr "Nombre de usuario" #: src/wx/audio_mapping_view.cc:308 msgid "VI" -msgstr "" +msgstr "VI" #: src/wx/video_panel.cc:67 msgid "Video" msgstr "Vídeo" #: src/wx/timing_panel.cc:57 -#, fuzzy msgid "Video frame rate" -msgstr "Velocidad DCP" +msgstr "Velocidad de imagen" #: src/wx/subtitle_panel.cc:39 msgid "With Subtitles" @@ -1054,6 +998,8 @@ msgid "" "You have %d files that look like they are VOB files from DVD. You should " "join them to ensure smooth joins between the files." msgstr "" +"Hay %d ficheros que parecen VOBs en el DVD. Deberías unirlos para asegurarte " +"transiciones suaves." #: src/wx/hints_dialog.cc:76 #, c-format @@ -1061,23 +1007,29 @@ msgid "" "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) " "projectors. Use 24 or 48 frames per second to be on the safe side." msgstr "" +"La velocidad de tu DCP (%d fas) puede causar problemas en algunos " +"proyectores (sobre todo antiguos). Utiliza 24 o 48 imágenes por segundo " +"para asegurarte." #: src/wx/hints_dialog.cc:66 msgid "" "Your DCP has an odd number of audio channels. This is very likely to cause " "problems on playback." msgstr "" +"Tu DCP tiene un número impar de canales de audio. Es muy probable que cause " +"problemas de reproducción." #: src/wx/hints_dialog.cc:70 msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " "projectors." msgstr "" +"Tu DCP tiene menos de 6 canales de audio. Esto puede causar problemas con " +"algunos proyectores." #: src/wx/timeline.cc:213 -#, fuzzy msgid "audio" -msgstr "Audio" +msgstr "audio" #: src/wx/audio_panel.cc:238 msgid "channels" @@ -1106,12 +1058,11 @@ msgstr "fijo" #: src/wx/repeat_dialog.cc:28 msgid "times" -msgstr "" +msgstr "veces" #: src/wx/timeline.cc:234 -#, fuzzy msgid "video" -msgstr "Vídeo" +msgstr "vídeo" #, fuzzy #~ msgid "Content channel" -- cgit v1.2.3 From 879afabeff6f8675c57e6c88fde8023fbc19f55a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 21 Apr 2014 20:37:43 +0100 Subject: Update to fr_FR translation from Thierry Journet. --- ChangeLog | 2 ++ src/lib/po/fr_FR.po | 2 +- src/tools/po/fr_FR.po | 2 +- src/wx/po/fr_FR.po | 32 ++++++++++++++++---------------- 4 files changed, 20 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 46865e635..890e59402 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * Update to es_ES translation from Manuel AC. + * Update to fr_FR translation from Thierry Journet. + 2014-04-17 Carl Hetherington * Fix update of the gain control when using the gain calculator diff --git a/src/lib/po/fr_FR.po b/src/lib/po/fr_FR.po index b96ca580d..b88099016 100644 --- a/src/lib/po/fr_FR.po +++ b/src/lib/po/fr_FR.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-31 16:10+0100\n" -"PO-Revision-Date: 2014-04-06 03:02+0100\n" +"PO-Revision-Date: 2014-04-18 22:51+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr_FR\n" diff --git a/src/tools/po/fr_FR.po b/src/tools/po/fr_FR.po index 91c0ef78e..b573e5b7d 100644 --- a/src/tools/po/fr_FR.po +++ b/src/tools/po/fr_FR.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-31 16:10+0100\n" -"PO-Revision-Date: 2014-04-06 03:07+0100\n" +"PO-Revision-Date: 2014-04-18 22:54+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr_FR\n" diff --git a/src/wx/po/fr_FR.po b/src/wx/po/fr_FR.po index 5c934fdc5..ee75de991 100644 --- a/src/wx/po/fr_FR.po +++ b/src/wx/po/fr_FR.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-31 16:10+0100\n" -"PO-Revision-Date: 2014-04-06 03:30+0100\n" +"PO-Revision-Date: 2014-04-18 22:50+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr_FR\n" @@ -107,7 +107,7 @@ msgstr "Ajouter..." #: src/wx/about_dialog.cc:107 msgid "Artwork by" -msgstr "Thème artistique par" +msgstr "Thème par" #: src/wx/audio_dialog.cc:33 src/wx/audio_panel.cc:40 msgid "Audio" @@ -205,7 +205,7 @@ msgstr "Canaux" #: src/wx/config_dialog.cc:137 msgid "Check for testing updates as well as stable ones" -msgstr "Recherche de mises à jour - version test et stables." +msgstr "Recherche toutes mises à jour : test et stables." #: src/wx/config_dialog.cc:133 msgid "Check for updates on startup" @@ -229,16 +229,16 @@ msgstr "Cinéma" #: src/wx/config_dialog.cc:561 msgid "Colour Conversions" -msgstr "Conversions couleurs" +msgstr "Conversions Couleurs" #: src/wx/content_colour_conversion_dialog.cc:34 #: src/wx/preset_colour_conversion_dialog.cc:30 src/wx/video_panel.cc:161 msgid "Colour conversion" -msgstr "Conversion colorimétrique" +msgstr "Espace Couleurs" #: src/wx/film_editor.cc:134 msgid "Container" -msgstr "Contenu" +msgstr "Format" #: src/wx/audio_mapping_view.cc:273 src/wx/film_editor.cc:85 msgid "Content" @@ -328,11 +328,11 @@ msgstr "Délais audio par défaut" #: src/wx/config_dialog.cc:335 msgid "Default container" -msgstr "Type de contenu par défaut" +msgstr "Format par défaut" #: src/wx/config_dialog.cc:339 msgid "Default content type" -msgstr "Type de contenu par défaut" +msgstr "Catégorie par défaut" #: src/wx/config_dialog.cc:365 msgid "Default creator" @@ -340,7 +340,7 @@ msgstr "Créateur par défaut" #: src/wx/config_dialog.cc:323 msgid "Default directory for new films" -msgstr "Dossier par défaut pour nouveaux films" +msgstr "Dossier par défaut pour les DCP" #: src/wx/config_dialog.cc:315 msgid "Default duration of still images" @@ -571,7 +571,7 @@ msgstr "Chargement depuis fichier..." #: src/wx/audio_mapping_view.cc:296 msgid "Ls" -msgstr "SG" +msgstr "Sr.G" #: src/wx/film_editor.cc:749 msgid "MISSING: " @@ -743,7 +743,7 @@ msgstr "Découpe droite" #: src/wx/audio_mapping_view.cc:300 msgid "Rs" -msgstr "SD" +msgstr "Sr.D" #: src/wx/film_editor.cc:223 msgid "SMPTE" @@ -836,11 +836,11 @@ msgstr "Flux de sous-titre" #: src/wx/subtitle_panel.cc:44 msgid "Subtitle X Offset" -msgstr "Position Horiz." +msgstr "Position Horizontale" #: src/wx/subtitle_panel.cc:53 msgid "Subtitle Y Offset" -msgstr "Position Vertic." +msgstr "Position Verticale" #: src/wx/subtitle_panel.cc:34 msgid "Subtitles" @@ -922,11 +922,11 @@ msgstr "Traduit par" #: src/wx/timing_panel.cc:49 msgid "Trim from end" -msgstr "Images coupées depuis la fin" +msgstr "Exclure à la fin" #: src/wx/timing_panel.cc:46 msgid "Trim from start" -msgstr "Images coupées depuis le début" +msgstr "Exclure au début" #: src/wx/audio_dialog.cc:55 src/wx/video_panel.cc:74 msgid "Type" @@ -982,7 +982,7 @@ msgstr "Vidéo" #: src/wx/timing_panel.cc:57 msgid "Video frame rate" -msgstr "Cadence images vidéo" +msgstr "Cadence vidéo" #: src/wx/subtitle_panel.cc:39 msgid "With Subtitles" -- cgit v1.2.3 From d19ba00f1995495977bdee206305c42a96eb0f57 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 25 Apr 2014 23:03:30 +0100 Subject: Put Piece class in its own file. --- src/lib/piece.cc | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib/piece.h | 65 +++++++++++++++++++++++++++++++++++++++++++ src/lib/player.cc | 66 ------------------------------------------- src/lib/player.h | 19 +++---------- src/lib/wscript | 1 + 5 files changed, 153 insertions(+), 81 deletions(-) create mode 100644 src/lib/piece.cc create mode 100644 src/lib/piece.h (limited to 'src') diff --git a/src/lib/piece.cc b/src/lib/piece.cc new file mode 100644 index 000000000..3c39ecfb8 --- /dev/null +++ b/src/lib/piece.cc @@ -0,0 +1,83 @@ +/* + Copyright (C) 2013-2014 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "piece.h" +#include "player.h" + +using boost::shared_ptr; + +Piece::Piece (shared_ptr c) + : content (c) + , video_position (c->position ()) + , audio_position (c->position ()) + , repeat_to_do (0) + , repeat_done (0) +{ + +} + +Piece::Piece (shared_ptr c, shared_ptr d) + : content (c) + , decoder (d) + , video_position (c->position ()) + , audio_position (c->position ()) + , repeat_to_do (0) + , repeat_done (0) +{ + +} + +/** Set this piece to repeat a video frame a given number of times */ +void +Piece::set_repeat (IncomingVideo video, int num) +{ + repeat_video = video; + repeat_to_do = num; + repeat_done = 0; +} + +void +Piece::reset_repeat () +{ + repeat_video.image.reset (); + repeat_to_do = 0; + repeat_done = 0; +} + +bool +Piece::repeating () const +{ + return repeat_done != repeat_to_do; +} + +void +Piece::repeat (Player* player) +{ + player->process_video ( + repeat_video.weak_piece, + repeat_video.image, + repeat_video.eyes, + repeat_done > 0, + repeat_video.frame, + (repeat_done + 1) * (TIME_HZ / player->_film->video_frame_rate ()) + ); + + ++repeat_done; +} + diff --git a/src/lib/piece.h b/src/lib/piece.h new file mode 100644 index 000000000..76df909ff --- /dev/null +++ b/src/lib/piece.h @@ -0,0 +1,65 @@ +/* + Copyright (C) 2013-2014 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef DCPOMATIC_PIECE_H +#define DCPOMATIC_PIECE_H + +#include "types.h" +#include "video_content.h" + +class Content; +class Decoder; +class Piece; +class Image; +class Player; + +struct IncomingVideo +{ +public: + boost::weak_ptr weak_piece; + boost::shared_ptr image; + Eyes eyes; + bool same; + VideoContent::Frame frame; + Time extra; +}; + +class Piece +{ +public: + Piece (boost::shared_ptr c); + Piece (boost::shared_ptr c, boost::shared_ptr d); + void set_repeat (IncomingVideo video, int num); + void reset_repeat (); + bool repeating () const; + void repeat (Player* player); + + boost::shared_ptr content; + boost::shared_ptr decoder; + /** Time of the last video we emitted relative to the start of the DCP */ + Time video_position; + /** Time of the last audio we emitted relative to the start of the DCP */ + Time audio_position; + + IncomingVideo repeat_video; + int repeat_to_do; + int repeat_done; +}; + +#endif diff --git a/src/lib/player.cc b/src/lib/player.cc index c4558f33f..7afe74831 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -46,72 +46,6 @@ using boost::shared_ptr; using boost::weak_ptr; using boost::dynamic_pointer_cast; -class Piece -{ -public: - Piece (shared_ptr c) - : content (c) - , video_position (c->position ()) - , audio_position (c->position ()) - , repeat_to_do (0) - , repeat_done (0) - {} - - Piece (shared_ptr c, shared_ptr d) - : content (c) - , decoder (d) - , video_position (c->position ()) - , audio_position (c->position ()) - , repeat_to_do (0) - , repeat_done (0) - {} - - /** Set this piece to repeat a video frame a given number of times */ - void set_repeat (IncomingVideo video, int num) - { - repeat_video = video; - repeat_to_do = num; - repeat_done = 0; - } - - void reset_repeat () - { - repeat_video.image.reset (); - repeat_to_do = 0; - repeat_done = 0; - } - - bool repeating () const - { - return repeat_done != repeat_to_do; - } - - void repeat (Player* player) - { - player->process_video ( - repeat_video.weak_piece, - repeat_video.image, - repeat_video.eyes, - repeat_done > 0, - repeat_video.frame, - (repeat_done + 1) * (TIME_HZ / player->_film->video_frame_rate ()) - ); - - ++repeat_done; - } - - shared_ptr content; - shared_ptr decoder; - /** Time of the last video we emitted relative to the start of the DCP */ - Time video_position; - /** Time of the last audio we emitted relative to the start of the DCP */ - Time audio_position; - - IncomingVideo repeat_video; - int repeat_to_do; - int repeat_done; -}; - Player::Player (shared_ptr f, shared_ptr p) : _film (f) , _playlist (p) diff --git a/src/lib/player.h b/src/lib/player.h index f7896d7d9..4368f48ba 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -29,6 +29,7 @@ #include "rect.h" #include "audio_merger.h" #include "audio_content.h" +#include "piece.h" class Job; class Film; @@ -38,21 +39,6 @@ class Piece; class Image; class Resampler; -/** @class Player - * @brief A class which can `play' a Playlist; emitting its audio and video. - */ - -struct IncomingVideo -{ -public: - boost::weak_ptr weak_piece; - boost::shared_ptr image; - Eyes eyes; - bool same; - VideoContent::Frame frame; - Time extra; -}; - /** A wrapper for an Image which contains some pending operations; these may * not be necessary if the receiver of the PlayerImage throws it away. */ @@ -75,6 +61,9 @@ private: Position _subtitle_position; }; +/** @class Player + * @brief A class which can `play' a Playlist; emitting its audio and video. + */ class Player : public boost::enable_shared_from_this, public boost::noncopyable { public: diff --git a/src/lib/wscript b/src/lib/wscript index a50216f6d..dc90e17f3 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -40,6 +40,7 @@ sources = """ kdm.cc json_server.cc log.cc + piece.cc player.cc playlist.cc ratio.cc -- cgit v1.2.3 From 588397fc600e888acf77375fe39c238ff2bf3649 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 25 Apr 2014 23:27:42 +0100 Subject: Collect player subtitle processing into a Subtitle class. --- src/lib/player.cc | 77 +++----------------------------------- src/lib/player.h | 16 +------- src/lib/subtitle.cc | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib/subtitle.h | 59 +++++++++++++++++++++++++++++ src/lib/wscript | 1 + 5 files changed, 174 insertions(+), 85 deletions(-) create mode 100644 src/lib/subtitle.cc create mode 100644 src/lib/subtitle.h (limited to 'src') diff --git a/src/lib/player.cc b/src/lib/player.cc index 7afe74831..d0653bc43 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -219,14 +219,14 @@ Player::process_video (weak_ptr weak_piece, shared_ptr image ) ); - if (_film->with_subtitles () && _out_subtitle.image && time >= _out_subtitle.from && time <= _out_subtitle.to) { + if (_film->with_subtitles () && _subtitle && _subtitle->out_image() && _subtitle->covers (time)) { Position const container_offset ( (_video_container_size.width - image_size.width) / 2, (_video_container_size.height - image_size.width) / 2 ); - pi->set_subtitle (_out_subtitle.image, _out_subtitle.position + container_offset); + pi->set_subtitle (_subtitle->out_image(), _subtitle->out_position() + container_offset); } @@ -466,7 +466,9 @@ Player::content_changed (weak_ptr w, int property, bool frequent) property == SubtitleContentProperty::SUBTITLE_SCALE ) { - update_subtitle (); + if (_subtitle) { + _subtitle->update (_film, _video_container_size); + } Changed (frequent); } else if ( @@ -574,74 +576,7 @@ Player::film_changed (Film::Property p) void Player::process_subtitle (weak_ptr weak_piece, shared_ptr image, dcpomatic::Rect rect, Time from, Time to) { - _in_subtitle.piece = weak_piece; - _in_subtitle.image = image; - _in_subtitle.rect = rect; - _in_subtitle.from = from; - _in_subtitle.to = to; - - update_subtitle (); -} - -void -Player::update_subtitle () -{ - shared_ptr piece = _in_subtitle.piece.lock (); - if (!piece) { - return; - } - - if (!_in_subtitle.image) { - _out_subtitle.image.reset (); - return; - } - - shared_ptr sc = dynamic_pointer_cast (piece->content); - assert (sc); - - dcpomatic::Rect in_rect = _in_subtitle.rect; - libdcp::Size scaled_size; - - in_rect.x += sc->subtitle_x_offset (); - in_rect.y += sc->subtitle_y_offset (); - - /* We will scale the subtitle up to fit _video_container_size, and also by the additional subtitle_scale */ - scaled_size.width = in_rect.width * _video_container_size.width * sc->subtitle_scale (); - scaled_size.height = in_rect.height * _video_container_size.height * sc->subtitle_scale (); - - /* Then we need a corrective translation, consisting of two parts: - * - * 1. that which is the result of the scaling of the subtitle by _video_container_size; this will be - * rect.x * _video_container_size.width and rect.y * _video_container_size.height. - * - * 2. that to shift the origin of the scale by subtitle_scale to the centre of the subtitle; this will be - * (width_before_subtitle_scale * (1 - subtitle_scale) / 2) and - * (height_before_subtitle_scale * (1 - subtitle_scale) / 2). - * - * Combining these two translations gives these expressions. - */ - - _out_subtitle.position.x = rint (_video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_scale ()) / 2))); - _out_subtitle.position.y = rint (_video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_scale ()) / 2))); - - _out_subtitle.image = _in_subtitle.image->scale ( - scaled_size, - Scaler::from_id ("bicubic"), - _in_subtitle.image->pixel_format (), - true - ); - - /* XXX: hack */ - Time from = _in_subtitle.from; - Time to = _in_subtitle.to; - shared_ptr vc = dynamic_pointer_cast (piece->content); - if (vc) { - from = rint (from * vc->video_frame_rate() / _film->video_frame_rate()); - to = rint (to * vc->video_frame_rate() / _film->video_frame_rate()); - } - - _out_subtitle.from = from + piece->content->position (); - _out_subtitle.to = to + piece->content->position (); + _subtitle = Subtitle (_film, _video_container_size, weak_piece, image, rect, from, to); } /** Re-emit the last frame that was emitted, using current settings for crop, ratio, scaler and subtitles. diff --git a/src/lib/player.h b/src/lib/player.h index 4368f48ba..5dad80ec7 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -30,6 +30,7 @@ #include "audio_merger.h" #include "audio_content.h" #include "piece.h" +#include "subtitle.h" class Job; class Film; @@ -142,20 +143,7 @@ private: boost::shared_ptr _black_frame; std::map, boost::shared_ptr > _resamplers; - struct { - boost::weak_ptr piece; - boost::shared_ptr image; - dcpomatic::Rect rect; - Time from; - Time to; - } _in_subtitle; - - struct { - boost::shared_ptr image; - Position position; - Time from; - Time to; - } _out_subtitle; + boost::optional _subtitle; #ifdef DCPOMATIC_DEBUG boost::shared_ptr _last_video; diff --git a/src/lib/subtitle.cc b/src/lib/subtitle.cc new file mode 100644 index 000000000..f348833b0 --- /dev/null +++ b/src/lib/subtitle.cc @@ -0,0 +1,106 @@ +/* + Copyright (C) 2013-2014 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "subtitle.h" +#include "subtitle_content.h" +#include "piece.h" +#include "image.h" +#include "scaler.h" +#include "film.h" + +using boost::shared_ptr; +using boost::dynamic_pointer_cast; +using boost::weak_ptr; + +Subtitle::Subtitle (shared_ptr film, libdcp::Size video_container_size, weak_ptr weak_piece, shared_ptr image, dcpomatic::Rect rect, Time from, Time to) + : _piece (weak_piece) + , _in_image (image) + , _in_rect (rect) + , _in_from (from) + , _in_to (to) +{ + update (film, video_container_size); +} + +void +Subtitle::update (shared_ptr film, libdcp::Size video_container_size) +{ + shared_ptr piece = _piece.lock (); + if (!piece) { + return; + } + + if (!_in_image) { + _out_image.reset (); + return; + } + + shared_ptr sc = dynamic_pointer_cast (piece->content); + assert (sc); + + dcpomatic::Rect in_rect = _in_rect; + libdcp::Size scaled_size; + + in_rect.x += sc->subtitle_x_offset (); + in_rect.y += sc->subtitle_y_offset (); + + /* We will scale the subtitle up to fit _video_container_size, and also by the additional subtitle_scale */ + scaled_size.width = in_rect.width * video_container_size.width * sc->subtitle_scale (); + scaled_size.height = in_rect.height * video_container_size.height * sc->subtitle_scale (); + + /* Then we need a corrective translation, consisting of two parts: + * + * 1. that which is the result of the scaling of the subtitle by _video_container_size; this will be + * rect.x * _video_container_size.width and rect.y * _video_container_size.height. + * + * 2. that to shift the origin of the scale by subtitle_scale to the centre of the subtitle; this will be + * (width_before_subtitle_scale * (1 - subtitle_scale) / 2) and + * (height_before_subtitle_scale * (1 - subtitle_scale) / 2). + * + * Combining these two translations gives these expressions. + */ + + _out_position.x = rint (video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_scale ()) / 2))); + _out_position.y = rint (video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_scale ()) / 2))); + + _out_image = _in_image->scale ( + scaled_size, + Scaler::from_id ("bicubic"), + _in_image->pixel_format (), + true + ); + + /* XXX: hack */ + Time from = _in_from; + Time to = _in_to; + shared_ptr vc = dynamic_pointer_cast (piece->content); + if (vc) { + from = rint (from * vc->video_frame_rate() / film->video_frame_rate()); + to = rint (to * vc->video_frame_rate() / film->video_frame_rate()); + } + + _out_from = from + piece->content->position (); + _out_to = to + piece->content->position (); +} + +bool +Subtitle::covers (Time t) const +{ + return _out_from <= t && t <= _out_to; +} diff --git a/src/lib/subtitle.h b/src/lib/subtitle.h new file mode 100644 index 000000000..7ba5912e0 --- /dev/null +++ b/src/lib/subtitle.h @@ -0,0 +1,59 @@ +/* + Copyright (C) 2013-2014 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include +#include +#include +#include "rect.h" +#include "types.h" + +class Film; +class Piece; +class Image; + +class Subtitle +{ +public: + + Subtitle (boost::shared_ptr, libdcp::Size, boost::weak_ptr, boost::shared_ptr, dcpomatic::Rect, Time, Time); + + void update (boost::shared_ptr, libdcp::Size); + + bool covers (Time t) const; + + boost::shared_ptr out_image () const { + return _out_image; + } + + Position out_position () const { + return _out_position; + } + +private: + boost::weak_ptr _piece; + boost::shared_ptr _in_image; + dcpomatic::Rect _in_rect; + Time _in_from; + Time _in_to; + + boost::shared_ptr _out_image; + Position _out_position; + Time _out_from; + Time _out_to; +}; diff --git a/src/lib/wscript b/src/lib/wscript index dc90e17f3..d4231fd30 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -53,6 +53,7 @@ sources = """ sndfile_content.cc sndfile_decoder.cc sound_processor.cc + subtitle.cc subtitle_content.cc subtitle_decoder.cc timer.cc -- cgit v1.2.3 From 9c1e0071803bf05f8c476d870e360c9e320ba696 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 25 Apr 2014 23:43:16 +0100 Subject: Fix subtitle display when the next subtitle is decoded before the previous one has finished; this requires that more than one subtitle be kept by the player. Reported-by: Matthias Damm --- ChangeLog | 5 +++++ src/lib/player.cc | 47 ++++++++++++++++++++++++++++++++++++----------- src/lib/player.h | 2 +- src/lib/subtitle.cc | 10 ++++++++++ src/lib/subtitle.h | 15 ++++++++++++++- 5 files changed, 66 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index aaed91983..d8307c4f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-04-25 Carl Hetherington + + * Fix subtitle display when the next subtitle is decoded before the previous + one has finished. + 2014-04-24 Carl Hetherington * Version 1.66.14 released. diff --git a/src/lib/player.cc b/src/lib/player.cc index d0653bc43..1bb2e7cf4 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -219,17 +219,34 @@ Player::process_video (weak_ptr weak_piece, shared_ptr image ) ); - if (_film->with_subtitles () && _subtitle && _subtitle->out_image() && _subtitle->covers (time)) { + if (_film->with_subtitles ()) { + for (list::const_iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) { + if (i->covers (time)) { + /* This may be true for more than one of _subtitles, but the last (latest-starting) + one is the one we want to use, so that's ok. + */ + Position const container_offset ( + (_video_container_size.width - image_size.width) / 2, + (_video_container_size.height - image_size.width) / 2 + ); + + pi->set_subtitle (i->out_image(), i->out_position() + container_offset); + } + } + } - Position const container_offset ( - (_video_container_size.width - image_size.width) / 2, - (_video_container_size.height - image_size.width) / 2 - ); + /* Clear out old subtitles */ + for (list::iterator i = _subtitles.begin(); i != _subtitles.end(); ) { + list::iterator j = i; + ++j; + + if (i->ends_before (time)) { + _subtitles.erase (i); + } - pi->set_subtitle (_subtitle->out_image(), _subtitle->out_position() + container_offset); + i = j; } - - + #ifdef DCPOMATIC_DEBUG _last_video = piece->content; #endif @@ -466,9 +483,10 @@ Player::content_changed (weak_ptr w, int property, bool frequent) property == SubtitleContentProperty::SUBTITLE_SCALE ) { - if (_subtitle) { - _subtitle->update (_film, _video_container_size); + for (list::iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) { + i->update (_film, _video_container_size); } + Changed (frequent); } else if ( @@ -576,7 +594,14 @@ Player::film_changed (Film::Property p) void Player::process_subtitle (weak_ptr weak_piece, shared_ptr image, dcpomatic::Rect rect, Time from, Time to) { - _subtitle = Subtitle (_film, _video_container_size, weak_piece, image, rect, from, to); + if (!image) { + /* A null image means that we should stop any current subtitles at `from' */ + for (list::iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) { + i->set_stop (from); + } + } else { + _subtitles.push_back (Subtitle (_film, _video_container_size, weak_piece, image, rect, from, to)); + } } /** Re-emit the last frame that was emitted, using current settings for crop, ratio, scaler and subtitles. diff --git a/src/lib/player.h b/src/lib/player.h index 5dad80ec7..4d911a83b 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -143,7 +143,7 @@ private: boost::shared_ptr _black_frame; std::map, boost::shared_ptr > _resamplers; - boost::optional _subtitle; + std::list _subtitles; #ifdef DCPOMATIC_DEBUG boost::shared_ptr _last_video; diff --git a/src/lib/subtitle.cc b/src/lib/subtitle.cc index f348833b0..0d18861c4 100644 --- a/src/lib/subtitle.cc +++ b/src/lib/subtitle.cc @@ -97,6 +97,8 @@ Subtitle::update (shared_ptr film, libdcp::Size video_container_size _out_from = from + piece->content->position (); _out_to = to + piece->content->position (); + + check_out_to (); } bool @@ -104,3 +106,11 @@ Subtitle::covers (Time t) const { return _out_from <= t && t <= _out_to; } + +void +Subtitle::check_out_to () +{ + if (_stop && _out_to > _stop.get ()) { + _out_to = _stop.get (); + } +} diff --git a/src/lib/subtitle.h b/src/lib/subtitle.h index 7ba5912e0..c74f5c1b9 100644 --- a/src/lib/subtitle.h +++ b/src/lib/subtitle.h @@ -19,6 +19,7 @@ #include #include +#include #include #include "rect.h" #include "types.h" @@ -34,8 +35,15 @@ public: Subtitle (boost::shared_ptr, libdcp::Size, boost::weak_ptr, boost::shared_ptr, dcpomatic::Rect, Time, Time); void update (boost::shared_ptr, libdcp::Size); + void set_stop (Time t) { + _stop = t; + check_out_to (); + } bool covers (Time t) const; + bool ends_before (Time t) const { + return _out_to < t; + } boost::shared_ptr out_image () const { return _out_image; @@ -45,7 +53,9 @@ public: return _out_position; } -private: +private: + void check_out_to (); + boost::weak_ptr _piece; boost::shared_ptr _in_image; dcpomatic::Rect _in_rect; @@ -56,4 +66,7 @@ private: Position _out_position; Time _out_from; Time _out_to; + + /** Time at which this subtitle should stop (overriding _out_to) */ + boost::optional