domingo, 26 de septiembre de 2010

Compilar frei0r

 frei0r es un conjunto de filtros de vídeo. Efectos visuales y tal.

Para compilarlo en Cygwin, necesitaremos los paquetes gcc4-core, gcc4-g++, cmake.

Nos bajamos el código fuente, y lo desempaquetamos:
wget http://www.piksel.no/frei0r/frei0r-plugins-1.2.tar.gz
tar xvf frei0r-plugins-1.2.tar.gz


Se puede construir usando GNU autotools ( ./configure && make ) or CMake ( cmake . && make ).

Usamos CMake. El primer problema es que la versión del paquete cmake de Cygwin es 2.6, así que cambio la primera línea de CMakeLists.txt a esto:
cmake_minimum_required (VERSION 2.6)

Construímos los "makefiles":
CFLAGS=-march=core2 cmake .

Y a compilar. Como tengo un Core2, pues lo aprovechamos:
make -j 2

Para instalarlo:
make install

Y, como se han olvidado, también:
cp -p include/frei0r.h /usr/local/include/

Desde el 24-sep-2010, (SVN r25165), ffmpeg permite usar filtros de frei0r

Para construir ffmpeg con soporte para frei0r:
./configure --enable-frei0r

Antes de usar los filtros, conviene avisar dónde están:
FREI0R_PATH=/usr/local/lib/frei0r-1

Ejemplo de uso de un filtro:
./ffmpeg -i in.avi -vf "frei0r=water.dll:3.0:y:y:y:y:y:y" -y out.avi

domingo, 19 de septiembre de 2010

Compilar para Windows desde Cygwin (IV)

Ya están disponibles en Cygwin los paquetes para compilación cruzada preparados por el projecto MinGW-w64, que generan código para Windows de 32 y de 64 bits.

Si queremos compilar ffmpeg para Windows de 32 bits, nos bajamos los paquetes:
mingw64-i686-binutils, mingw64-i686-gcc-core, mingw64-i686-headers, mingw64-i686-pthreads, mingw64-i686-runtime

La invocación de configure queda así:
./configure --enable-memalign-hack --arch=x86 --target-os=mingw32 --enable-cross-compile --cross-prefix=i686-w64-mingw32- --disable-shared --enable-static --disable-dxva2


Si queremos compilar ffmpeg para Windows de 64 bits, nos bajamos los paquetes:
mingw64-x86_64-binutils, mingw64-x86_64-gcc-core, mingw64-x86_64-headers, mingw64-x86_64-pthreads, mingw64-x86_64-runtime

La invocación de configure es ahora:
./configure --arch=x86_64 --target-os=mingw32 --enable-cross-compile --cross-prefix=x86_64-w64-mingw32- --disable-shared --enable-static --disable-dxva2

Lo de --disable-dxva2 es porque no uso la aceleración DXVA2 al decodificar h264.
DXVA 2.0 necesita Vista como mínimo (-D_WIN32_WINNT=0x0600), y activar las macros para que C maneje los objetos que normalmente se acceden desde C++ (-DCOBJMACROS), así que, si la queréis, usad --extra-cflags='-DCOBJMACROS -D_WIN32_WINNT=0x0600'.

sábado, 11 de septiembre de 2010

Ojo con el punto y la coma

Los anglosajones usan el punto para separar decimales. Los españoles usamos la coma.
De vez en cuando, hay algún programa (suelen ser los que importan datos en CSV) que pide ir al Panel de Control y cambiar el separador de decimales de coma a punto.

Ojo, porque este acto, en apariencia inocente, confunde de mala manera a algunos programas escritos chapuceramente. Por ejemplo, al Administrador de Tareas de Vista:

A la izquierda el separador de decimales es coma, y a la derecha es punto
O igual es que así los programas consumen mil veces menos memoria ...

viernes, 3 de septiembre de 2010

Mostrar entradas recientes

Encontré un JavaScript que muestra las entradas más recientes de una categoría:


<script type="text/javascript">
function recentpostslist(json) {
 document.write('<ul>');
 for (var i = 0; i < json.feed.entry.length; i++)
 {
    for (var j = 0; j < json.feed.entry[i].link.length; j++) {
      if (json.feed.entry[i].link[j].rel == 'alternate') {
        break;
      }
    }
var entryUrl = "'" + json.feed.entry[i].link[j].href + "'";//bs
var entryTitle = json.feed.entry[i].title.$t;
var item = "<li>" + "<a href="+ entryUrl + '" target="_blank">' + entryTitle + "</a> </li>";
 document.write(item);
 }
 document.write('</ul>');
 }
</script>
<script src="http://lineadecomandos.blogspot.com/feeds/posts/summary/-/awk?max-results=999&amp;alt=json-in-script&amp;callback=recentpostslist">
</script>



Este código se puede usar dentro de una entrada (decid al editor que muestre HTML literalmente). Por ejemplo, aquí listo mis entradas sobre awk:




También se puede poner en un gadget HTML/Javascript.