Archivo por meses: noviembre 2007

DeVeDe 3.4

Ayer me tuve que quedar hasta las tantas corrigiendo un par de detalles que quedaban en DeVeDe, pero hoy, por fin, he podido lanzar la versión 3.4. Aparte de las pequeñas novedades (poder usar sonido 5.1 y generar DVDs con GOPs de 12 fotogramas para mejorar la compatibilidad) y errores corregidos (no se podía previsualizar la película si se convertía a DIVX, o no generaba bien las imágenes VCD), el principal cambio ha sido el código: por fin está limpito y ordenado, con lo que añadir nuevas cosas será una bicoca 🙂

Y la primera cosa que tengo que añadir en la próxima versión será el poder mezclar vídeos con diferentes relaciones de aspecto en el mismo disco. En efecto, a última hora de ayer descubrí que si se mete un vídeo con relación de aspecto clásica (4:3) en el mismo título que un vídeo WideScreen (16:9), ambos se verán con el mismo aspecto. Se trata de una limitación del estándar DVD. La solución consiste en meterlos en titlesets diferentes. Por desgracia, no es posible saltar directamente de un titleset a otro, por lo que implementarlo directamente en DeVeDe rompería la posibilidad de saltar de un título al siguiente, o al anterior, etc.

Una solución que probé fue añadir la opción jumppad en el XML de DVDAuthor. Esa opción añade automáticamente algo de código que permite saltar desde cualquier parte del DVD a cualquier parte, sin las limitaciones del estándar. Funcionaba bien, pero para asegurarme rebusqué en google y descubrí que, en ciertos casos, puede romper la compatibilidad con algunos reproductores. En la misma página se explicaban algunos métodos para conseguir lo mismo «manualmente» (básicamente, añadir un menú virtual con una función que salte al título que se le pase en un registro). Por desgracia es algo demasiado complejo como para implementar sin haberlo probado exhaustivamente, así que no irá hasta la próxima versión.

Otros cambios que quiero añadir son, por ejemplo, el soporte de matrices de codificación alternativas, permitir múltiples subtítulos, o poder elegir la pista de audio que se desee cuando el video original tiene varias.

Bugs y trancazos

Parece que estoy incubando algo. Espero que sea un simple resfriado y no una gripe. En este momento, después de tomarme una aspirina, ya estoy mejor, por eso aprovecho para añadir una nueva entradilla aquí.

Hace unos días, mientras ultimaba la nueva versión de DeVeDe, encontré un molesto bug en el widget Gtk.FileChooserButton; en concreto en el método set_filename(). Cuando el usuario pulsa el botón Propiedades para cambiar las propiedades de una película (tasa binaria, resolución…), uso ese método para rellenar dicho FileChooserButton con la ruta completa del archivo correspondiente; sin embargo, a veces (no siempre) fallaba, quedando el widget vacío. Tras hacer varias pruebas llegué a la conclusión de que era totalmente aleatorio: no dependía de la longitud del nombre, ni del directorio en que se encontrase, ni del número de niveles… el mismo archivo a veces aparecía correctamente en el widget y otras veces no. Con Ubuntu 7.04 (que usa GTK 2.10) dicho fallo no ocurría (que yo recordase, al menos).

Dado que no tenía claro si el error estaba en GTK o en los bindings para Python (PyGTK), durante el fin de semana hice un pequeño programa de prueba en C. El resultado es que, efectivamente, el error es de GTK. Además probé el mismo código en una Ubuntu 7.04 y, tal y como sospechaba, no falla (por lo que vi en la lista de cambios de GTK 2.10 a 2.12, los desarrolladores hicieron muchas mejoras en la clase FileChooser). El problema realmente gordo es que todos los intentos por esquivar el problema han fallado, lo que significa que mientras no lo corrijan, DeVeDe no funcionará correctamente 🙁

De momento he notificado el bug y he añadido una nota en la FAQ de DeVeDe. Mañana o pasado (cuando la cabeza deje de darme vueltas) publicaré la nueva versión.

No hay dos sin tres

Nueva versión de GtkPSproc. Algo pasa con Cups, que se empeña en dar error al usar lpadmin para crear una nueva impresora si se especifica un fichero PPD. Afortunadamente GtkPSproc funciona bien sin él, por lo que lo he eliminado, de manera que reciba el PostScript original directamente.

Otra cosa que he descubierto es que el PPD para impresora PostScript genérica creado por FooMatic no pasa la prueba de cupstestppd. Parece que no le gusta que se especifique un parámetro por defecto con el nombre default.

Y por último, parece que python-fam no funciona bien con Python 2.5 en algunos equipos, así que he decidido sustituirlo por python-gamin, que se supone que es lo que se usa hoy en día.

De todas maneras, el código actual de GtkPSproc está demasiado sucio, así que estoy considerando reescribirlo en condiciones (en python, por supuesto), igual que he hecho con DeVeDe. De momento estoy rehaciendo la interfaz con Glade-3, porque no se que ocurre que si cargo el fichero XML de la vieja interfaz (creado con Glade-2) y modifico cualquier cosa, dejan de funcionar los eventos en el programa, como si no ejecutase el signal_autoconnect(). Supongo que será alguna incompatibilidad rara, no se.

Y ya que hablo de DeVeDe, hay noticia: en cuanto reciba los tres ficheros de traducciones que faltan lanzaré la versión 3.4, con soporte completo de sonido 5.1, aunque la verdadera novedad de esta versión es que, por fin, terminé de refactorizar todo el código y ahora ya se puede mirar para él sin sentir verguenza ajena; y lo que es más importante: ahora es extremadamente fácil añadir nuevas opciones de codificación. Espero que en las nuevas versiones se empiece a notar ésto.

¡Tenemos un problema!

A veces los fallos se quedan muy, pero que muy escondidos. Así, la última versión de GtkPSproc tenía uno garrafal que impedía por completo su uso. ¿Y como se me pudo colar? Pues porque sólo aparecía cuando no había un fichero de configuración en la cuenta.

Lo increible es que no me lo comunicaron hasta ayer, cuando esa versión tiene casi un año…