Como obter e compilar o Ginga-NCL (versão C++)
Ginga-NCL versão C++ é uma implementação de alto desempenho, pronta 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
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.0 funcionando corretamente (DirectFB)
- directfb-examples = 1.0.0 funcionando corretamente (DirectFB)
Não prossiga sem que os exemplos df_dok e df_andi estejam funcionando corretamente.
- Crie um diretório denominado /misc, onde o binário do Ginga-NCL será instalado. Algumas distribuições Linux já incluem o /misc em sua árvore de diretórios e podem usá-lo como ponto de montagem automática do serviço autofs. Verifique se o arquivo /etc/auto.master possui alguma entrada referente ao /misc. Caso afirmativo, comente-a e reinicie o serviço autofs antes de prosseguir.
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/ginga:/usr/local/lib:/usr/lib:/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:
$ ./autogen.sh $ make $ make install
telemidia-links-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- directfb = 1.0 (http://www.directfb.org)
- libtiff
- libjpeg
- libpng
- libz
- libpthread
- libssl
- libcrypto
- libgssapi_krb5
- libkrb5
- libcom_err
- libk5crypto
- libresolv
- libgpm
Compilando:
$ ./autogen.sh --enable-graphics --with-directfb --enable-javascript --without-x --without-sdl $ make $ make install
gingacc-cpp
gingacc-io
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- directfb = 1.0 (http://www.directfb.org)
- telemidia-util-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
Compilando:
$ ./autogen.sh $ make $ make install
gingacc-player
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- directfb = 1.0 (http://www.directfb.org)
- lua >= 5.1.2 (http://www.lua.org)
- telemidia-util-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-io (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- telemidia-links-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- libpng
- libjpg
- libmad
- xine-lib >= 1.1.7 (http://www.xinehq.de)
- essential >= 20061022 (http://www.xinehq.de)
- fusionsound >= 1.0.0 (http://www.directfb.org)
- directfb-extra >=1.0 (http://www.directfb.org)
Compilando:
$ ./autogen.sh $ make $ make install
gingacc-tuner
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
Compilando:
$ ./autogen.sh $ make $ make install
gingacc-tsparser
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-tuner (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ ./autogen.sh $ make $ make install
gingacc-dataprocessing
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- gingacc-tsparser (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-tsparser)
$ ./autogen.sh $ make $ make install
ncl30-cpp
ncl30
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
Compilando:
$ ./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.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
Compilando:
$ ./autogen.sh $ make $ make install
gingancl-cpp
Pré-requisitos:
- libtool >= 1.3.4
- autoconf >= 2.13
- automake >= 1.4
- telemidia-util-cpp >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/telemidia-util-cpp)
- ncl30 (from ncl30-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/ncl30-cpp)
- ncl30-converter (from ncl30-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/ncl30-cpp)
- gingacc-io (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-player (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-tuner (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-tsparser (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
- gingacc-dataprocessing (from gingacc-cpp) >= 0.9.28 (http://svn.softwarepublico.gov.br/trac/ginga/browser/gingacc-cpp)
Compilando:
$ ./autogen.sh --enable-tuner --enable-tsparser --enable-dataprocessing $ make $ make install
Utilizando o Ginga-NCL versão C++
Para apresentar um documento NCL a partir de um arquivo, use o seguinte comando:
$ /misc/gingaNcl --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 /misc/unicast.ini e coloque o IP do servidor do fluxo de transporte. Em seguida, use o comando abaixo:
$ /misc/gingaNcl
Mais informações
Há dicas importantes sobre como usar o Ginga-NCL versão C++ no How-To sobre o Set-top Box Virtual. Consulte a configuração do Linux instalado no Set-top Box Virtual para possíveis dúvidas.