Como obter e compilar o Ginga-NCL (versão C++)
Ginga-NCL versão C++ é uma implementação de alto desempenho, um protótipo ideal para embarque em set-top boxes comerciais, caracterizados por baixas capacidades de processamento e armazenamento. Exatamente por isso, Ginga-NCL possui pré-requisitos avançados normalmente não encontrados em sistemas desktop. Assim, recomendamos o procedimento descrito neste Wiki apenas para usuários Linux avançados, com experiência em compilação de kernel e administração de serviços.
Pré-requisito para obtenção do código:
Como obter os pacotes Ginga-NCL
O código-fonte Ginga-NCL está disponível por meio do repositório Ginga no SVN do Portal do Software Público Brasileiro. Os comandos a seguir disparam a obtenção do código:
svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/telemidia-util-cpp/trunk telemidia-util-cpp svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/telemidia-links-cpp/trunk telemidia-links-cpp svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/gingacc-cpp/trunk gingacc-cpp svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/ncl30-cpp/trunk ncl30-cpp svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/gingancl-cpp/trunk gingancl-cpp svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/ginga-cpp/trunk ginga-cpp svn co --username SeuEmail@Provedor.com http://svn.softwarepublico.gov.br/svn/ginga/gingalssm-cpp/trunk gingalssm-cpp
Substitua SeuEmail@Porvedor.com pelo e-mail usado por você para se registrar na Comunidade Ginga.
Principais Pré-requisitos para compilação e instalação
Cada pacote possui individualmente uma série de dependências a serem satisfeitas antes de sua compilação e instalação. Os pré-requisitos listados nesta seção são considerados críticos dada a dificuldade de instalação/configuração e por serem dependências em comum para todos os pacotes.
- Linux Kernel >= 2.6.13 com framebuffer habilitado e operante (FrameBuffer How-To)
- DirectFB = 1.0.1 funcionando corretamente (DirectFB)
- directfb-examples = 1.0.1 funcionando corretamente (DirectFB)
- DirectFB-extra = 1.0.0 (DirectFB) - OBS: Dentro da pasta "interfaces" modificar os arquivos Makefile.am de forma que todos os LIBADD's das interfaces contenham a variável $(DFB_LIBS). Por exemplo: libidirectfbvideoprovider_xine_la_LIBADD = $(DFB_LIBS) $(XINE_LIBS)
- FusionSound? = 1.0.0 (DirectFB) - OBS: Dentro da pasta "interfaces" modificar os arquivos Makefile.am de forma que todos os LIBADD's das interfaces contenham a variável $(DFB_LIBS). Por exemplo: libifusionsoundmusicprovider_mad_la_LIBADD = $(DFB_LIBS) $(MAD_LIBS)
Não prossiga sem que os exemplos df_dok e df_andi estejam funcionando corretamente.
Como compilar os pacotes Ginga-NCL
Antes de iniciar a compilação, certifique-se que as variáveis de ambiente necessárias estão presentes e inicializadas corretamente. Os valores iniciais dessas variáveis podem ser atribuídos por meio dos seguintes comandos:
$ export LD_LIBRARY_PATH=/usr/local/lib/lua/5.1/socket:/usr/local/lib/ginga:/usr/local/lib/ginga/adapters:/usr/local/lib/ginga/cm:/usr/local/lib/ginga/converters:/usr/local/lib/ginga/ic:/usr/local/lib/ginga/iocontents:/usr/local/lib/ginga/players:/usr/local/lib/ginga/dp:/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/lib:/lib64:/lib:/usr/kerberos/lib $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
A variável de ambiente PKG_CONFIG_PATH deve estar configurada antes mesmo da compilação do DirectFB, como pré-requisito.
Todos os pacotes contêm um arquivo README que descreve as dependências e comandos para a compilação. Tais informações também estão neste How-To, logo abaixo, para cada pacote. Siga a ordem de pacotes a seguir para compilação e instalação:
telemidia-util-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- libpthread
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
telemidia-links-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- directfb = 1.0.1 (http://www.directfb.org)
- libtiff
- libjpeg
- libpng
- libz
- libpthread
- libssl
- libcrypto
- libgssapi_krb5
- libkrb5
- libcom_err
- libk5crypto
- libresolv
- libgpm
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh --enable-graphics --with-directfb --enable-javascript --without-x --without-sdl $ make $ make install
gingacc-cpp
gingacc-cm
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- expat >= 1.95 (http://expat.sourceforge.net)
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-system
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- libpng
- libjpg
- libmad
- *faad2 (./configure --with-mp4v2)
- *ffmpeg (./configure --enable-shared --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaad --enable-postproc)
- *xine-lib >= 1.1.17 (./configure --enable-faad --disable-ffmpeg-uncommon-codecs --with-external-ffmpeg)
- MPlayer essential >= 20061022 (http://www2.mplayerhq.hu)
- fusionsound >= 1.0.0 (http://www.directfb.org)
- directfb >= 1.0.1 (http://www.directfb.org)
- directfb-extra >=1.0 (http://www.directfb.org)
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-ic
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- curl >= 7.16 (http://curl.haxx.se/)
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-um
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-ic (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-player
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- directfb = 1.0.1 (http://www.directfb.org)
- lua >= 5.1.2 (http://www.lua.org)
- *luasocket >= 2.0 (http://luaforge.net/projects/luasocket/)
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- telemidia-links-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-system (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-tuner
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- video4linux/headers >= 5
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-tsparser
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-tuner (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-dataprocessing
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-tsparser (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-contextmanager
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- lua >= 5.1.2 (http://www.lua.org)
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-system (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingacc-multidevice
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-system (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
ncl30-cpp
ncl30
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
ncl30-converter
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- xerces-c >= 2.7.0 (http://xerces.apache.org/xerces-c)
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingancl-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- ncl30 (from ncl30-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/ncl30-cpp)
- ncl30-converter (from ncl30-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/ncl30-cpp)
- gingacc-system (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-ic (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-player (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-contextmanager (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh $ make $ make install
gingalssm-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- ncl30 (from ncl30-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/ncl30-cpp)
- ncl30-converter (from ncl30-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/ncl30-cpp)
- gingacc-system (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-player (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingancl >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingancl-cpp)
- gingacc-tuner (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-tsparser (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-dataprocessing (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ chmod 755 ./autogen.sh $ ./autogen.sh --enable-tuner --enable-tsparser --enable-dataprocessing $ make $ make install
ginga-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- gingacc-cm (from gingacc-cpp) >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingancl >= 0.11.1 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingancl-cpp)
Compilando:
$ ./autogen.sh $ make $ make install
Utilizando o Ginga-NCL versão C++
Para apresentar um documento NCL a partir de um arquivo, use o seguinte comando:
$ /usr/local/sbin/ginga --ncl /caminho/para/arquivo.ncl
Para apresentar um fluxo de transporte MPEG-2 transmitido por unicast UDP e cujo fluxo de dados é compatível com o SBTVD-T, edite o arquivo /usr/local/etc/ginga/files/tuner/tuner.ini e coloque o IP do servidor do fluxo de transporte. Em seguida, use o comando abaixo:
$ /usr/local/sbin/ginga
Attachments
- xine-lib-1.1.17-headers-thiz.patch (17.6 kB) -
Patch para compatibilizar headers da xine-lib com compilacao em C++
, adicionado por moreno@telemidia.puc-rio.br em 12/24/09 15:10:56.