Ginga-NCL no Ubuntu 10.04

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. O objetivo deste artigo é mostrar pontos chave para concluir com sucesso a instalação do Ginga-NCL.

[ Hits: 31.975 ]

Por: Frederico Martins Pedroso Júnior em 20/10/2010 | Blog: https://github.com/fredpedroso


Instalar Ginga-NCL



Como o meu objetivo é apenas preparar o Ubuntu para a instalação e mostrar soluções de possíveis erros que podem aparecer, recomendo que sigam o tutorial passando os parâmetros corretamente:

Solução de possíveis erros durante instalação Ginga-NCL

gingacc-cpp/gingacc-system

Erro:

from ../../../../../include/io/interface/content/video/XineVideoProvider.h:69,
from XineVideoProvider.cpp:52:
/usr/local/include/xine/scratch.h:36: error: expected "," or "..." before "this"
/usr/local/include/xine/scratch.h:36: error: format string argument not a string type
/usr/local/include/xine/scratch.h:38: error: expected "," or "..." before "this"
/usr/local/include/xine/scratch.h:40: error: expected "," or "..." before "this"
In file included from /usr/local/include/xine/xine_internal.h:67,
                 from ../../../../../include/io/interface/content/video/XineVideoProvider.h:69,
                 from XineVideoProvider.cpp:52:
/usr/local/include/xine/broadcaster.h:33: error: expected "," or "..." before "this"
/usr/local/include/xine/broadcaster.h:34: error: expected "," or "..." before "this"
In file included from ../../../../../include/io/interface/content/video/XineVideoProvider.h:69,
                 from XineVideoProvider.cpp:52:
/usr/local/include/xine/xine_internal.h:486: error: expected "," or "..." before "this"
make[2]: ** [XineVideoProvider.o] Erro 1
make[2]: Saindo do diretório `/home/leonardo/Ginga/gingacc-cpp/gingacc-
system/src/io/interface/content/video'
make[1]: ** [all-recursive] Erro 1
make[1]: Saindo do diretório `/home/leonardo/Ginga/gingacc-cpp/gingacc-system'
make: ** [all] Erro 2


Solução:

Aplicar patch:

wget http://svn.softwarepublico.gov.br/trac/ginga/attachment/wiki/Building_Wiki_GingaNCL/xine-lib-1.1.17-headers-thiz.patch?format=raw
sudo mv xine-lib-1.1.17-headers-thiz.patch /usr/local/include/xine/
$ cd /usr/local/include/xine/
$ patch -p0 < /usr/local/include/xine/xine-lib-1.1.17-headers-thiz.patch


gingacc-cpp/gingacc-ic

Erro:


/usr/include/bits/fcntl2.h:51: error: call to "__open_missing_mode" declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: ** [CurlInteractiveChannel.o] Erro 1
make[2]: Saindo do diretório `/home/fredim/ativa/settopbox/ginga-ncl/gingacc-cpp/gingacc-ic/src/curlic'
make[1]: ** [all-recursive] Erro 1
make[1]: Saindo do diretório `/home/fredim/ativa/settopbox/ginga-ncl/gingacc-cpp/gingacc-ic'
make: ** [all] Erro 2


* O próprio erro indica onde e qual arquivo, este erro no O_CREAT é bastante comum.

Solução:

Antes:

fd = open(localUri.c_str(), O_CREAT | O_WRONLY | O_LARGEFILE);

Depois:

fd = open(localUri.c_str(), O_CREAT | O_WRONLY | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);

gingacc-cpp/gingacc-player

Erro:

../include/IPlayer.h:94: error: "int64_t" does not name a type.


Solução:

No arquivo gingacc-player/include/IPlayer.h inclua a seguinte linha no cabeçalho:

#include <stdint.h>

Erro:

...../usr/include/bits/fcntl2.h:51: error: call to "__open_missing_mode" declared with attribute error:
open with O_CREAT in second argument needs 3 arguments


Solução:

sudo ln -s /usr/local/lib/lua/5.1/socket/core.so /usr/local/lib/lua/5.1/socket/libcore.so

gingacc-cpp/gingacc-tuner

Erro:


providers/frontends/isdbt/ISDBTFrontend.cpp:173: error: "DTV_ISDBT_PARTIAL_RECEPTION" was not declared in this scope


Solução:

wget http://linuxtv.org/hg/v4l-dvb/archive/929298149eba.tar.bz2
tar -xvzf v4l-dvb-929298149eba.tar.bz2
$ cd v4l-dvb-929298149eba
$ make config


// Modifique a seguinte linha no arquivo v4l/.config

Antes:

CONFIG_DVB_FIREDTV=m

Depois:

CONFIG_DVB_FIREDTV=n

make
$ sudo make install
$ sudo cp linux/include/linux/dvb/* /usr/include/linux/dvb


Obs.: O mesmo erro pode acontecer em outros pacotes e a solução será a mesma.

Considerações finais

Neste artigo encontram-se passos para concluir com sucesso a instalação do Ginga-NCL no Ubuntu, coloquei também as soluções de todos os erros que aconteceram comigo.

Por eu ter ficado exatamente 15 dias pelejando para conseguir instalar o Ginga, achei interessante compartilhar.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Interatividade
   3. FrameBuffer
   4. DirectFB e complementos
   5. Instalar Ginga-NCL
Outros artigos deste autor

Segurança com Iptables

Leitura recomendada

Instalando a DD-WRT em roteadores Linksys WR54G*

NFS simples e fácil usando Mandriva e Kurumin

Instalação ZABBIX Proxy CentOS/MySQL

Instalando o Gnome-2.20.0 no Slacware 12

APTonCD - Seu repositório portátil

  
Comentários
[1] Comentário enviado por martin_riggs em 21/10/2010 - 12:57h

Gostei bastante do seu artigo, eu estou terminando meu TCC agora, com uma aplicação toda em NCL. Utilizo o Linux Ubuntu e nele instalei o VMware para usar a máquina virtual Fedora com o Ginga. Para executar os comandos via terminal utilizo o Putty, e para copiar os arquivos utilizo o Gigolo. Para desenvolver uso o Eclipse.

Pelo que vi, seguindo o seu artigo, podemos ter o Ginga rodando direto no OS instalado, sem necessidade da VM, e uso do SSH e SFTP, isso seria bastante útil, e agilizaria o processo de desenvolvimento. Estou no trabalho e não deu para ler minuciosamente, mas assim que eu puder vou realizar estes passos para testar.

Parabéns pelo artigo, e se já desenvolve para TV Digital podemos trocar umas idéias.

Abraços.

Bruno Riggs
[email protected]

[2] Comentário enviado por fredim em 22/10/2010 - 11:23h

- martin_riggs

Eu tive a necessidade de parar de fazer todo este processo que você citou, e é exatamente isso que este artigo explica, como instalar o Ginga-NCL no próprio OS.
Lembrando que o Ginga pode ser instalado em qualquer distribuição Linux.


Att

[3] Comentário enviado por martin_riggs em 22/10/2010 - 11:40h

Fredim

Por experiência, você sabe se ocupa muito espaço no HD, e se demanda muita memória? Pergunto isso por que possuo dois equipamentos em casa, sendo um antigo.


Abraços.

Bruno Riggs
[email protected]

[4] Comentário enviado por fredim em 23/10/2010 - 13:54h

- martin_riggs

Se tiver com problema de disco recomendo utilizar o ubuntu-server (não chegará a 1Gb), e em relação à demanda de memória, isso vai depender do aplicativo.
Aplicativos com stream, videos HD etc ... vai exigir um pouco mais.


Att

[5] Comentário enviado por martin_riggs em 23/10/2010 - 17:02h

Tenho que entregar meu TCC agora em novembro, então em time que esta ganhando não se mexe, vou deixar vou deixar para seguir seu tutorial depois kkk.

Abraços!!!

[6] Comentário enviado por jotadao_sd em 28/12/2010 - 16:59h

Estou tendo problemas com o FFMPEG, ao configurá-lo:


Unknown option "--enable-libfaad".
See ./configure --help for available options.

Ao digitar o comando --help, não há suporte de biblioteca externa libfaad, mas sim libfaac.

Devo instalar libfaac ao invés de libfaad?

[7] Comentário enviado por fredim em 29/12/2010 - 01:53h

Jotadao_sd

Você está no diretório certo? passou os parâmetros corretamente?
*ffmpeg ( ./configure --enable-shared --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaad --enable-postproc )

Qualquer dúvida dê uma conferida no wiki do ginga (olhe os pré-requisitos do gingacc-system) :
---> http://svn.softwarepublico.gov.br/trac/ginga/wiki/Building_Wiki_GingaNCL


[8] Comentário enviado por clebermoterani em 09/02/2011 - 14:09h

Olá Fredim,

Adicionei o parametro vga = 0×0323 já que a resolução que utilizo é 1024x768. Reiniciei a máquina normalmente.
Como eu sei que o framebuffer está ativado?

Minha distribuição: Ubuntu 10.04

Obrigado e abraço

Att.
Cléber

[9] Comentário enviado por fredim em 11/02/2011 - 09:56h

Olá Cleber

Usa o " fbset "
Com ele é possível verificar/setar configurações do framebuffer

att

[10] Comentário enviado por clebermoterani em 11/02/2011 - 14:34h

Olá Fredim

valeu pela dica do fbset.

Conseguimos compilar os dois primeiros pacotes do ginga, mas no gingacc-cpp/gingacc-system tivemos o seguinte erro:

[...]
Making all in src/io
make[2]: Entering directory `/home/lumi/Softwares/Ginga/gingacc-cpp/gingacc-system/src/io'
/bin/bash ../../libtool --tag=CXX --mode=link g++ -fPIC -g -O2 -Wl,-soname,libgingaccsystemio.so -shared -L/usr/local/lib -L/usr/local/lib/ginga -L../thread -L/usr/local/lib/ginga -L/usr/local/lib -L/usr/lib -o libgingaccsystemio.so DeviceAudio.o DeviceCommunication.o IODevice.o GingaLocatorFactory.o InputManager.o LocalDeviceManager.o -ltelemidiautil -lpthread -lgingaccsystemthread -ldl -L/usr/local/lib/ -L/usr/local/lib/ginga/
libtool: link: g++ -fPIC -g -O2 -Wl,-soname -Wl,libgingaccsystemio.so -o libgingaccsystemio.so DeviceAudio.o DeviceCommunication.o IODevice.o GingaLocatorFactory.o InputManager.o LocalDeviceManager.o -L/usr/local/lib -L/usr/local/lib/ginga -L/home/lumi/Softwares/Ginga/gingacc-cpp/gingacc-system/src/thread -L/usr/lib -ltelemidiautil -lpthread -lgingaccsystemthread -ldl -L/usr/local/lib/ -L/usr/local/lib/ginga/
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make[2]: *** [libgingaccsystemio.so] Error 1
make[2]: Leaving directory `/home/lumi/Softwares/Ginga/gingacc-cpp/gingacc-system/src/io'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/lumi/Softwares/Ginga/gingacc-cpp/gingacc-system'
make: *** [all] Error 2

Você tem alguma ideia do que pode ser?

Abraço...

[11] Comentário enviado por fredim em 11/02/2011 - 15:14h

libtool: link: g++ -fPIC -g -O2 -Wl,-soname -Wl,libgingaccsystemio.so -o libgingaccsystemio.so DeviceAudio.o DeviceCommunication.o IODevice.o GingaLocatorFactory.o InputManager.o LocalDeviceManager.o -L/usr/local/lib -L/usr/local/lib/ginga -L/home/lumi/Softwares/Ginga/gingacc-cpp/gingacc-system/src/thread -L/usr/lib -ltelemidiautil -lpthread -lgingaccsystemthread -ldl -L/usr/local/lib/ -L/usr/local/lib/ginga/
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':

---


Verifica a versão da libtool, tem que ser a 1.5

att

[12] Comentário enviado por clebermoterani em 18/02/2011 - 14:56h

Verifiquei a libtool, era a versão 2.2.6.
Então removi e instalei a versão 1.5.
No entanto, agora quando vou compilar o pacote telemidia-util-cpp,
depois de executar o make, ele reclama da versão da libtool, olha só:

Entrando no diretório `/media/dados/CTC/Ginga/telemidia-util-cpp/src'
/bin/bash ../libtool --tag=CXX --mode=link g++ -fPIC -g -O2 -Wl,-soname,libtelemidiautil.so -shared -o libtelemidiautil.so Color.o functions.o
../libtool: line 463: CDPATH: command not found
../libtool: line 1141: func_opt_split: command not found
libtool: Version mismatch error. This is libtool 2.2.6b Debian-2.2.6b-2ubuntu1, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6b Debian-2.2.6b-2ubuntu1
libtool: and run autoconf again.

tenho que alterar a versão da libtool em algum lugar?

Valeu!

[13] Comentário enviado por fredim em 19/02/2011 - 18:30h

Tem que tomar cuidado porque o ubuntu geralmente atualiza vários pacotes para instalar uma coisa só.

libtool --version

Verifica se ainda é a 1.5, ou se mudou com alguma atualização


Att


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts