Dissertação de Mestrado - repositorio.ufpe.br · “Synced-DTV: Um Modelo para a Construção de...
Transcript of Dissertação de Mestrado - repositorio.ufpe.br · “Synced-DTV: Um Modelo para a Construção de...
Pós-Graduação em Ciência da Computação
“Synced-DTV: Um Modelo para a Construção de
Aplicativos Síncronos para TV Digital”
Por
RENATO AUGUSTO GOMES PINA FRANÇA
Dissertação de Mestrado
Universidade Federal de Pernambuco
www.cin.ufpe.br/~posgraduacao
RECIFE/2015
UNIVERSIDADE FEDERAL DE PERNAMBUCO
CENTRO DE INFORMÁTICA
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
RENATO AUGUSTO GOMES PINA FRANÇA
“SYNCED-DTV: UM MODELO PARA A CONSTRUÇÃO DE APLICATIVOS SÍNCRONOS PARA TV DIGITAL"
ESTE TRABALHO FOI APRESENTADO À PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO DO CENTRO DE INFORMÁTICA DA UNIVERSIDADE FEDERAL DE PERNAMBUCO COMO REQUISITO PARCIAL PARA OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIA DA COMPUTAÇÃO.
ORIENTADOR: Carlos André Guimarães Ferraz
RECIFE 2015
Catalogação na fonte
Bibliotecária Joana D’Arc Leão Salvador CRB4-532
F814s França, Renato Augusto Gomes Pina.
“Synced-DTV: um modelo para a construção de aplicativos síncronos para TV Digital” / Renato Augusto Gomes Pina França. – Recife: O Autor, 2014.
109 f.: fig., tab. Orientador: Carlos André Guimarães Ferraz. Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIN,
Ciência da Computação, 2014. Inclui referências e apêndice.
1. Engenharia de software. 2. Televisão digital. I. Ferraz, Carlos André (Orientador). II. Titulo.
005.1 CDD (22. ed.) UFPE-MEI 2015-081
Dissertação de Mestrado apresentada por Renato Augusto Gomes Pina França à Pós-
Graduação em Ciência da Computação do Centro de Informática da Universidade Federal
de Pernambuco, sob o título “Synced-DTV: Um Modelo para a Construção de
Aplicativos Síncronos para TV Digital” orientada pelo Prof. Carlos André
Guimarães Ferraz e aprovada pela Banca Examinadora formada pelos professores:
______________________________________________
Prof. Kiev Santos da Gama
Centro de Informática/UFPE
______________________________________________
Prof. Carlos Eduardo Coelho Freire Batista
Centro de Informática /UFPB
_______________________________________________
Prof. Carlos André Guimarães Ferraz
Centro de Informática / UFPE
Visto e permitida a impressão.
Recife, 18 de dezembro de 2014.
___________________________________________________
Profa. Edna Natividade da Silva Barros Coordenadora da Pós-Graduação em Ciência da Computação do
Centro de Informática da Universidade Federal de Pernambuco.
Dedico este trabalho a
minha família, em especial
a minha esposa Paula e
meu filho Renato, sem
eles não conseguiria ter
chegado até aqui.
AGRADECIMENTOS
Agradeço primeiramente a Deus, que de alguma forma, nos momentos
mais difíceis sempre esteve ao meu lado.
Ao meu orientador Prof. Dr. Carlos André Guimarães Ferraz, pelo
apoio e ideias oferecidas durante a construção deste trabalho. Agradeço também
por sua atenção, dedicação, confiança e por ter me aceitado como seu
orientando, tornando possível a realização do sonho de fazer mestrado. Seus
ensinamentos foram essenciais para a realização deste trabalho e para meu
engrandecimento pessoal.
À minha esposa Paula Souza, por seu amor, paciência, apoio e
compreensão que me deram forças para continuar nas horas mais difíceis.
Ao meu filho Renato França, por tudo que representa na minha vida e
por ser a razão de todo o meu esforço.
Ao Prof. Dr. Silvio Romero de Lemos Meira que também acreditou em
meu potencial e me aceitou inicialmente como orientando.
À empresa CESAR (Centro de Estudos e Sistemas Avançados do
Recife) por me permitir utilizar seu laboratório de TV digital para realizar as
pesquisas e contribuir na elaboração do trabalho. Agradeço também aos meus
colegas de trabalho do projeto Premium Apps e de tantos outros projetos, que
sem dúvida compartilharam comigo conhecimentos essenciais, os quais foram
aplicados neste trabalho e contribuíram para meu engrandecimento profissional.
Aos membros da banca avaliadora pelas valorosas contribuições
oferecidas.
Aos meus pais, Larri Pina de França e Maria de Fátima Gomes
Pereira, pela dedicação e ensinamentos da vida. Agradeço também por
contribuírem na construção do meu caráter e das minhas convicções, nas quais
obtive forças para persistir.
O período de maior ganho em conhecimento e experiência é
o período mais difícil da vida de alguém.
—DALAI LAMA
Resumo
A popularização da TV Digital no mundo trouxe consigo melhorias para o
telespectador como, imagem e som em alta definição, multiprogramação, mobilidade e
acesso à Internet. Este crescimento coincidiu com a popularização dos dispositivos
móveis inteligentes, smartphones e tablets, habilitando aos telespectadores à busca e
visualização de conteúdos diversos ao mesmo tempo que assiste a esta programação. O
uso destes aparelhos móveis enquanto se assiste a TV gerou o conceito de Segunda Tela.
No entanto, o conteúdo adquirido nem sempre possui ligação com o programa que está
sendo transmitido pela emissora de TV, tornando este tipo de tecnologia um concorrente
ou uma alternativa à programação transmitida, dispersando a atenção do telespectador.
Um dos grandes desafios é encontrar ferramentas computacionais mais eficientes para a
elaboração e implementação de formas de disponibilização de conteúdos complementares
ao transmitido pela TV, e ao mesmo tempo torná-las interessantes e atrativas aos olhos
dos usuários. Este trabalho propõe um modelo para o desenvolvimento de aplicativos para
TV Digital que utiliza informações contextuais da programação da TV, da própria TV e
do dispositivo de Segunda Tela para que, de forma automática e simples, seja possível a
exibição de conteúdos Web complementar à programação corrente da TV de forma
síncrona. Utilizando estruturas de comunicação atualmente em uso pelas emissoras e
definidas através de padrões regulamentados, o trabalho desenvolvido propõe uma
abordagem plausível de implantação, demonstrando que é possível prover conteúdos
complementares Web ao telespectador, de forma simples, automática e síncrona,
tornando a experiência de assistir televisão ainda mais rica e completa.
Palavras-chave: TV Digital. Segunda Tela. Sincronismo. Contextualização.
ABSTRACT
The popularization of digital TV in the world has brought improvements to the
viewer as, image and sound in high definition, multiprogramming, mobility and Internet
access. This increase coincided with the popularity of smart mobile devices, smartphones
and tablets, enabling viewers to search and display various types of content while
watching TV. The use of mobile devices while watching TV created the concept of
Second Screen. However, the mobile content does not always have connection with the
program being broadcast on TV, making this type of technology a competitor or an
alternative to broadcast programming, scattering the viewer's attention. A major challenge
is to find more efficient computational tools for designing and implementing ways of
providing additional content to broadcast on TV, and at the same time make them
interesting and attractive in the eyes of users. This paper proposes a model for the
development of applications for Digital TV that uses contextual information of TV
scheduling and the second screen device. So it may be possible in an automatically and
simple way to display web content related to the TV schedule synchronously. Using the
current communication structures by broadcasters and defined through regulated
standards, the developed work proposes a plausible approach to implementation,
demonstrating that it is possible to provide additional web content to viewer, in a simple
way, automatic and synchronously, making the experience of watch TV even more rich
and full.
Keywords: Digital TV. Second Screen. Synchronism. Context.
Lista de Ilustrações
Figura 1 - Estrutura das tabelas do PSI/MPEG-2. Derivado de: (EN 300 468,
1998) ................................................................................................................. 21
Figura 2 - Subsistemas do cenário do Synced-DTV. .................................... 36
Figura 3 - Diagrama de casos de uso nível zero do Synced-DTV. ................ 42
Figura 4 - Arquitetura da aplicação Synced-TVApp ................................... 45
Figura 5 - Arquitetura da aplicação Synced-SecondScreenApp .................... 47
Figura 6 - Diagrama de classes da aplicação Synced-TVApp ...................... 57
Figura 7 - Diagrama de sequência da captura de dados da TV. .................... 59
Figura 8 - Diagrama de classes da aplicação Synced-SeconScreenApp. ......... 64
Figura 9 - Estrutura visual da aplicação .................................................... 65
Figura 10 - Diagrama de sequência do serviço de conexão. ......................... 67
Figura 11 - Diagrama de sequência do sincronismo dos dados. .................... 70
Figura 12 – Processo de Normalização dos dados temporais. ...................... 74
Figura 13 - Sincronismo entre TV e Segunda Tela ..................................... 75
Figura 14 - Imagem da TV no primeiro sincronismo .................................. 81
Figura 15 - Imagem do smartphone no segundo sincronismo ...................... 81
Figura 16 - Imagem da TV no segundo sincronismo................................... 82
Figura 17 - Imagem do smartphone no segundo sincronismo ...................... 82
Figura 18 - Proporção dos Atrasos de Processamento ................................. 88
Figura 19 - Atrasos dos processamentos do sistema ................................... 89
Figura 20 - Synced-DTV em múltiplos dispositivos ................................... 93
Lista de Tabelas
Tabela 1 - Descrição do gênero do descritor. ................................................................. 24
Tabela 2 – Configurar a TV ............................................................................................ 43
Tabela 3 – Obter Dados Contextuais .............................................................................. 43
Tabela 4 – Validar Dados Contextuais ........................................................................... 44
Tabela 5 - Fatores de comparação .................................................................................. 49
Tabela 6 - Facilidade de Uso .......................................................................................... 91
Tabela 7 - Utilidade ........................................................................................................ 91
Sumário
1 Introdução ..................................................................................... 14
1.1 Motivação e Justificativas .......................................................... 14
1.2 Objetivos ................................................................................... 16
1.2.1. Objetivos Específicos ....................................................... 16
1.3 Estrutura do Trabalho ................................................................ 17
2 Estado da Arte .............................................................................. 19
2.1 TV Digital e Segunda Tela ......................................................... 19
2.2 Dados Contextuais de Televisão Digital .................................... 19
2.2.1. O Descritor: content_descriptor ........................................ 23
2.2.2. O Descritor: extended_event_descriptor .......................... 24
2.3 Segunda Tela ............................................................................ 25
2.4 Tecnologias Relacionadas ........................................................ 26
2.4.1. Impressão Digital de Áudio............................................... 26
2.4.2. Marca D’Água de Áudio ................................................... 27
2.4.3. Reconhecimento de Vídeo ............................................... 27
2.4.4. Sincronização Local de TV ............................................... 28
2.4.5. Sincronização de Internet ................................................. 28
2.5 Trabalhos Relacionados ............................................................ 28
2.5.1. Dados Contextuais ........................................................... 29
2.5.2. Sincronismo ...................................................................... 30
3 SYNCED-DTV .............................................................................. 34
3.1 Visão Geral ................................................................................ 34
3.2 Cenários de Uso ........................................................................ 36
3.2.1. Cenário Um ...................................................................... 36
3.2.2. Cenário Dois ..................................................................... 37
3.2.3. Cenário Três ..................................................................... 37
3.3 Levantamento dos requisitos ..................................................... 38
3.3.1. Requisitos Funcionais ...................................................... 39
3.3.2. Requisitos Não Funcionais ............................................... 40
3.4 Diagrama dos Casos de Uso ..................................................... 41
3.5 Descrições dos Casos de Uso .................................................. 42
3.6 Arquitetura ................................................................................. 45
3.6.1. Synced-TVApp ................................................................. 45
3.6.2. Synced-SecondScreenApp .............................................. 46
3.7 Comparação com Modelos de TV e Tecnologias de Sincronismo
48
3.8 Discussões ................................................................................ 51
4 Implementação da Solução .......................................................... 53
4.1 Sincronismo com Segunda Tela ................................................ 53
4.2 Synced-WebServers.................................................................. 56
4.3 Synced-TVApp .......................................................................... 57
4.3.1. Implementação da Arquitetura ......................................... 57
4.3.2. Formatação dos dados contextualizados ......................... 61
4.4 Synced-SecondScreenApp ....................................................... 64
4.5 Desafios de implementação do sistema .................................... 72
4.5.1. Normalização dos dados temporais ................................. 72
4.5.2. Sincronismo Automático ................................................... 74
4.5.3. Tomada de Decisão Sobre Interrupção ............................ 76
4.5.4. Atraso no Recebimento dos Metadados .......................... 77
4.5.5. Ausência dos Dados Contextuais ..................................... 80
4.6 Avaliação das Funcionalidades do Sistema .............................. 80
4.6.1. Cenário de Uso ................................................................ 80
4.6.2. Atrasos de Comunicação ................................................. 87
4.6.3. Avaliação de aceitação da solução .................................. 90
4.6.4. Sincronismo em Múltiplas Telas ....................................... 92
4.7 Ambiente operacional ................................................................ 93
4.8 Discussões ................................................................................ 94
5 Conclusões ................................................................................... 95
5.1 Contribuições do trabalho .......................................................... 98
5.2 Trabalhos Futuros ..................................................................... 99
Referências ....................................................................................... 100
APÊNDICE I ...................................................................................... 104
14
1 Introdução
Desde a criação da TV houve uma busca constante por melhorias na qualidade
de imagem e de som, o que levou à digitalização, também adotada em outros meios de
comunicação em massa, como o rádio. Esta mudança, denominada de TV Digital,
representa não apenas a substituição das plataformas analógicas pelas digitais, mas
também o rompimento com os moldes tradicionais de criação, distribuição e manipulação
de conteúdo. É o surgimento de uma nova mídia mais completa, complexa e abrangente
que sua antecessora analógica.
Esta nova mídia surge no momento em que a mobilidade e a portabilidade estão
revolucionando o cotidiano das pessoas, possibilitando a obtenção de informações em
qualquer lugar e a qualquer momento. As disponibilizações de informação em conjunto
com a digitalização da TV tornaram possível a criação de conceitos como o de Segunda
Tela (Second Screen), que pode ser descrita como toda e qualquer experiência de
engajamento da audiência, que inclui a TV Social (GIGLIETTO e SELVA, 2014) como
um elemento integrante.
Este posicionamento generaliza o uso da Segunda Tela não como apenas um
conteúdo que agrega valor ao programa distribuído pela emissora, mas como um
dispositivo utilizado em uma estratégia de comunicação que incentiva a participação do
telespectador, e o compartilhamento de conteúdo em sua rede de relacionamento de forma
atuante. Para isso, o conteúdo tem de ser relevante para o telespectador e ser capaz de
requerer um maior engajamento deste e prever ações (compartilhamento nas redes
sociais) por parte do usuário na construção desta relevância.
Para a utilização deste conceito é necessário definir o que é relevante para o
usuário durante uma interação com um dispositivo/serviço de TV Digital, capturar estes
dados de forma transparente e não intrusiva, e, finalmente, utilizar estas informações em
prol do próprio usuário. Esta variação de meios de acesso e a diversidade de conteúdo
disponibilizado é alvo de estudos frequentes no meio acadêmico e empresarial
internacional.
1.1 Motivação e Justificativas
De acordo com um estudo da Google (GOOGLE, 2012) os consumidores estão
se tornando cada vez mais “multi-screeners”, utilizando computadores, TVs, smartphones
15
ou tablets, dependendo da localização, da quantidade de tempo disponível e do conteúdo
sendo assistido. Este tipo de comportamento gerou um mercado mundial de
aproximadamente 490 milhões de dólares em 2013, estimando atingir 5,9 bilhões em
2017 (STEPHEN, 2012).
Diversos estudos mostram uma tendência, por parte de telespectadores, de uso
de dispositivos enquanto assistem TV. Segundo dados da empresa de pesquisa Nielsen
Ratings (http://www.nielsen.com), empresa que realiza medição de audiência, pessoas
utilizam com grande frequência tablets e smartphones enquanto assistem TV, sendo
observado um aumento considerável no número de comentários nas redes sociais sobre o
conteúdo sendo assistido durante a transmissão deste conteúdo.
Por outro lado, pesquisas recentes (PAVSEK e MOHAR, 2013) (GEMME e
CRAMER, 2013) mostram que, dos usuários que afirmam assistir TV com um
smartphone ou tablet em mãos, apenas 42% deles tenham realmente tentado utilizar uma
aplicação correspondente de segunda tela. Destes usuários, apenas 13% afirmaram que a
experiência sincronizada realmente modificou a experiência de assistir TV. Grande parte
da frustração com a experiência, demonstrada pelos usuários, é decorrente das
dificuldades encontradas em descobrir quais programas apresentam aplicativos de
sincronização, dificuldades no sincronismo destas aplicações e a falta de opções de
escolha de quais conteúdos devem ser sincronizadas.
Outro fator importante para o baixo nível de satisfação se deve à disponibilização
de aplicações específicas para determinadas programações, como por exemplo,
aplicações para seriados, programas de culinária e eventos esportivos. Este tipo de
abordagem exige que o usuário verifique a existência de aplicativos para uma
programação específica, sendo necessário aprender e se adaptar à forma como o
sincronismo ocorre e de como o conteúdo é exibido, além de não se aplicar a
programações televisivas abertas (GEMME e CRAMER, 2013).
A solução Synced-DTV, apresentada neste trabalho, propõe uma arquitetura
simples, contextualizada (DEY et al, 1999), que utiliza informações da própria
programação, e de fácil adoção pelas emissoras, que utiliza dados complementares da
programação transmitida em conjunto com informações do dispositivo de segunda tela
para prover uma experiência síncrona, automática e mais personalizada de assistir
16
televisão. DEY at al (1999) definem contexto como "qualquer informação que pode ser
usada para caracterizar a situação de uma entidade".
1.2 Objetivos
Este trabalho tem o objetivo de propor um modelo de desenvolvimento e
comunicação, chamado Synced-DTV, que demonstrará como as aplicações interativas
emergentes para as TVs híbridas (AL-MAJEED et al, 2012) podem fazer uso das
funcionalidades oferecidas pela plataforma, para oferecer ao telespectador um conteúdo
Web sensível à programação da TV de forma síncrona e automatizada. Este conteúdo é
contextualizado em relação ao programa corrente da transmissão broadcast, sendo obtido
na Internet e oferecido ao telespectador com o intuito de aprimorar a sua experiência
televisiva, agregando valor à aplicação interativa.
1.2.1. Objetivos Específicos
Para alcançar o objetivo geral do Synced-DTV, os seguintes objetivos específicos
foram determinados:
1. Propor um modelo para o desenvolvimento de aplicações e comunicação
para TV digital, que agreguem valor ao conteúdo da grade de
programação das emissoras, trazendo informações complementares de
forma síncrona e automatizada para dispositivos de Segunda Tela.
2. Desenvolver uma solução padronizada para o estabelecimento de
comunicação síncrona entre conteúdos de TV e Web complementar de
forma simplificada e automática, possibilitando a aderência de emissoras
sem a necessidade de alterações profundas e custosas nas atuais
estruturas utilizadas para a transmissão de conteúdo.
3. Propor um modelo genérico, facilmente extensível e adaptável, para o
desenvolvimento de aplicações que utilizam o contexto da programação
da TV, obtidas através do uso das tabelas de informações de sistemas,
como o padrão DVB (EN 300 744, 2007) para prover uma experiência
mais rica e completa ao telespectador.
4. Utilização eficiente de informações contextuais da TV, da programação
corrente e do dispositivo de Segunda Tela para a inferência das
17
preferências do telespectador, tornando possível uma disponibilização
personalizada, eficaz e menos intrusiva de conteúdos complementares.
5. Propor uma arquitetura de serviço para a elaboração de uma aplicação
para o ambiente do middleware brasileiro de televisão digital Ginga-J
(NBR 15606-4, 2010), com as características que se adequem melhor ao
cenário proposto no trabalho.
Para atingir estes objetivos, será necessário elaborar uma infraestrutura modular
de software que possibilite a obtenção das informações contextuais advindas das tabelas
de informação definidas para TV Digital (que representarão o contexto da programação
da TV), a obtenção do conteúdo complementar Web relacionado à programação corrente
e a exibição do conteúdo obtido ao telespectador de forma síncrona e automática. Esta
infraestrutura deverá ser independente dos sistemas operacionais utilizados, além de
possuir uma arquitetura de baixo acoplamento, viabilizando futuras alterações ou
acréscimos de módulos à solução. A concepção da solução, por sua vez, deverá ser
baseada em requisitos funcionais e não funcionais de modo que o desenvolvimento das
funcionalidades inerentes à solução possa ser avaliado através de cenários de testes.
1.3 Estrutura do Trabalho
Esta dissertação está estruturada em cinco capítulos. Neste primeiro capítulo
foram apresentadas as motivações/justificativas, objetivos e as principais contribuições
do trabalho. O segundo capítulo tem como objetivo apresentar conceitos sobre TV Digital
e Segunda Tela, e a forma como estes estão relacionados. Neste capítulo também são
descritos fundamentos sobre o sistema de metadados das tabelas de informações de TV
Digital, e sobre tecnologias atualmente no mercado utilizadas para o sincronismo entre
conteúdo televisivo e complementar. Por fim, são descritos trabalhos que estão
relacionados com a proposta do Synced-DTV.
O capítulo 3 apresenta uma visão de alto nível sobre a solução Synced-DTV,
descrevendo os seus módulos e as responsabilidades de cada um deles. Também são
descritos alguns possíveis cenários de uso, assim como o resultado do levantamento dos
requisitos funcionais e não funcionais. É apresentado o diagrama de casos de uso, a
descrição de cada um dos casos e, por fim, é descrita o modelo de desenvolvimento
elaborado para a solução.
18
O quarto capítulo, por sua vez, explana detalhes sobre a implementação de cada
um dos módulos componentes do modelo Synced-DTV, especificando as
responsabilidades atribuídas a cada um destes módulos. Detalhes sobre a forma como o
sincronismo entre os conteúdos televisivo e complementar será feito, os desafios
encontrados durante o desenvolvimento da solução e a forma utilizada para o sincronismo
automático entre os subsistemas da solução. Um cenário de uso que teste a
implementação, os resultados obtidos durante a experimentação e uma avaliação de
aceitação da aplicação finalizam este capítulo.
E por fim, o capítulo cinco encerra a dissertação apresentando as conclusões,
contribuições e sugestões de trabalhos futuros que podem dar continuidade à pesquisa
apresentada neste trabalho.
19
2 Estado da Arte
Este capítulo apresenta conceitos fundamentais aplicados à solução proposta
pelo trabalho.
2.1 TV Digital e Segunda Tela
A história da TV digital começa na década de 1970 no Japão, quando
a NHK (Nippon Hoso Kyokai) e um grupo composto por 100 estações de TV locais,
iniciam as pesquisas e o desenvolvimento de uma TV de alta qualidade de imagem,
ou HDTV (High Definition TV). O objetivo seria dar ao espectador mais realismo e
proximidade não só com a imagem, mas também com o som, aproximando a imagem da
TV com a imagem do cinema, inclusive no formato de tela larga (wide), usado no cinema
desde 1951 (CHEN et al, 2004).
Apenas em 1994, e já utilizando as novas tecnologias de compactação de som e
imagem, o MP3 para áudio e o MPEG (Motion Pictures Expert Group) para vídeo, foi
criado na Europa o padrão DVB (Digital Video Broadcast), que posteriormente serviu de
base para a criação do padrão japonês ISDB-T (Integrated Services Digital Broadcasting
- Terrestrial), e posteriormente o padrão SBTVD (Sistema Brasileiro de TV Digital) ou
ISDB-TB, atualmente em uso no Brasil.
O padrão DVB pode e deve ser considerado como um dos pioneiros para a
padronização da TV Digital no mundo, servindo de modelo e criando padrões genéricos
a serem implementados por quaisquer outros modelos derivados dele. Desta forma, é
possível afirmar que uma aplicação desenvolvida em complacência com o padrão DVB
ou um dos padrões derivados deste podem ser adaptados a qualquer dos outros padrões.
Assim, por serem baseados no padrão DVB, os padrões ISDB-T e SBTVD apresentam
características muito semelhantes na forma como as informações são tratadas para o envio
ao telespectador.
2.2 Dados Contextuais de Televisão Digital
Dentre os dados inseridos no fluxo de transporte (Transport Stream - TS) a ser
transmitido para a TV podem ser encontradas as informações de Closed Caption, dados
de interatividade, além das tabelas definidas pela norma MPEG-2 Systems (ISO/IEC,
2013). Entre as tabelas inseridas estão a PSI (Program Specifc Information) / SI (Service
20
Information). As informações PSI são as tabelas padronizadas pela norma MPEG-2
Systems e as informações SI são as tabelas específicas e características de cada sistema
de transmissão (DVB, ISDB, ATSC e SBTVD).
A ISO/IEC 13818-1 (ISO/IEC, 2013) define que os dados PSI proveem
informações necessárias à configuração automática do receptor para realizar a
demutiplexação e decodificação dos vários streams de programas dentro do sinal
multiplexado.
Os dados PSI são estruturados em quatro tipos de tabela.
1- PAT (Program Association Table): Indica os valores de localização (os
valores do PID (Packet Identifier)) dos pacotes do TS (Transport Stream). Contém
também a localização da NIT (Network Information Table).
2- CAT (Conditional Access Table): Contém informações sobre o sistema de
acesso condicional (Conditional Access - CA) utilizado na multiplexação.
3- PMT (Program Map Table): Identifica e disponibiliza a localização dos
stream que compõem cada serviço, assim como a localização dos campos PCR (Program
Clock Reference) do serviço.
4- NIT (Network Information Table): Provê informações sobre a rede física.
Complementar aos dados das tabelas PSI/MPEG-2, são necessárias outras
informações para a identificação dos serviços e dos eventos para o usuário. A
Figura 1 mostra uma organização geral das tabelas SI presentes na especificação
DVB.
Todas as outras tabelas fazem parte do conjunto das tabelas SI, inclusive a tabela
EIT (Event Information Table ou Tabela de Informações de Eventos). De acordo com a
norma, esta tabela é responsável por prover as informações em ordem cronológica sobre
os eventos que compõem o serviço e será de fundamental importância para o
desenvolvimento do modelo proposto por este trabalho.
21
Figura 1 - Estrutura das tabelas do PSI/MPEG-2. Derivado de: (EN 300 468, 1998)
As tabelas EIT contêm dados referentes aos eventos e programas como, por
exemplo, o nome do evento, horário de início e duração, entre outros. Estes dados são
responsáveis pela criação do chamado EPG (Electronic Program Guide – Guia Eletrônico
de Programação), que é um serviço para televisão, rádio ou outra aplicação multimídia
onde é possível mostrar informações sobre a programação corrente ou futura. A
implementação do EPG geralmente depende de algum middleware dedicado,
22
completamente dependente da tecnologia de distribuição, funcionalidades presentes e
largura de banda requerida.
Basicamente, para a construção de um EPG são necessários dois grupos de
tabelas:
1- Presente/Seguinte: Contém informações sobre eventos atualmente sendo
transmitidos e eventos que serão exibidos a seguir. Estas tabelas necessitam
de uma taxa de atualização bastante rápida, normalmente em torno de 2
segundos, possibilitando a recepção das informações pelo usuário
rapidamente.
2- Agendada: Contém informações sobre a programação a ser exibida no
futuro, podendo ser enviado o conteúdo de até 64 dias, no caso da
implementação de referência do DVB, podendo variar nos outros padrões
de TV Digital. A taxa de atualização destas tabelas pode ser
consideravelmente maior, chegando a 30 segundos na implementação
DVB.
A semântica das informações da seção que descreve a informação dos eventos
deve, obrigatoriamente, estar de acordo com a norma (EN 300 468, 1998) do DVB.
Porém, é importante ressaltar que em alguns casos, como no caso do SBTVD, algumas
seções podem ser compostas, por exemplo, pelos campos “table_id”, “start_time”,
“duration”, “format” e “running_status” que são descritos pela norma NBR 15603-2
(2007). A descrição dos principais campos desta seção, obtidos nas duas normas, pode
ser resumida da seguinte forma:
event_id: Número indicador de evento único.
start_time: A hora no qual o evento se inicia baseado no UTC.
duration: A duração do evento em segundos.
running_status: O status atual do evento. Ex. rodando, não-rodando,
pausado, etc.
free_CA_mode: Indica se algum componente do serviço é embaralhado
e controlado por um sistema condicional de acesso (CA system).
23
short_event_descriptor: Descritor básico para o evento. Contém o nome
e uma breve descrição do evento.
extended_event_descriptor: Descreve informações mais detalhadas
sobre o evento.
content_descriptor: Provê informações sobre a classificação de gênero
do evento.
component_descriptor: Provê informações sobre os componentes do
serviço do evento, como o formato do vídeo, sistema de compressão
utilizado e legendas.
Para este trabalho, dentre os descritores presentes no padrão DVB, e por herança
no padrão SBTVD, alguns são melhor explanados por terem uma relevância maior ou um
entendimento mais profundo acerca da implementação feita. Para esta explanação serão
utilizados valores extraídos da norma SBTVD, padrão utilizado como base para o
desenvolvimento deste trabalho.
2.2.1. O Descritor: content_descriptor
Este descritor deve ser, obrigatoriamente, utilizado para informar a classificação
de um evento. O descritor de conteúdo possui três campos em sua estrutura de dados: o
content_nibble_level_1, campo de 4 bits que é utilizado para representar o primeiro nível,
correspondente à classificação do gênero de um identificador de conteúdo (Ex. 0xC -
Filme); o content_nibble_level_2, campo de 4 bits que deve ser utilizado para representar
o segundo nível, correspondente à classificação do subgênero de um identificador de
conteúdo (Ex. 0x1 – Ação); e o user_nibble, campo de 4 bits que pode ser definido pelo
transmissor.
Pela norma do SBTVD o campo content_nibble_level_1 deste descritor de
conteúdo pode apresentar 16 valores distintos para os possíveis gêneros televisivos como
apresentado na Tabela 1 abaixo.
24
Tabela 1 - Descrição do gênero do descritor. Fonte: retirado de (NBR 15603-2, 2008)
A informação desta tabela é importante para este trabalho, pois permite a
definição por parte do usuário de quais gêneros televisivos são do seu interesse, servindo
como um filtro na entrega dos conteúdos sincronizados, como será detalhado na Seção
4.3.
2.2.2. O Descritor: extended_event_descriptor
De acordo com a norma (NBR 15603-2, 2008), o descritor de evento estendido
deve estar de acordo com a EN 300 744 (2007), subseção 6.2.15, e é definido como um
descritor opcional, ficando a cargo das emissoras o envio ou não de informações neste
descritor. A semântica para o descritor de evento estendido deve obrigatoriamente ser:
descriptor_number: campo de 4 bits que deve informar o número do descritor.
Ele deve, obrigatoriamente, ser utilizado para associar a informação que não cabe
em um único descritor. O descriptor_number do primeiro
extended_event_descriptor de uma associação de extended_event_descriptors
deve ser “0x0”. O descriptor_number deve obrigatoriamente ser incrementado de
25
1 a cada extended_event_descriptor adicional nesta seção (ver
(EN_300_468:2007, 2007), subseção 6.2 15);
ISO_639_language_code: campo de 24 bits que deve identificar a linguagem do
componente (no caso de áudio ou dados) e uma descrição em texto que pode estar
contida no descritor. A ISO 639_language_code contém um código de 3
caracteres conforme a ISO 639-2. Cada caractere deve ser codificado em 8 bits de
acordo com a ISO/IEC 8859-15 e inserido na ordem no campo de 24 bits - Ex. O
Português, idioma oficial do Brasil tem 3 caracteres de código “por”, que é
codificado como “0111 0000 0110 1111 0111 0010”.
text_char: campo de 8 bits. O conteúdo enviado no campo text_char especifica o
complemento do texto enviado pelo short_extended_descriptor. A informação do
texto é codificada de acordo com a ISO/IEC 8859-15.
Este descritor é de grande importância para o trabalho proposto, pois através dele
os dados necessários à sincronização entre o conteúdo televisivo e os dados
complementares serão enviados, como será apresentado na Seção 4.4.
2.3 Segunda Tela
O conceito de Segunda Tela (Second Sceen) foi criado com o crescente uso de
dispositivos computacionais, normalmente um smartphone ou tablet, para o provimento
de uma experiência televisiva mais rica e completa, utilizando este dispositivo adicional
para o fomento de novos conteúdos adicionais ao assistido pela tela principal, como a TV.
Existem diversos aplicativos de Segunda Tela disponibilizados atualmente,
como por exemplo, o aplicativo da série de TV Walking Dead, que transmite ao usuário,
em tempo real, informações complementares à programação sendo transmitida, além de
possibilitar o acesso a informações relevantes para a série como descrição dos
personagens, resumo de capítulos anteriores e teasers de próximos capítulos.
Este uso crescente de dispositivos representa uma oportunidade para a criação
e oferecimento de novos serviços e produtos que possam aumentar o engajamento e
enriquecimento do conteúdo transmitido com os telespectadores. Uma vez que os
usuários podem assistir o conteúdo televisivo quando eles querem, os dispositivos de
segunda tela podem servir como grandes divulgadores de conteúdos assíncronos, quando
não são transmitidos diretamente via broadcast direto.
26
Diversos estudos foram realizados fomentando o uso de dispositivos de segunda
tela como potencializadores de conteúdo, como (BORCH et al, 2014), que propõe uma
arquitetura genérica para o desenvolvimento de soluções utilizando uma rede social de
pessoas, suas aplicações e dispositivos. Diversos aspectos da utilização da Segunda Tela
são explorados, tais como possíveis modelos de negócios, abordagens de obtenção e
propagação de conteúdos e os possíveis casos de uso, no qual o uso de Segunda Tela
poderia ser uma abordagem para criação de novos negócios. (KOVACEVIC et al, 2014)
descrevem uma forma de propagação das informações do guia eletrônico de programação
(EPG) para dispositivos Android, tornando possível a visualização do mesmo em um
dispositivo de segunda tela.
2.4 Tecnologias Relacionadas
Nesta seção, serão apresentadas tecnologias existentes no mercado que
possibilitam a comunicação e/ou sincronismo de conteúdos entre TV, Web e Segunda
Tela, com o objetivo de contextualizar e complementar o estado da arte e a metodologia
proposta por este trabalho.
2.4.1. Impressão Digital de Áudio
Assim como a impressão digital humana pode ser considerada única entre todos
os seres vivos por causa da disposição de suas linhas e cavidades, uma impressão digital
de áudio também pode ser considerada única segundo a representação de suas frequências
e amplitudes.
Segundo CANO et al (2002), basicamente, Impressão Digital de Áudio (Audio
Fingerprinting), funciona extraindo uma assinatura da trilha de áudio do conteúdo de
vídeo ou música e armazena em um banco de dados. Quando um áudio a ser identificado
é apresentado, sua “fingerprint” é calculada e comparada contra as armazenadas no banco
de dados. Utilizando estas fingerprints e algoritmos de comparação, versões distorcidas
de uma amostra de áudio podem ser identificadas como o mesmo conteúdo de áudio.
Esta técnica pode ser utilizada para a identificação do conteúdo broadcast de TV
em tempo real, possibilitando assim a utilização dos mesmos como marcas de
sincronismos a serem computadas. Uma vez que a identificação da fingerprint depende
da captação correta do áudio transmitido, esta captação pode tornar-se comprometida por
diversos fatores, como por exemplo, ruídos ou falhas no algoritmo de geração da
27
fingerprint. Outros fatores a serem considerados envolvem: o armazenamento das
fingerprints de comparação, o custo computacional para a extração da fingerprint e a
latência do serviço necessário para a comparação das mesmas.
2.4.2. Marca D’Água de Áudio
A adição de marcas d’água é comumente utilizada em documentos oficiais de
empresas a fim de demonstrar autenticidade de documentos, porém normalmente esta
marca não pode ser vista a não ser por pessoas que sabem exatamente onde encontrá-las.
Este mesmo conceito pode ser aplicado em arquivos de áudio também.
Devido às propriedades limitadas do ouvido humano, um sinal extra (marca
d’água) pode ser adicionado ou escondido na faixa de áudio original tornando-se
inaudível para seres humanos, mas podendo ainda ser capturado por microfones. Esta
característica define a técnica de Marca D’água de Áudio (Audio Watermarking).
Dependendo da técnica e algoritmo utilizados, um identificador e informações
de tempo podem ser adicionados sem serem notadas ou afetando a qualidade do áudio.
Uma vez que o programa seja capaz de capturar o sinal da marca d’água, informação
sobre qual programa está sendo assistido, assim como informações de tempo necessárias
para o sincronismo da aplicação.
É importante notar que, assim como na técnica de Audio Fingerprinting, a
qualidade do áudio capturado é o fator de maior influência para o sucesso da identificação
do conteúdo exibido.
2.4.3. Reconhecimento de Vídeo
Segundo SEGUNDO e SANTOS (2013), Reconhecimento de Vídeo (Video
Recognition) usa o vídeo ao invés do áudio para sincronizar aplicações de segunda tela.
Assim como em Audio Watermarking, esta técnica adiciona informações no conteúdo de
vídeo para sincronizar as aplicações.
Esta solução pode ser utilizada de várias formas, incluindo derivações das
soluções previamente apresentadas de Audio Watermarking e Fingerprinting. (Vignaroli,
Pero, & Negro, 2012), utilizaram uma marcação de QR Code para manipular parâmetros
e informações para a segunda tela. Através de um smartphone, este QR Code seria lido e
a aplicação de segunda tela seria sincronizada automaticamente. Existem também
28
soluções no mercado no qual uma foto do conteúdo televisivo deve ser tirada pela
aplicação de segunda tela, e enviada a um servidor que fará a busca nos conteúdos
previamente armazenados, ocorrendo assim a identificação deste conteúdo.
2.4.4. Sincronização Local de TV
Este mecanismo utiliza o receptor local da TV como gerenciador do processo de
sincronismo. Para isto, é necessário que de alguma forma, seja por bluetooth, rede local,
ou qualquer outra conexão, o aparelho de segunda tela possa se comunicar diretamente
com a TV para o envio de informações.
Algumas propostas seguindo esta abordagem foram feitas, como por exemplo,
(SOARES et al, 2009) propuseram um modelo de controle hierárquico em NCL para
suporte de exibição em múltiplos aparelhos. Este trabalho será mais bem detalhado na
seção de Trabalhos Relacionados.
2.4.5. Sincronização de Internet
Sincronização de Internet utiliza a Internet como meio de prover conteúdo
adicional ao transmitido via broadcast. Diferencia das outras formas de sincronismo por
não necessitar de uma conexão direta com a TV. Normalmente, o processamento
necessário à descoberta do conteúdo acontece em servidores externos, sendo uma API de
acesso disponibilizada para a integração com esses serviços.
Empresas como Synchronize.tv, TvTak e Never.no utilizam esta metodologia na
implementação de seus serviços de reconhecimento e sincronização de conteúdo. Um
cliente, por exemplo, pode contratar o serviço destas empresas para exibir um conteúdo
específico na segunda tela sempre que um comercial de algum concorrente esteja sendo
exibido.
2.5 Trabalhos Relacionados
Nesta seção, serão apresentados trabalhos presentes na literatura que analisam o
sincronismo e a oferta de conteúdos entre TV e conteúdo de segunda tela, com o objetivo
de contextualizar e complementar a metodologia proposta por este trabalho e o estado da
arte até então apresentado.
29
Estes trabalhos foram divididos em duas seções distintas, onde inicialmente são
apresentados trabalhos focados no uso dos dados contextuais da programação e
posteriormente serão apresentados trabalhos relacionados ao sincronismo em TV Digital.
2.5.1. Dados Contextuais
No trabalho de SOARES et al (2009) é apresentado um modelo de controle de
exibição do conteúdo de TV Digital em múltiplos dispositivos utilizando NCL (Nested
Context Language) em conjunto com Ginga-NCL (NBR 15606-4, 2010).
O modelo proposto especifica um modelo hierárquico de responsabilidades que
torna possível a orquestração de todos os dispositivos capazes de executar rotinas (tasks)
NCL. Estes dispositivos podem ser separados levando em consideração a capacidade de
exibir conteúdo contextual de mídia e os que são capazes de processar documentos com
informações contextuais NCL, formando o que foi chamado de Domínio de Dispositivo
(Device Domain). Por fim, estes dispositivos se registram no orquestrador que, então,
pode atribuir a responsabilidade de executar o conteúdo de mídia contido nos documentos
NCL (<Media> elements) a um dos dispositivos selecionados. Segundo os autores, “a
maioria das implementações comerciais de Ginga-NCL ainda não suportam essa
funcionalidade, uma vez que a implementação do middleware é obrigatória, mas o
hardware necessário é opcional”.
CALIXTO et al (2013), apresentam um modelo baseado em serviços globais
para TV Digital híbrida (AL-MAJEED et al, 2012) e interativa, aliando a disponibilidade
e escalabilidade funcionalidades executando como serviços de PaaS (Platform as a
Service) na nuvem, dispositivos de segunda tela e aplicações Web universalizadas,
capazes de executar em qualquer browser.
Esta abordagem foi proposta visando aumentar as possibilidades de interação em
todos os possíveis cenários apresentados, como por exemplo, a presença ou ausência de
internet, a possibilidade de testar e avaliar as aplicações Web em browsers, a utilização
de dispositivos de segunda tela para a exibição de conteúdos complementares e a
adaptabilidade dos serviços levando-se em consideração a demanda e a escalabilidade.
Propõe-se o uso de algumas tecnologias a fim de alcançar estes objetivos, como: o uso de
HTML5 ou CE-HTML para a criação das aplicações Web e a comunicação da Segunda
Tela com o conteúdo broadcast da TV através de QR Codes.
30
Outro fator considerado pelos autores é a diferença nos padrões adotados pelos
países para a interatividade na TV, o que impossibilita a criação de um modelo que possa
ser utilizado globalmente. Há também, por parte das operadoras de TV, a falta de um
padrão na criação de aplicações tornando necessário o desenvolvimento de sistemas
chamados regionais que atendem apenas a necessidade de uma operadora.
O trabalho feito por SOARES (2012) pode ser considerado como um dos
pioneiros na extração e uso dos dados das tabelas de informação do SBTVD utilizando
como base o subsistema de midleware Ginga-J. O modelo de seu trabalho propõe o uso
das informações contextuais da programação corrente da TV utilizando a interatividade
proporcionada pela TV como uma ferramenta de agregação de valor ao conteúdo da grade
de programação das emissoras, fazendo uso de uma aplicação interativa, elaborada para
o middleware da TV com acesso à Internet.
Este trabalho também foi responsável pelo desenvolvimento de um módulo de
captura de informações, para a aplicação interativa elaborada sobre o middleware Ginga-
J (NBR 15606-4, 2010) e (NBR 15606-6, 2010), que descrevem o contexto da
programação transmitida pela TV. Informações que, para este trabalho, serão advindas
das tabelas de informação de serviço (Service Information – SI) fornecidas pelas
emissoras de TV.
Em parte, o módulo de captura de informações da programação da TV
desenvolvido por SOARES (2012) foi utilizado como base para a implementação do
módulo denominado Synced-TVAPP da solução Synced-DVT, proposta por este trabalho.
2.5.2. Sincronismo
Em seu trabalho SIMON; COMUNELLO; WANGENHEIM (2013) propõem
uma arquitetura para a utilização de dispositivos móveis como segunda tela de uma forma
sincronizada e contextualizada. Esta arquitetura utiliza um framework UPnP para o
reconhecimento de dispositivos conectáveis e o posterior pareamento entre eles e a TV.
Buscando descobrir quais soluções estavam sendo propostas para melhorar a
interação entre a TV e os dispositivos de segunda tela, uma revisão sistemática foi
conduzida, localizando um total de 13 pesquisas relevantes ao tema. Estas puderam ser
divididas em duas categorias: pesquisas focadas em controle remoto e as outras em
segunda tela. As pesquisas de controle remoto, em sua maioria, focavam na utilização de
31
dispositivos móveis como motivação para a melhoria de interação e navegação do Guia
de Programação Eletrônico (EPG - Eletronic Program Guide). As pesquisas focadas em
segunda tela abordavam diversas áreas de estudo, desde a investigação de formas
eficientes de descobrimento de dispositivos disponíveis para pareamento com a TV, até
o desenvolvimento de um sistema multiplataforma para o aprendizado informal de
línguas.
Na solução final proposta, cada TV presente na sala é responsável por gerenciar
os dispositivos conectados a ela independentemente, assim como o estabelecimento e
manutenção das conexões, o recebimento de mensagens e o envio de conteúdos
interativos. A conexão entre a TV e os dispositivos de segunda tela presentes é realizada
utilizando comunicação via socket, sendo necessário a leitura de um QR Code na TV para
a obtenção dos valores necessários ao estabelecimento da conexão.
DUONG; HOWSON; LEGALLAIS (2012) propuseram um mecanismo híbrido
de sincronismo entre TV e segunda tela envolvendo uma técnica de Audio Fingerprinting,
utilizada para reduzir o custo computacional, em conjunto com uma técnica de
Generalized Cross Correlation (GCC-PHAT) (BRANDSTEIN e SILVERMAN, 1997),
que oferece uma forma eficiente de comparação e identificação de padrões similares de
áudio.
Para que ocorra uma identificação confiável com o uso de técnicas de Audio
Fingerprinting, geralmente é necessária a extração de vários segundos de gravação, em
média de 5 a 10 segundos, sendo necessário esperar este tempo para que o serviço de
identificação seja iniciado. Segundo a proposta, ao adotar uma técnica de Cross
Correlation, a amostra de áudio necessária para a correta identificação do áudio pode
diminuir para apenas um segundo, garantindo ainda uma porcentagem de reconhecimento
de aproximadamente 92%.
É importante lembrar que para que ambas as técnicas, Audio Fingerprinting e
Cross Correlation, sejam aplicadas corretamente é necessário um armazenamento prévio
em banco de dados do conteúdo original do sinal de áudio, assim como, de todos os
fingerprints previamente computados.
No trabalho apresentado por HOWSON et al (2011), intitulado Second Screen
Synchronization, é proposta uma solução para o sincronismo entre conteúdos transmitidos
32
via broadcast e broadband multicast. Utilizando-se a inserção de uma timeline nos dois
fluxos de conteúdo, é possível fazer o fino e correto sincronismo entre os mesmos. No
caso do fluxo broadcast o conteúdo da timeline é inserido na codificação MPEG2-TS da
programação a ser exibida de acordo com a especificação DVB para o envio de dados
auxiliares de sincronismo. Por sua vez, a informação de timeline no fluxo broadband não
segue qualquer especificação, sendo transmitida em conjunto com o conteúdo
complementar via RTSP (Real Time Stream Protocol).
A abordagem proposta no trabalho de HOWSON et al (2011) tem como
vantagem a adaptabilidade de uso para qualquer plataforma existente ou futura de TVD,
uma vez que a timeline necessária ao sincronismo é independente da plataforma.
Entretanto, um esforço maior é necessário para a manutenção destas timelines replicadas
e a necessidade de provedores de conteúdo de tempo real robustos num cenário real de
uso, tornando sua implantação bastante custosa e improvável.
SEGUNDO e SANTOS (2013) apresentam em seu trabalho uma solução para
a sincronização entre TV e dispositivos de Segunda Tela. A solução apresentada,
denominada Event Flow Synchronization, foi baseada no Protocolo de Sincronização de
Fluxo (Flow Synchronization Protocol) proposta por ESCOBAR; PARTRIDGE;
DEUTSCH (2002).
Este protocolo propõe calcular o atraso no recebimento de conteúdo nas duas
fontes que devem sincronizar, definindo qual dos atrasos é o maior adotando-o como
valor mínimo necessário para a sincronização dos diferentes fluxos. Uma vez que o
mesmo tempo de atraso passa a ser utilizado em ambos os fluxos as informações passam
a ser recebidas sincronizadas no destino.
É importante salientar que, para transmissões em TV digital, o atraso a ser
calculado deve levar em consideração o tempo necessário para o processamento do sinal
digital em todas as camadas do sistema da TV, incluindo os codificadores,
decodificadores e multiplexadores. Na segunda tela, o atraso deve considerar o tempo de
carregamento do conteúdo complementar, assim como a latência e banda da rede sendo
utilizada.
Uma vez que, modificar o tempo de atraso da transmissão do conteúdo televisivo
é inviável, dado que um usuário não tem acesso a fonte transmissora, em casos onde o
33
recebimento do conteúdo a ser exibido pela segunda tela é menor que o do conteúdo a ser
exibido pela TV, ou seja, o atraso da TV é maior que o da segunda tela, a proposta torna-
se inviável.
Diferentemente das propostas apresentadas anteriormente, o trabalho Synced-
DTV, proposto por este trabalho, apresenta um modelo simples e de fácil implantação que
utiliza os dados contextuais enviados pelas emissoras de televisão para a obtenção de
conteúdos complementares Web de forma síncrona utilizando uma infraestrutura de rede
local sem fio (wifi) e utilizando um dispositivo de Segunda Tela para a exibição deste
conteúdo complementar. Este modelo proposto não modifica o sinal transmitido pela
emissora nem, tampouco o conteúdo de áudio e vídeo enviado, tornando uma solução de
fácil adoção por emissoras que disponibilizam TV Digital aos seus telespectadores.
34
3 SYNCED-DTV
Uma vez descritos os conceitos relacionados às tecnologias de TV Interativa e
Segunda Tela, utilizados como fundamentação teórica para a elaboração deste trabalho,
este capítulo apresenta a metodologia de elaboração da solução proposta, intitulada de
Synced-DTV. Nele será apresentada a visão geral da proposta, descrevendo os
subsistemas que compõem a solução e suas funcionalidades, serão demonstrados alguns
cenários de uso que corroboram a aplicabilidade da solução. Posteriormente serão
descritos alguns dos principais requisitos levantados para a realização da implementação
da infraestrutura, serão apresentados o diagrama de casos de uso e a descrição detalhada
de cada um destes casos e, por fim, serão apresentadas a arquitetura adotada para a
implementação do Synced-DTV e a comparação do modelo proposto com outras
abordagens já existentes.
3.1 Visão Geral
O Synced-DTV pode ser considerado uma implementação de referência de uma
infraestrutura modular de software para TV digital híbrida, que tem por finalidade propor
uma forma contextualizada e menos invasiva de sincronismo entre o conteúdo transmitido
pela TV e conteúdos complementares oferecidos através da Internet aos telespectadores,
agregando valor à experiência televisiva do usuário.
Como forma de apresentar os conteúdos complementares advindos da Internet,
o modelo proposto utilizou websites que apresentam informações referentes à
programação oferecida por uma emissora de TV, podendo conter informações mais
detalhadas sobre os assuntos abordados pela programação da TV, descrições dos
personagens participantes do programa, cenas de um próximo capítulo ou então outros
conteúdos mais aprofundados que não puderam ser abordados devido à falta de tempo na
grade de programação. É importante ressaltar que, o conteúdo complementar
disponibilizado poderia ser de qualquer natureza que não websites, como por exemplo,
vídeos, outras aplicações de TV ou até mesmo aplicações para desktops, smartphones e
tablets.
Como a proposta deste modelo de referência é demonstrar uma forma contextual
e menos invasiva, do ponto de vista do telespectador, de agregar conteúdo complementar
Web sensível à programação corrente da TV, foi necessária a construção de uma
35
infraestrutura modular de software composta por vários subsistemas que funcionam de
maneira independente, mas que podem se comunicar através de conexões de rede. Estes
subsistemas, em conjunto, compartilham informações que possibilitam a convergência
entre o conteúdo transmitido pelo fluxo televisivo e um conteúdo complementar a ser
exibido em um dispositivo de segunda tela, como por exemplo, um smartphone ou tablet.
O modelo proposto apresenta basicamente três módulos principais, cada qual
com suas funcionalidades específicas e responsabilidades, são eles:
1- Synced-TVApp: Subsistema central da implementação de referência
responsável pela aquisição dos dados contextuais da programação da TV e
envio destas informações para a segunda tela.
2- Synced-WebServers: Subsistema responsável pelo armazenamento e
disponibilização do conteúdo complementar web para os outros módulos que
compõem o modelo.
3- Synced-SecondScreenApp: Subsistema responsável pelo processamento
contextual dos dados da TV, gerenciamento dos momentos de sincronismo
entre os conteúdos e por prover uma forma automatizada e contextualizada
para a exibição do conteúdo complementar de forma não invasiva e
personalizada.
A Figura 2 ilustra todos os subsistemas da infraestrutura de software
desenvolvida pelo trabalho projetado sobre uma infraestrutura de hardware que viabiliza
o cenário do Synced-DTV.
O subsistema residente na TV, Synced-TVApp, é responsável pela mineração dos
dados contextuais o que inclui a identificação do canal corrente, assim como a obtenção
de informações que possam identificar qual a programação sendo exibida no instante da
extração dos dados. Estas informações são disponibilizadas pelo sistema de TV Digital
(ex. SBTVD) podendo ser obtidas por meio das tabelas EIT (Event Information Table)
(NBR 15603-2, 2008) e (EN_300_468:2007, 2007) presentes em cada fluxo de
transmissão. Futuramente, no capítulo 4, será explicado o processo de captura das
informações contextuais das tabelas EIT, assim como a definição de quais destas
informações são relevantes à implementação da infraestrutura modular de software do
Synced-DTV.
36
Figura 2 - Subsistemas do cenário do Synced-DTV.
Uma vez que os dados contextuais da programação televisiva corrente estejam
disponíveis, estas informações são repassadas ao subsistema Synced-SecondScreenApp,
possibilitando a exibição dos recursos adicionais que possam ser pertinentes ao interesse
do usuário.
3.2 Cenários de Uso
Com o objetivo de enriquecer o entendimento deste trabalho, alguns cenários de
uso serão descritos, através de estórias, ilustrando a aplicabilidade do modelo Synced-
DTV no cotidiano dos usuários.
3.2.1. Cenário Um
“Anderson, um engenheiro de software de 25 anos de idade chega em sua casa
após o dia de trabalho, ativa a rede wifi do seu smartphone android, com a intenção de
receber os e-mails não lidos durante sua viagem para casa, e vai jantar. Após a refeição,
ele decide ligar sua TV Digital para assistir a telenovela, o qual, de acordo com o
horário, deve estar apenas no primeiro capítulo. Torcedor frenético do Clube Náutico
Capibaribe, sabe que após a novela será televisionado uma partida de seu time pelo
campeonato brasileiro. Estando bastante cansado da exaustiva jornada de trabalho e do
longo trajeto para casa, Anderson, decide ir descansar um pouco na sua cama até o
37
horário de início da partida, quando cai no sono. Por sorte, Anderson havia previamente
configurado a aplicação Synced-SecondScreenApp instalada em seu smartphone para
ser notificado quando transmissões esportivas estivessem sendo exibidas na TV. Assim
que a novela acaba e as informações da tabela EIT são atualizadas indicando o início da
partida, o módulo Synced-TVApp, executando na TV, notifica o subsistema Synced-
SecondScreenApp no smartphone e fazendo tocar um alarme de notificação que acordará
Anderson, possibilitando a ele assistir à partida de seu time.”
3.2.2. Cenário Dois
“Em uma quinta-feira, início da tarde, Fátima de 22 anos está em casa
estudando para as provas da faculdade que irá fazer no dia seguinte. Como principal
fonte de estudos utiliza um tablet contendo os materiais digitalizados necessários a
preparação para a prova, assim como acessa constantemente materiais complementares
em fóruns na Internet, sempre conectada pela rede sem fio de sua casa. Sua irmã, uma
criança de apenas 10 anos, passa a tarde inteira assistindo TV na sala, e para não
atrapalhar seus estudos Fátima decide ir estudar em seu quarto. Desejando saber o
momento em que o filme a ser exibido a tarde fosse começar para ir assistir juntamente
com sua irmã, ela configura a aplicação Synced-SecondScreenApp instalada em seu
tablet para ser interrompida quando um conteúdo televisivo do tipo Filme for iniciado,
porém gostaria de receber notificações para qualquer outro gênero de programação.
Desta forma poderia saber o momento em que o filme da tarde seria transmitido, assim
como também saber detalhes das programações, utilizando as URLs de conteúdo Web
complementar contextualmente extraídos pelo módulo Synced-SecondScreenApp na TV,
sua irmã mais nova está assistindo.”
3.2.3. Cenário Três
“Rodrigo, estudante de ciências políticas com 25 anos de idade, acorda cedo
todas as manhãs e assiste ao telejornal antes de sair para a faculdade. O principal motivo
de assistir ao telejornal é manter-se sempre informado sobre os acontecimentos do
cenário político brasileiro e as coligações partidárias feitas para as eleições vindouras.
Neste dia em especial houve uma entrevista ao vivo com o presidente de um dos principais
partidos para a corrida presidencialista, onde foi tratado o declínio nas últimas
pesquisas de seu candidato e os motivos para tal cenário. Devido ao tempo
disponibilizado para a entrevista pela grade televisiva, diversos pontos e
38
questionamentos ficaram inexplorados, sendo disponibilizada uma URL que
possibilitaria o envio de questionamento diretamente ao entrevistado e também a
disponibilização de informações das últimas pesquisas e dos últimos acontecimentos que
influenciaram a queda nas pesquisas“.
Analisando as estórias descritas anteriormente é possível identificar situações
em que o uso de conteúdos Web adicionais ou uma abordagem contextualizada das
informações disponibilizadas pela TV possam ser enriquecedores à experiência do
usuário, trazendo um volume maior de informações úteis ao telespectador. Observe que
a interação entre a TV e o dispositivo de segunda tela vai além da disponibilização de
conteúdos complementares, como mostrado no Cenário Um e Cenário Dois, servindo
também como intermediador do desejo do usuário por um gênero televisivo específico.
É importante perceber que a obtenção do contexto televisivo, que inclui todas as
informações necessárias para a identificação da programação sendo transmitida, é de
extrema importância e deve ser obtida da forma menos intrusiva ou imperceptível ao
usuário. Como observado no Cenário Três, caso haja a necessidade de alguma interação
complexa ou custosa do usuário para a obtenção do conteúdo complementar
disponibilizado, como por exemplo, a necessidade de copiar uma URL de acesso à
informação, poderia ocasionar um desinteresse pela obtenção da informação. Na solução
Synced-DTV aqui apresentada as informações relacionadas à programação é obtida de
forma menos intrusiva possível, assim como a obtenção do conteúdo relacionado a este
contexto pode ser facilmente acessado pelo usuário.
Outra característica explicitada pelo segundo e terceiro cenários é a possibilidade
da transmissão da informação da TV para o smartphone, pois, em alguns ambientes, a TV
como uma é utilizada ferramenta coletiva de entretenimento, e a intenção de interação
com as aplicações podem ser despertadas em apenas um usuário, ou até mesmo a intenção
pode ser de vários usuários, mas com intenções distintas.
3.3 Levantamento dos requisitos
As subseções a seguir apresentam alguns requisitos funcionais e não funcionais
à implementação de uma solução de compartilhamento contextual de informações entre
a plataforma de TVs híbridas, o uso de dispositivos de segunda tela e a comunicação entre
39
eles. Estes requisitos elucidam desde a obtenção dos dados contextuais da tabela EIT da
programação corrente até o carregamento das informações advindas da Web do conteúdo
complementar. Estas subseções elucidam alguns dos requisitos mandatórios observados
durante a implementação do Synced-DTV.
3.3.1. Requisitos Funcionais
A seguir serão listados os requisitos funcionais (RFs), sendo categorizados em
três módulos: RF-TV requisitos funcionais do módulo da TV (Synced-TVApp), RF-WS
requisitos funcionais do módulo provedor dos conteúdos complementares (Synced-
WebServers), RF-AA requisitos funcionais do módulo móvel (Synced-
SecondScreenApp).
Os requisitos funcionais do módulo da TV são:
RF-TV.1 – Fornecer um serviço responsável por realizar a captura das
informações contextuais da TV de forma não invasiva;
RF-TV.2 – Fornecer um serviço responsável pela validação,
armazenamento e processamento das informações contextuais da TV;
RF-TV.3 – Fornecer um serviço responsável pela geração de uma
estrutura de dados contendo as informações contextuais obtidas;
RF-TV.4 – Fornecer um serviço responsável pela obtenção dos
parâmetros de conexão necessários para a transmissão dos dados
contextuais;
RF-TV.5 – Fornecer um serviço responsável pelo estabelecimento das
conexões e consequentemente envio das informações contextuais aos
dispositivos de segunda tela;
Os requisitos funcionais do módulo dos WebServers são:
RF-WS.1 – Fornecer um serviço responsável pelo armazenamento dos
recursos referentes a cada um dos programas do canal de uma emissora;
RF-WS.2 – Fornecer um serviço responsável pela disponibilização de
transmissão dos recursos relacionados à programação para a TV;
40
Os requisitos funcionais do módulo de Segunda Tela são:
RF-AA.1 – Fornecer um serviço responsável pela captura dos dados
contextuais enviados pelo módulo da TV.
RF-AA.2 – Fornecer um serviço responsável pela interpretação e
validação dos dados contextuais enviados pelo módulo da TV.
RF-AA.3 – Fornecer um serviço responsável pelo sincronismo na
exibição dos conteúdos complementares.
RF-AA.4 – Fornecer um serviço responsável pela decisão das formas de
interação e exibição dos conteúdos complementares.
3.3.2. Requisitos Não Funcionais
Abaixo estão listados os principais requisitos não funcionais (RNF) tomados
para o desenvolvimento do modelo proposto.
RNF.1 – Desenvolver uma arquitetura de software que disponibilize
módulos de suporte à execução de aplicações sensíveis ao contexto para
TVs Híbridas fornecendo aos usuários conteúdos complementares
obtidos na Internet associados à programação broadcast;
RNF.2 – A solução proposta deve ser desenvolvida estando de acordo
com as especificações do Sistema Brasileiro de TV Digital (SBTVD);
RNF.3 – Especificar uma estrutura de dados simplificada porém
completa para a transmissão dos dados contextuais da programação da
TV ao dispositivo de segunda tela.
RNF.4 - Utilizar as informações contextuais do telespectador, tanto da
TV quanto da aplicação no dispositivo móvel, para a tomada de decisão
de quais ações devem ser realizadas durante o sincronismo entre os
módulos do sistema;
RNF.5 – Realizar a medição do esforço necessário a mineração dos dados
do contexto até a chegada e tratamento no dispositivo de segunda tela;
41
RNF.6 – Realizar um estudo de usabilidade buscando refinar os
parâmetros utilizados no algoritmo de temporização do sincronismo;
RNF.7 - A solução proposta deverá ser independente do sistema
operacional embarcado na plataforma de execução, sendo necessário
apenas que o módulo da TV deverá funcionar sobre o middleware Ginga,
os servidores Web sobre a máquina virtual Java, o canal de troca dos
dados contextuais utilizará o protocolo UDP (broadcast de rede) e o
módulo móvel executará sobre a plataforma Android.
3.4 Diagrama dos Casos de Uso
Uma vez levantados os requisitos demonstrados na seção anterior, foram
definidos alguns casos de uso baseados na linguagem UML, descrevendo as principais
funcionalidades do modelo e a interação dessas funcionalidades com os usuários do
sistema, ou seja, aborda em um nível maior de abstração as interações entre usuários
externos e o sistema. A seguir são descritos os principais atores presentes no Synced-
DTV:
Usuário: Representa a entidade que interage com a TV e com a aplicação
no dispositivo móvel, com o intuito de permitir e consumir os recursos
contextualizados com a programação;
Provedor de Conteúdo Web: Corresponde à entidade que é responsável
por armazenar e disponibilizar todos os recursos Web relacionados à
programação;
Transmissora: Corresponde à entidade responsável pelo envio do fluxo
de áudio e vídeo, assim como dos dados contextuais sobre a programação
transmitida para a TV via canal broadcast. Um provedor de serviço, no
contexto de TV aberta, pode ser informalmente conhecido como
emissora de TV.
A
42
Figura 3 a seguir representa um diagrama geral dos casos de usos que ilustra os
principais casos especificados para a infraestrutura deste trabalho.
Figura 3 - Diagrama de casos de uso nível zero do Synced-DTV.
3.5 Descrições dos Casos de Uso
As tabelas a seguir descrevem os principais casos de uso analisados durante o
desenvolvimento da solução, considerando a forma como o usuário interage com os
módulos da solução.
A Tabela 2 a seguir define o caso de uso que descreve o caso de uso “Configurar
a TV”.
43
Tabela 2 – Configurar a TV
Caso de Uso: 01 Configurar a TV
Ator Usuário.
Descrição
O usuário deve habilitar, através do menu de configuração da
TV, a propriedade que torna possível a execução automática de
aplicativos interativos recebidos pelo fluxo televisivo.
Evento Iniciador Configuração da TV
Pré-condição Nenhuma.
Pós-condição Execução automática de aplicações interativas.
Extensões Não há extensões.
Inclusões Caso de uso “Obter Dados Contextuais”, “Validar Dados
Contextuais” e “Enviar Dados Contextuais”.
A Tabela 3 a seguir define o caso de uso que descreve o caso de uso “Obter
Dados Contextuais”.
Tabela 3 – Obter Dados Contextuais
Caso de Uso: 02 Obter Dados Contextuais
Ator Usuário.
Descrição
A aplicação Synced-TVApp captura de forma implícita as
informações contextuais da programação sendo atualmente
exibida na TV, como o nome, horários e descrição.
Evento Iniciador Solicitação do conteúdo complementar pela aplicação.
Pré-condição
Aplicação Connected-TVApp em execução na TV, programação
digital com os dados das tabelas de informação de serviço e
eventos disponíveis.
Pós-condição Captura das informações contextuais da programação da TV
advindas das tabelas de informação de serviço (SI) e eventos
44
(EIT), utilizados posteriormente para o sincronismo do
dispositivo de segunda tela.
Extensões Não há extensões.
Inclusões Não há inclusões.
A Tabela 4 a seguir define o caso de uso que descreve o caso de uso “Validar
Dados Contextuais”.
Tabela 4 – Validar Dados Contextuais
Caso de Uso: 03 Validar Dados Contextuais
Ator Usuário.
Descrição
Validações sobre duplicidade e não conformidades dos dados são
executadas. Se os dados estiverem corretos, um JSON é criado
contendo as informações para posterior envio.
Evento Iniciador Solicitação do conteúdo complementar pela aplicação.
Pré-condição
Aplicação Connected-TVApp em execução na TV, programação
digital com os dados das tabelas de informação de serviço e
eventos já capturados e armazenados.
Pós-condição
Dados validados e tratados para o envio ao dispositivo de
segunda tela, ou dados descartados por serem ou inválidos ou
incompletos ou repetidos.
Extensões Não há extensões.
Inclusões Não há inclusões.
As descrições de caso de uso que não foram explanadas nesta seção podem ser
encontradas no APÊNDICE I
deste trabalho.
45
3.6 Arquitetura
Esta seção apresenta a arquitetura adotada para a implementação do modelo
proposto por este trabalho, apresentando detalhes da aplicação Synced-TVApp, que
executa na TV e que é considerada o módulo principal da solução por ser responsável
pela obtenção e gerenciamento dos dados contextuais, e da aplicação Synced-
SecondScreenApp, aplicação que executa no dispositivo de segunda tela.
A arquitetura utilizada para a implementação do modelo de comunicação entre
este módulo da proposta e o módulo no dispositivo de segunda tela, representado pela
aplicação Synced-SecondScreenApp, é a de cliente-servidor, pois o módulo residente na
TV se comporta como um servidor sendo responsável pelo envio e gerenciamento dos
dados contextuais e a aplicação móvel como cliente, recebendo estes dados, processando
e exibindo ao usuário.
3.6.1. Synced-TVApp
A arquitetura em camadas utilizada para o desenvolvimento do Synced-DTV
apresenta apenas dois módulos, Controller e Model, uma vez que não há a necessidade
de uma camada de UI, onde seria mais aconselhada a utilização de um padrão MVC. Esta
arquitetura foi escolhida pois concede um baixo acoplamento do código gerado,
mantendo a organização e proporcionando também uma melhor manutenção menos
dispendiosa dos componentes do software.
A Figura 4 a seguir demonstra a arquitetura adotada na construção da Synced-
TVApp.
Figura 4 - Arquitetura da aplicação Synced-TVApp
46
Na camada de Controller encontram-se as classes responsáveis pelo controle do
ciclo de vida da aplicação, representada pela classe XletMain. Esta classe é executada,
como falado anteriormente no caso de uso “Configurar a TV”, quando a aplicação é
recebida e instalada na TV. Nesta camada também se encontra o ServiceManager, módulo
responsável pelo gerenciamento das conexões de envio dos dados contextualizados para
os dispositivos de segunda tela.
A camada de Model é a responsável pelo controle e manipulação de dados, desde
o momento da garantia de acesso de leitura (processo de lock) à tabela IET para a
aquisição dos dados contextuais da programação corrente. Este processo de lock para a
obtenção dos dados é feito pela classe SIServiceHandler.
Uma vez que os dados podem ser acessados, a classe SIServiceProvider recupera
e armazena os dados contextuais da programação corrente da tabela, repassando essas
informações ao módulo NetworkDataService que é o responsável por realizar o envio da
informação via broadcast para o módulo Synced-SecondScreenApp.
3.6.2. Synced-SecondScreenApp
A arquitetura utilizada para o desenvolvimento do Synced-SecondScreenApp
segue os princípios do modelo MVC (Model View Controller). Na camada de View
contém as classes responsáveis pela criação do wizard inicial da aplicação, onde o usuário
47
define as suas preferências de conteúdo, e também a implementação necessária para a
exibição do conteúdo Web complementar.
Na camada de Model estão dispostas as classes responsáveis pelo
armazenamento, validação, normalização e disponibilização dos dados complementares
recebidos. Esta camada recebe inicialmente um JSON bruto enviado pela aplicação
Synced-TVApp, valida, extrai, normaliza os dados temporais dos pontos de sincronismo e
disponibiliza estes dados para a camada de controle.
A camada de Controller contém a classe ConnectionService, que é uma classe
do tipo Service do android, responsável por gerenciar o estabelecimento de conexões para
o recebimento dos dados contextuais da TV, assim como um módulo de suporte a este
Service, implementado utilizando BroadcastReceiver, representado pela classe
ConnectionBroadcastReceiver, capaz de identificar o status de conectividade de rede do
dispositivo, logo, sempre que é identificado que o usuário se conectou a uma rede wifi, o
BroadcastReceiver verifica a rede e inicializa o serviço possibilitando conexões serem
estabelecidas.
Outra atribuição da camada Controller é o processo de descobrimento do que o
usuário está fazendo no momento do recebimento do conteúdo da TV, sendo esta
informação levada em consideração na tomada de decisão na interrupção ou notificação
da chagada de dados novos ao usuário.
A Figura 5 a seguir ilustra a arquitetura adotada na construção da aplicação
Synced-SecondScreenApp:
Figura 5 - Arquitetura da aplicação Synced-SecondScreenApp
48
3.7 Comparação com Modelos de TV e Tecnologias de Sincronismo
No capítulo 2, foram descritos alguns modelos de TV Digital, assim como
algumas das tecnologias atualmente disponíveis para realização do sincronismo entre a
programação transmitida pelo fluxo televisivo e os conteúdos complementares
comumente disponibilizados pela web. Buscando comparar a arquitetura definida para a
implementação do processo de sincronismo dos dados contextuais do Synced-DTV com
as de outras soluções e abordagens descritas no capítulo 2, alguns critérios foram
levantados, levando-se em consideração o esforço para a adoção de uma destas propostas
num cenário realístico de uma emissora TV aberta.
Os critérios definidos para a comparação são:
1. Recursos Externos Necessários: Critério que considera a necessidade
de recursos de hardware externos exclusivamente para a implantação
da proposta, como por exemplo, servidores para processamento de
arquivos de mídia.
2. Complexidade de Desenvolvimento da Solução: Critério que
considera o esforço computacional necessário para a implantação de
49
uma solução, considerando a necessidade de criação de algoritmos
específicos.
3. Manipulação do Conteúdo de Mídia Original: Critério que
evidencia a necessidade de modificação do arquivo de mídia original
para a implantação da solução.
4. Facilidade de Uso: Critério que considera a dificuldade e o esforço
necessário durante o processo de sincronismo da aplicação do pondo
de vista do usuário.
5. Confiabilidade no Sincronismo: Critério que avalia a confiabilidade
do sincronismo da solução, seja durante o processo de captura dos
pontos de sincronismo, ou pelo atraso na exibição dos dados
contextuais.
A Tabela 5 abaixo demonstra o desempenho dos modelos e tecnologias
propostas no capítulo 2 utilizando o conjunto de critérios definido anteriormente.
Tabela 5 - Fatores de comparação
Solução Recursos
Necessários
Complexidade de
desenvolvimento
da Solução
Manipulaçã
o do
Conteúdo
de Mídia
Original
Facilid
ade de
Uso
Confiabilid
ade no
Sincronism
o
Audio Fingerprinting Sim Alta Sim Médio Médio
Audio Watermarking Sim Alta Sim Médio Médio
50
Video Recognition
Sim Alta Não Baixa Baixo
Local TV
Synchronization
Não Baixa Não Alta Alto
Internet
Synchronization
Não Baixa Não Alta Alto
Quando levado em consideração a necessidade de recursos externos para o
funcionamento da solução as técnicas de Audio Fingerprinting, Audio Watermarking e
Video Recognition claramente necessitam de servidores externos remotos para o
processamento necessário à identificação do fluxo televisivo e posterior sincronização.
Na técnica de Local TV Synchronization o uso de servidores externos para o sincronismo
não é necessário uma vez que a informação necessária para o sincronismo pode ser
enviada juntamente com o fluxo de mídia e no caso da Internet Synchronization o
conteúdo complementar é disponibilizado em tempo “real” com a programação exibida.
O segundo critério a ser considerado mostra a complexidade de implementação
de uma solução utilizando as técnicas demonstradas. Neste critério, mais uma vez, as
técnicas de Audio Fingerprinting, Audio Watermarking e Video Recognition demonstram
ser mais complexos, em grande parte, pela necessidade de desenvolvimento de um
algoritmo específico para o reconhecimento e sincronização das mídias. Nas outras
técnicas este artifício não é necessário pois o processo de sincronismo acontece através
de outros mecanismos.
O terceiro critério aborda a necessidade de manipular o conteúdo de mídia
original buscando inserir informações necessárias ao correto sincronismo entre o fluxo
televisivo e o conteúdo de segunda tela. Nas técnicas de Audio Fingerprinting e Audio
Watermarking este tipo de abordagem é necessária, como explicado no capítulo 2. As
51
outras técnicas descritas utilizam formas de sincronismo menos invasivas, tornando
dispensável a manipulação da mídia original.
A Facilidade de Uso, abordado no quarto critério da tabela, faz referência ao
esforço necessário ao usuário para que o sincronismo possa acontecer. Nas técnicas de
Local TV Synchronization e Internet Synchronization apresentam uma abordagem mais
satisfatória neste quesito, especialmente por não necessitar de interações constantes do
usuário, ou estão suscetíveis a falhas no sincronismo devido a ruídos ou má captura dos
frames do vídeo da programação.
Por fim, o ultimo critério aborda a confiabilidade do sincronismo gerado pela
solução, considerando todos os fatores exógenos que podem interferir no processo de
sincronização como, por exemplo, latência de Internet, processamento necessário para a
geração e/ou identificação dos pontos de sincronismo e as dependências, e possíveis
interferências, das soluções externas obrigatórias a execução de uma técnica. Neste
quesito, a técnica de Local TV Synchronization mostrou-se a mais satisfatória por não
apresentar dependências com serviços externo, dependendo assim apenas das
informações contextuais da TV e do inevitável carregamento do conteúdo web
complementar. A solução de Internet Synchronization, uma vez que contemplada da
forma correta, também tem o potencial de exibir uma ótima qualidade no sincronismo dos
conteúdos, uma vez que o mesmo provedor seria o responsável por gerenciar o envio
síncrono de ambos.
3.8 Discussões
Este capítulo apresentou detalhes sobre a elaboração do Synced-DTV como uma
proposta de solução para a sincronização de conteúdos complementares, através do uso
de informações contextuais da programação corrente, em ambientes de TV híbrida. Para
isto, a extração dos dados de alguns campos obrigatórios e opcionais da tabela SI do
SBTVD é essencial na obtenção dos pontos de sincronismo entre os conteúdos, assim
como das URLs de acesso ao conteúdo web complementar a programação atualmente
transmitida pela TV.
Foram apresentadas as arquiteturas das aplicações Synced-TVApp, Synced-
WebServers e Synced-SecondScreenApp que podem ser utilizadas como referências para
a implementação de qualquer outra solução de sincronismo de conteúdos de TV digital
52
híbrida, pois apresentam uma disposição modular e bem construída, podendo ser
estendida ou utilizada como base para o desenvolvimento de qualquer aplicação de
propósito semelhante.
53
4 Implementação da Solução
No capítulo anterior foram descritos detalhes sobre a elaboração dos requisitos
funcionais, bem como da arquitetura do Synced-DTV, além de uma visão geral da solução
proposta por este trabalho.
Este capítulo será focado na apresentação da implementação, execução e
validação das arquiteturas dos módulos que compõem a solução proposta por este
trabalho. Será explanada a forma proposta para o envio dos dados contextuais de
sincronismo com a segunda tela, assim como todos os artifícios utilizados para o
desenvolvimento dos módulos Synced-WebServers, Synced-TVApp e Synced-
SecondScreenApp. Também serão apresentados os resultados dos testes de desempenho
e aceitação realizados para a validação da estrutura do modelo proposto. Por fim, serão
abordadas a dificuldades encontradas e soluções adotadas, restrições tecnológicas, os
ambientes de software utilizados e as considerações finais do trabalho.
4.1 Sincronismo com Segunda Tela
Um dos pontos principais deste trabalho é a utilização do atual sistema de envio
de dados contextualizados da programação pela emissora, através das tabelas de
informações e eventos, para o também envio dos momentos ou pontos de sincronismo
entre a programação transmitida e um conteúdo web complementar a ser exibido por um
dispositivo de segunda tela.
Há diversas formas, cada uma com suas vantagens e desvantagens, para o envio
das informações necessárias ao sincronismo, como por exemplo, via Pulling, Pushing ou
por Single Signaling. Em uma abordagem via Pulling a aplicação no dispositivo de
segunda tela seria responsável por sistematicamente verificar a disponibilidade de um
novo conteúdo no servidor, uma vez que ele não saberia de antemão os momentos de
sincronismo. Esta abordagem seria muito custosa em diversos aspectos, como largura de
banda, escalabilidade constante de conexões no servidor e gasto de recursos de bateria no
dispositivo de segunda tela.
Em uma abordagem via Pushing, o envio das informações seria feito diretamente
aos dispositivos de segunda tela. Neste cenário, seria necessário o armazenamento, por
parte das emissoras, de todos os usuários da aplicação para que o envio por notificações
push fosse possível. Esta abordagem requer a criação, manutenção e gerenciamento de
54
um banco de dados robusto e escalável e de um sistema de envio de notificações push que
tornasse possível o envio instantâneo das informações de sincronismo a todos os usuários
da base.
A abordagem Single Signaling, utilizada no desenvolvimento da solução Synced-
DTV, utiliza a atual estrutura de envio de informações sobre a programação pelas
emissoras, para o envio das informações necessárias ao sincronismo e que, uma vez
recebida essas informações, apenas em momentos em que haja um ponto de sincronismo
entre os conteúdos televisivo e complementar web, a conexão com o servidor de conteúdo
necessita ser estabelecida. Ou seja, a partir de um sinal único, enviado pelas emissoras
por broadcast de transmissão, contendo os pontos de sincronismo, é possível determinar
os momentos em que os servidores devem escalar esperando por múltiplas conexões de
usuários em busca do conteúdo complementar.
Para a implementação do Single Signaling é proposto neste trabalho a utilização
de um dos campos opcionais já existente na tabela EIT, chamado Extended Event
Descriptor, ou Descritor de Evento Estendido. Este campo, como o próprio nome
enfatiza, deve ser utilizado para prover ao usuário uma descrição mais detalhada sobre a
programação atual sendo transmitida, como por exemplo, uma descrição detalhada do
capítulo atual de uma novela ou informações relevantes sobre onde encontrar informações
adicionais a cerca de um determinado conteúdo em exibição.
O campo Descritor de Evento Estendido, como definido em (NBR 15603-2,
2008), deve obrigatoriamente estar de acordo com a EN 300 744 (2007), subseção 6.2.15.
A semântica para este descritor deve obrigatoriamente ser:
1. Descriptor_number: campo de 4 bits que deve obrigatoriamente informar o
número do descritor. Ele deve obrigatoriamente ser utilizado para associar a
informação de que não cabe em um único descritor. O descriptor_number do
primeiro extended_event_descriptor de uma associação de
extended_event_descriptors deve obrigatoriamente ser “0x0”. O
descriptor_number deve obrigatoriamente ser incrementado de 1 a cada
extended_event_descriptor adicional nesta seção.
2. ISSO_639_language_code: campo de 24 bits que deve obrigatoriamente
identificar a linguagem do componente (no caso de áudio ou dados) e uma
descrição em texto que pode estar contida no descritor. A ISO
639_language_code contém um código de 3 caracteres conforme a ISO 639-2.
Cada caractere deve obrigatoriamente ser codificado em 8 bits de acordo com a
ISO/IEC 8859-15 e inserido na ordem no campo de 24 bits;
55
3. Text_char: O conteúdo enviado no campo text_char especifica o complemento
do texto enviado pelo short_extended_descriptor. A informação do texto é
codificada de acordo com a ISO/IEC 8859-15.
Uma vez definida a forma pela qual a informação necessária para que o
sincronismo ocorra será enviado ao usuário, o próximo passo é definir uma estrutura
textual simplificada capaz de transmitir os dados necessários ao correto sincronismo entre
o conteúdo transmitido pela TV e o conteúdo complementar web. O documento JSON
(JavaScript Object Notation – Notação de Objetos JavaScript) exibido na caixa de texto
abaixo demonstra um exemplo da formatação proposta por este trabalho.
{
"syncpoints": [
{"time":"200","inttype":0,
"url":"http://192.168.0.127/teste/index.php"},
{"time":"300","inttype":1,
"url":"http://192.168.0.127/teste/teste1.php"},
{"time":"400","inttype":0,
"url":"http://192.168.0.127/teste/teste2.php"}
]
}
Note que a estrutura do documento JSON proposto apresenta determinadas
chaves, cada uma com um propósito específico para o correto estabelecimento do
sincronismo. São eles:
1. sync_points: Objeto principal do documento, tendo como conteúdo uma
coleção ou array de elementos que contém os dados necessários ao
sincronismo entre os conteúdos.
56
2. time: Contém o tempo, em segundos, a partir do início da transmissão do
conteúdo televisivo no qual um sincronismo deve acontecer.
3. int_type: Diminutivo de Tipo de Interrupção (Interruption Type), podendo
assumir inicialmente dois valores:
0: quando apenas uma notificação deve ser exibida ao usuário acerca
de um novo ponto de sincronismo ocorrido.
1: quando a interrupção pode/deve alterar o conteúdo exibido na
segunda tela.
4. url: URL para acessar o conteúdo web relacionado a este ponto de
sincronismo.
É importante observar que o modelo proposto é expansível a qualquer
quantidade de pontos de sincronismo necessários, assim como adaptável a qualquer
realidade requerida pelas operadoras. Uma vez que o conteúdo a ser transmitido possa ser
traduzido em texto, o JSON proposto pode ser adaptado ou reformatado para atingir às
exigências requeridas.
4.2 Synced-WebServers
O subsistema Synced-WebServers é responsável pelo armazenamento, controle
e disponibilização na web do conteúdo complementar consumido durante o processo de
sincronismo com a programação da TV. Este módulo tem relacionamento direto com a
aplicação Synced-SecondScreenApp que será explicado posteriormente.
Para a realização de um teste mais realístico, três servidores foram montados,
cada um responsável pelo armazenamento do conteúdo web contextual de um canal
televisivo específico. É importante salientar que a criação de um servidor específico para
cada programação de cada uma das emissoras tornaria a implementação dos servidores
muito custosa, por isto da decisão de criar um servidor para cada canal televisivo.
Então, por exemplo, para acessar a programação contextual de uma novela para
um determinado canal a URL seria: http://www.synced.com/novela. Enquanto para
acessar o conteúdo contextual referente a um programa jornalístico seria
http://www.synced.com/jornal. Este tipo de abordagem facilita a construção do conteúdo
a ser enviado da aplicação Synced-TVApp para a aplicação móvel Synced-
57
SecondScreenApp, uma vez que uma URL base pode ser adotada, diminuindo o tamanho
da informação a ser repassada entre as aplicações.
4.3 Synced-TVApp
O módulo Synced–TVApp é o subsistema da arquitetura Synced-DTV que
executa na TV. A função deste modulo é a obtenção do conteúdo contextual da
programação da TV, a validação desses dados e o envio via broadcast de rede, entre a
TV e a Segunda Tela, dessas informações na forma de um documento JSON para o
módulo Synced-SecondScreenApp.
4.3.1. Implementação da Arquitetura
A Figura 6, a seguir, representa o diagrama de classes da Synced-TVApp,
exibindo as classes do sistema, assim como o relacionamento entre elas.
Figura 6 - Diagrama de classes da aplicação Synced-TVApp
58
É importante observar que, como descrito na seção 3.6.1, não há classes para a
exibição de conteúdos no diagrama apresentado, sendo este um dos principais requisitos
deste módulo, a execução silenciosa, onde não há necessidade de interação para a
execução ou configuração da aplicação.
A classe XletMain é responsável por controlar todo o ciclo de vida da aplicação
para TV Digitals, chamado de Xlet, onde se encontra a instância do XletContext que é
responsável por monitorar todas as vezes em que o estado do Xlet é modificado. Outra
atribuição da classe XletMain é a inicialização da thread, representada pela classe
RemindTask, responsável pela captura das informações contextuais da programação. Esta
59
thread executa a cada cinco segundos e é iniciada assim que o Xlet é instalado e executado
como ilustrado no código abaixo.
// Initialize the xlet. public void initXlet(XletContext context) {
System.out.println("##initXlet called ##");
this.context = context;
serviceManager = ServiceManager.getInstance();
timer = new Timer();
}
// Start the xlet.
public void startXlet() {
System.out.println("################### startXlet called
############################");
timer.schedule(new RemindTask(),
Constants.SECONDS_TIMER_CHECK * 1000);
}
Uma vez iniciada a thread, o processo de captura dos dados contextuais da
programação pode ser feito. Para que haja uma captura eficiente dos dados da tabela e a
detecção da alteração destes dados, a thread RemindTask é executada a cada 5 segundos,
valor este escolhido por proporcionar a rápida detecção na alteração do conteúdo sem
sobrecarregar o processamento da TV. O processo de captura de informações dos dados
contextuais da tabela EIT é ilustrado a seguir pelo diagrama de sequência na Figura 7.
Figura 7 - Diagrama de sequência da captura de dados da TV.
60
A cada interação da thread a classe ServiceManager, do pacote
“br.ufpe.cin.ragpf.contextualginga.controller” é requisitada a iniciar o processo de
captura dos metadados das tabelas contextuais. Agindo como o controlador da
arquitetura, esta classe contém os métodos responsáveis por solicitar à camada de Modelo
da solução a execução dos serviços necessários para obter as informações que serão
enviadas a aplicação Synced-SecondScreenApp. Na classe ServiceManager encontram-se
os métodos getCurrentEvent e sendBroadcastDataToMobile (String data) responsáveis
por obter uma instância válida do evento corrente na TV e enviar este conteúdo obtido à
Synced-SecondScreenApp, respectivamente.
Os pacotes “br.ufpe.cin.ragpf.contextualginga.model” e
“br.ufpe.cin.jss.connectedginga.net” formam a camada de Modelo (Model) da
arquitetura. Esta camada é formada pelas classes que fornecem os serviços solicitados
pela camada de controle da Connected-TVApp. O pacote
“br.ufpe.cin.jss.connectedginga.net” contém a classe Connection que é responsável por
61
controlar o envio dos dados contextuais da programação para o módulo Synced-
SecondScreenApp. Esta classe é acessada diretamente pela camada Controller quando o
usuário solicita o envio dos dados ao dispositivo móvel. Nesta ocasião o método
sendBroadcast(String dataSend) é chamado. O envio destes dados é realizado através de
uma conexão por broadcast como ilustrado no trecho de código abaixo.
public void sendBroadCast(String sendData) throws IOException {
System.out.println("## sendBroadCast ##");
ArrayList list = getBroadcastAddresses();
for (int i = 0; i < list.size(); i++) {
DatagramSocket c = new DatagramSocket();
InetAddress inet = InetAddress.getByName((String)
list.get(i));
DatagramPacket p = new
DatagramPacket(sendData.getBytes(), sendData.getBytes().length,
inet, Constants.BROADCAST_PORT);
c.setReuseAddress(true);
c.send(p);
c.close();
}
System.out.println("## sendBroadCast close ##");
}
Observe que, uma vez que não há como identificar corretamente qual das
interfaces de rede ativas e disponíveis está sendo utilizadas para a conexão sem fio (wifi),
todas as interfaces de rede recebem o conteúdo dos dados contextuais da programação.
Esta é uma deficiência tanto da versão do java utilizado pelo Ginga-J quanto da API Ginga
disponibilizada.
4.3.2. Formatação dos dados contextualizados
Para o correto funcionamento do sincronismo entre os conteúdos web e
televisivo, algumas informações importantes sobre a programação corrente precisam ser
coletadas, como por exemplo, o nome, gênero, horário de início e duração. Estas
informações são necessárias tanto para o cálculo dos pontos de sincronismo, no caso dos
dados temporais, quanto para a tomada de decisão durante a avaliação dos critérios de
interrupção e notificação ao usuário.
A aquisição dessas informações é possível a partir de um objeto SIEvent
retornada pelo ServiceManager à uma chamada ao Service Provider. A interface SIEvent
62
é disponibilizada pela API do Ginga-J e tem como responsabilidade indicar um programa
especifico no serviço da TV. Segundo NBR 15606-4(2010), cada objeto que implementa
a interface SIEvent é identificado pela combinação do original_id, transport_stream_id,
service_id e event_id, sendo único para cada programa da grade.
Objetos que implementam esta interface disponibilizam métodos públicos de
acesso ao conteúdo contextual da programação, métodos estes utilizados para a formação
de um JSON com todas as informações relevantes ao sincronismo, como mostrado no
exemplo de código abaixo.
private String getJsonFromEvent(SIEvent event) {
System.out.println("##getJsonFromEvent ##");
String jsonResult = null;
if (siEvent.getLevel1ContentNibbles() != null) {
jsonResult = loadJsonData(event.getName(),
getHexString(event.getLevel1ContentNibbles()),
System.currentTimeMillis(), event.getStartTime().getTime(),
event.getDuration(), getSyncEvents());
}
return jsonResult;
}
private String getSyncEvents() {
String syncEvents = null;
if (siEvent.getExEventInformations() != null &&
siEvent.getExEventInformations().length > 0) {
for (int h = 0; h <
siEvent.getExEventInformations().length; h++) {
if (siEvent.getExEventInformations()[h].getName()
.equals(Constants.STR_SYNC_POINTS)) {
syncEvents =
siEvent.getExEventInformations()[h].getDescription();
}
strBuffer.append("SI EX Information: getName:" + "["
+ h + "]" + siEvent.getExEventInformations()[h].getName() + "\n");
strBuffer.append("SI EX Information:
getDescription:" + "[" + h + "]" +
siEvent.getExEventInformations()[h].getDescription()
+ "\n");
}
} else {
strBuffer.append("SIEXInformation : 0 ou NULL \n");
}
return syncEvents;
}
63
Uma vez coletados todos os dados contextuais inerentes ao sincronismo, um
objeto JSON é criado para ser enviado via broadcast par ao modulo Synced-
SecondScreenApp. O trecho de código abaixo mostra como o método loadJsonData, após
receber os dados contextuais da programação, forma o objeto JSON final para ser enviado
ao módulo Synced-SecondScreenApp.
public String loadJsonData(String name, String genre, long
currentTime, long initialTime, long programDuration, String
syncpoints) {
System.out.println("##################### loadJsonData
#######################################");
strBuffer = new StringBuffer("");
strBuffer.append("{ \"ProgramInfo\": {");
strBuffer.append(" \"Name\":\"" + name + "\",");
strBuffer.append(" \"Genre\":\"" + genre + "\",");
strBuffer.append(" \"CurrentTime\":\"" + currentTime +
"\",");
strBuffer.append(" \"ProgramInitialTime\":\"" + initialTime
+ "\",");
strBuffer.append(" \"ProgramDuration\":\"" + programDuration
+ "\"");
if (syncpoints != null) {
//Normaliza o JSON recebido pelo TS
String temp = syncpoints;
syncpoints = temp.substring(temp.indexOf("{")+1,
temp.lastIndexOf("}"));
strBuffer.append(",");
strBuffer.append(syncpoints);
}
strBuffer.append(" }");
strBuffer.append(" }");
System.out.println("json = " + strBuffer.toString());
return strBuffer.toString();
}
A correta formatação deste JSON é crucial ao funcionamento de todo o sistema,
uma vez que, se alguma informação estiver faltando ou o JSON for criada de forma
errada, a aplicação mobile não poderá interpretar corretamente os dados, comprometendo
a normalização dos dados temporais para o sincronismo dos conteúdos e afetará o
algoritmo responsável pela tomada de decisão da interrupção e notificação do usuário.
64
4.4 Synced-SecondScreenApp
Subsistema desenvolvido para executar no dispositivo de segunda tela. É
importante observar que a escolha pela plataforma Android foi dada pela grande
abrangência e pelo grande crescimento desta plataforma no cenário mundial de aparelhos
móveis, sendo esta mesma solução passível de ser implementada em qualquer outra
plataforma disponível como IOS ou Windows Phone.
Algumas das mais importantes funcionalidades do sistema são delegadas a este
modulo, como por exemplo, a exibição do conteúdo contextual web, normalização e
agendamento dos pontos de sincronismo e a lógica responsável por definir a forma com
a qual o usuário irá receber os dados contextuais provenientes da TV. Para a solução
proposta, apenas uma forma de transmissão de dados foi implementada, porém a forma
como a transmissão deve acontecer pode ser feita de várias formas, ficando a cargo do
desenvolvedor decidir qual a abordagem que se adequa melhor a sua necessidade.
O diagrama de classes da Figura 8 a seguir mostra as principais classes do
sistema e as interações e dependências entre elas.
Figura 8 - Diagrama de classes da aplicação Synced-SeconScreenApp.
65
A classe MainActivity representa a tela inicial da aplicação. Nela é exibida uma
lista com todos os gêneros de programação especificados em (NBR 15603-2, 2008). Para
cada gênero é permitido ao usuário definir qual a forma de interrupção será executada
caso ponto de sincronismo para o escolhido gênero seja recebido pela aplicação. A Figura
9 a seguir mostra a estrutura visual dessa classe.
Figura 9 - Estrutura visual da aplicação
Esta classe também dá acesso a uma forma mais específica de controle de
interrupção, onde, uma vez que o usuário defina a opção de Interromper para algum dos
gêneros disponibilizados, uma outra opção de configuração é habilitada, possibilitando
ao usuário definir quais aplicativos instalados serão consideradas exceções a interrupção.
Neste caso, caso um ponto de sincronismo seja recebido para um gênero e uma aplicação
escolhida como exceção estiver em execução no momento do sincronismo a interrupção
não será efetivada, apenas uma notificação irá ocorrer. O trecho de código a seguir mostra
como a chamada que permite essa nova configuração é realizada.
btnSetting.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
66
Intent = new Intent(MainActivity.this,
GenrePreferenceActivity.class);
intent.putExtra(Util.GENRE_PREFERENCE_EXTRA,
genres.get(0).getPackageList());
startActivityForResult(intent, REQUEST_CODE);
}
});
A chamada de criação da nova tela é feita através de uma chamada a
startActivityForResult, o que indica a necessidade da nova tela retornar informações sobre
o processamento realizado. No caso, este retorno é capturado pelo método
onActivityResult, definido para ser notificado ao fim da execução da tela chamada com
ilustra o código abaixo.
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e(TAG, "onActivityResult - " + requestCode + " - " +
resultCode + " - " + data);
if (requestCode == REQUEST_CODE)
{
if (resultCode == RESULT_OK)
{
applicationExceptions =
data.getStringExtra(Util.GENRE_PREFERENCE_EXTRA);
//save on db new exceptions
genres.get(0).setPackageList(applicationExceptions);
mDatabaseHelper.updateGenre(genres.get(0));
}
else
{
Log.e(TAG, "onActivityResult - RESULT_ERROR");
}
}
}
Uma vez configuradas as formas de notificação para os gêneros e as exceções de
interrupção, a aplicação é finalizada e um serviço, objeto Service em Android, é
inicializado, representado pela classe ConnectionService. Um serviço é um componente
de aplicação capaz de executar longos processamentos em background e não contém
interface gráfica.
67
O diagrama de sequência da Figura 10 a seguir ilustra as etapas no processo de
configuração e inicialização do serviço de conexão da aplicação.
Figura 10 - Diagrama de sequência do serviço de conexão.
A classe ConnectionService tem como grande responsabilidade o
estabelecimento de conexões e posterior recebimento dos dados contextuais enviados
pelo módulo Synced-TVApp. Para isto é implementada uma técnica de pooling de
conexão, onde o objeto capaz de realizar a conexão fica “escutando” a rede numa
determinada porta específica a espera do recebimento dos dados. Este pooling de conexão
continua ativo sempre que o dispositivo de segunda tela possua uma conexão wifi
habilitada e conectada. O código a seguir mostra o funcionamento do pooling e a forma
como os dados contextuais é recebido.
DatagramSocket serverSocket = null;
try {
68
serverSocket = new DatagramSocket(Util.PORT);
byte[] receiveData = new byte[Util.DATA_LENGTH];
while (mWifiManager.isWifiEnabled()) {
try {
receiveData = new byte[Util.DATA_LENGTH];
DatagramPacket receivePacket = new
DatagramPacket(receiveData, receiveData.length);
Log.e(TAG, "Waiting for datagram packet");
serverSocket.setSoTimeout(Util.DATAGRAM_TIMEOUT);
serverSocket.setReuseAddress(true);
serverSocket.setBroadcast(true);
serverSocket.receive(receivePacket);
String sentence = new String(receiveData).trim();
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
Log.e(TAG, "From: " + IPAddress + ":" + port);
Log.e(TAG, "Message: " + sentence);
Message message = mHandler.obtainMessage();
message.obj = sentence;
message.what = STATUS_OK;
mHandler.sendMessage(message);
}
catch (IOException e)
{
Log.e(TAG, "IOException", e);
}
}
A constante Util.PORT especifica qual a porta está sendo “escutada” para que o
recebimento dos dados contextuais seja possível e deve coincidir com a porta definida
pelo módulo Synced-TVApp. Para a implementação desta solução esta constante é
definida como:
public static final int PORT = 7654;
O método receive da classe DatagramSocket é responsável pelo recebimento
dos dados contextuais. Este método, pela API, é definido como um método bloqueante,
onde a sua execução é condicionada ao estabelecimento da conexão ou a uma exceção
lançada caso um timeout de conexão seja lançada.
69
Uma vez recebida a informação, ela deve ser exatamente equivalente a
mensagem enviada pelo modulo Synced-TVApp, possibilitando que o tratamento das
informações seja executado de forma correta e os pontos de sincronismo gerados de forma
apropriada. O documento JSON recebido deve seguir a estrutura semelhante ao exemplo
abaixo.
{
"ProgramInfo": {
"Name": "Mais Voce",
"Genre":"0x6",
"CurrentTime":"3282986312986",
"ProgramInitialTime":"9874938739847",
"ProgramDuration":"090909098808",
"syncpoints": [
{ "time": "200", "inttype": 0,
"url":"http://192.168.0.127/teste/index.php"},
{ "time": "300", "inttype": 1,
"url":"http://192.168.0.127/teste/teste1.php"},
{ "time": "400", "inttype": 0,
"url":"http://192.168.0.127/teste/teste2.php"}
]
}
}
O exemplo acima demonstra quais os dados são essenciais para que a proposta
deste trabalho possa ser aplicada. São eles:
1. Name: Nome da programação sendo exibida.
2. Genre: Gênero da programação, seguindo o padrão especificado na norma.
3. CurrentTime: Horário atual da TV, em milissegundos.
4. ProgramInitialTime: Horário indicado na tabela EIT como sendo o do início
da programação atual.
5. ProgramDuration: Duração da programação, em milissegundos.
6. Syncpoints: Especificação dos pontos de sincronismo com os dados
contextuais web.
A utilização e relevância destes campos serão explanadas com maior
abrangência em seções posteriores, onde serão abordadas as necessidades de validação
contextual do gênero televisivo e dos tempos para o calculo dos momentos de
sincronismo.
70
Uma vez recebido o JSON pela classe ConnectionService, o processo
de análise dos critérios de interrupção e gerenciamento dos pontos de
sincronismo é delegado para a classe ParseJsonService. Como dito
anteriormente, esta classe contém os métodos responsáveis por realizar a
análise do documento JSON, verifica a ação a ser realizada de acordo com o
gênero e agenda os alarmes, objetos do tipo Alarm em Android, que farão o
sincronismo dos conteúdos contextuais.
O diagrama de sequência da
Figura 11 a seguir mostra o fluxo de execução desde o momento do
recebimento dos dados da TV até o momento do sincronismo do conteúdo.
Figura 11 - Diagrama de sequência do sincronismo dos dados.
71
Observe que, como mostrado no diagrama acima, uma vez que os dados
contextuais são recebidos, uma serie de processamentos são executados antes do
sincronismo esteja apto a acontecer. Inicialmente o gênero é extraído e validado de acordo
com as escolhas do usuário para este determinado gênero. Logo após os outros dados são
“parseados” e os tempos recebidos normalizados. Com os dados temporais normalizados,
os alarmes podem ser agendados de forma correta.
Quando um desses alarmes dispara, um componente do android denominado
BroadcastReceiver do tipo ScheduleAlarmreceiver é invocado, fazendo a chamada para
a inicialização da classe WebActivity que exibirá ou notificará acerca do conteúdo web
72
sincronizado. Os critérios utilizados na tomada de decisão da forma de notificação ao
usuário deste conteúdo sincronizado será explicado mais adiante.
4.5 Desafios de implementação do sistema
Esta seção elucida os desafios encontrados durante o desenvolvimento da
solução proposta por este trabalho e as soluções adotadas para a resolução de tais
problemas.
4.5.1. Normalização dos dados temporais
A normalização dos dados temporais é o fator mais importante para que o
sincronismo entre o conteúdo televisivo e o conteúdo complementar web possa
acontecer da forma esperada. O processo de normalização consiste em formatar,
para uma unidade de medida comum, os tempos dos horários da programação
extraídos da TV, dos pontos de sincronismo e o horário do dispositivo de segunda
tela.
Este processo de normalização ocorre nos seguintes passos:
1. Obter os dados temporais necessários à normalização.
2. Calcular, utilizando o horário atual da TV e o horário de início da
programação, o atraso no recebimento dos dados da tabela.
3. Em posse deste atraso, definir no dispositivo de segunda tela o horário
inicial da programação considerando o horário apresentado por este
dispositivo.
4. Verificar, utilizando o horário calculado, o momento de sincronismo
definidos nos dados dos pontos de sincronismo recebidos da TV.
5. Verificar se algum dos tempos de sincronismo já aconteceu e decidir
se deve utilizar ou descartar.
É importante salientar que, para que o processo descrito anteriormente
possa ser realizado corretamente, é imprescindível que pelo menos um dos tempos
analisados esteja correto, sendo utilizado como parâmetro para o ajustamento dos
outros valores. No caso, para o desenvolvimento desta solução, o tempo escolhido
foi o horário atual da TV. O horário da TV, no cenário de TV Hibrida, normalmente
73
é configurado buscando o horário através de um serviço na internet, o que garante
a veracidade da informação utilizada.
O trecho de código abaixo demonstra a implementação necessária para a
normalização dos tempos.
public ArrayList<NormalizedSyncPoint> normalizeTime(long
localCurrTime, ProgramInfoModel info)
{
long diffBTWInitialTimeAndCurrent =
info.getCurrentTime() - info.getProgramInitialTime();
long diffLOCAL = localCurrTime -
diffBTWInitialTimeAndCurrent;
ArrayList<NormalizedSyncPoint> normalizedList = new
ArrayList<NormalizedSyncPoint>();
// para cada syncpoint não normalizado
for (int i = 0; i < info.getList().size(); i++)
{
long normalizedTime = diffLOCAL +
(info.getList().get(i).getTime() * 1000);
normalizedList.add(new
NormalizedSyncPoint(normalizedTime,
info.getList().get(i).getUrl()));
}
return normalizedList;
}
No trecho de código mostrado, a variável recebida por parâmetro
localCurrTime representa o horário atual, em milissegundos, do dispositivo de
segunda tela e o objeto info contém os dados contextuais recebidos da TV. Observe
que, como definido anteriormente nos passos para que ocorra a normalização,
inicialmente é calculado o tempo transcorrido desde o início da programação,
subtraindo do valor atual do horário da TV, representado pela variável
diffBTWInitialTimeAndCurrent.
Logo após é calculado o horário de início da programação do ponto de
vista do dispositivo de segunda tela, representado pela variável diffLOCAL. Este
cálculo é necessário para que o agendamento dos momentos de sincronismo seja
feita de maneira correta, assim como o futuro descarte dos pontos de sincronismo
inválidos. Por fim, todos os pontos de sincronismo recebidos da TV são
74
recalculados e normalizados para o contexto temporal do dispositivo de segunda
tela, resultando nos dados contidos na variável normalizedList.
Todo o processo de normalização dos dados temporais pode ser observado
na Figura 12 abaixo.
Figura 12 – Processo de Normalização dos dados temporais.
Uma vez normalizados e formatados os dados, o agendamento dos pontos
de sincronismo pode ser feito, e os dados contextuais web exibido corretamente ao
usuário.
4.5.2. Sincronismo Automático
Uma das propostas mais importantes e fundamentais deste trabalho é o uso
contextual das informações da programação da TV e do ambiente da segunda tela
visando trazer ao usuário uma forma menos invasiva e mais automatizada na busca
e exibição de conteúdo adicionais complementares ao fluxo televisivo.
Um dos parâmetros analisados, como evidenciado na Seção 2.4 deste
trabalho, é a forma como o usuário acessa o conteúdo complementar no dispositivo
de segunda tela. Em muitas das técnicas apresentadas, sempre que o usuário deseje
acessar um conteúdo complementar o mesmo precisa estar presente no mesmo
ambiente e manualmente interagir com a TV, com a câmera ou microfone do
dispositivo de segunda tela, para que o acesso seja possível. Este processo é manual
e presencial precisando ser repetido sempre que uma nova programação seja
apresentada.
75
Este trabalho propõe uma forma automática de sincronismo entre a TV e
o dispositivo de segunda tela. Uma vez que ambos os dispositivos compartilhem a
mesma rede sem fio e as aplicações propostas como solução deste trabalho estejam
instaladas e configuradas corretamente, o estabelecimento de conexão entre os
dispositivos pode acontecer sem qualquer interação do usuário.
A Figura 13 a seguir exemplifica em alto nível o funcionamento do
processo de sincronismo entre a TV e a segunda tela.
Figura 13 - Sincronismo entre TV e Segunda Tela
Observe que uma vez conectados pela mesma rede sem fio, não há a
necessidade de proximidade entre os dispositivos. Como os dados contextuais da
programação corrente é enviado via protocolo UDP (broadcast), o envio dos dados
pode acontecer independente da proximidade física dos dispositivos. Como a
proposta deste trabalho também é o envio de todos os pontos de sincronismo da
programação corrente de uma única vez, a troca de informação entre a TV e o
dispositivo acontece apenas uma vez por programa, tornando possível assim que o
usuário acesse o conteúdo complementar web utilizando outra rede de sua
preferência.
76
4.5.3. Tomada de Decisão Sobre Interrupção
A personalização no processo de sincronismo dos dados complementares
também é um fator de importante e, uma vez que o processo de sincronismo torna-
se automático, o usuário acaba perdendo a tomada de decisão sobre qual
programação é de seu interesse e quais conteúdos complementares ele deseja
acessar.
Este trabalho propõe uma forma menos intrusiva e mais personalizada de
sincronismo onde o usuário pode decidir quais conteúdos são de seu interesse e
devem ser sincronizados e qual a forma que este sincronismo deve acontecer. A
tomada de decisão leva em consideração o contexto do dispositivo de segunda tela
no momento do sincronismo, como por exemplo, a aplicação atualmente em uso
pelo usuário.
Através de uma tela de wizard, o usuário pode definir quais dos gêneros
televisivos são do seu interesse e qual a forma de interrupção que irá acontecer caso
um conteúdo seja recebido. Há 3 opções de interrupção:
1- Não Notificar: Esta opção indica que o usuário não tem interesse neste
determinado gênero televisivo, então dados contextuais recebidos
deste gênero serão descartados.
2- Notificar: Esta opção indica que o usuário quer ser notificado de forma
não intrusiva acerca de um gênero especifico.
3- Interromper: Opção que permite à aplicação a interromper a atividade
corrente do usuário, exibindo automaticamente o conteúdo contextual
sincronizado.
A opção Notificar, caso seja selecionada e um conteúdo para este gênero
for recebido, exibirá uma Notification (espécie de lembrete) na barra de notificações
do Android, tornando possível ao usuário apagar ou acessar, caso seja de seu
interesse.
A opção Interromper consiste em exibir o conteúdo complementar web
em um WebView sobrepondo a UI da aplicação previamente sendo utilizada. Esta
opção funciona de uma forma um pouco diferente, pois permite ao usuário ainda
mais liberdade na escolha da forma que o sincronismo irá ocorrer. Uma vez que
77
esta opção é selecionada para qualquer dos gêneros, a opção de configuração
adicional de exceções de interrupção é disponibilizada.
Esta opção permite ao usuário a escolha de aplicações que sejam exceção
à regra da interrupção, ou seja, caso uma das aplicações selecionadas esteja em
execução no momento do sincronismo a interrupção não deve acontecer, sendo o
usuário apenas notificado do sincronismo.
Um cenário de exemplo que valida uso de exceções pode ser descrita por:
Imagine um usuário fanático por esportes que utilize a aplicação Synced-TVApp em
conjunto com o módulo Synced-SecondSreenApp a fim de receber informações
complementares dos eventos esportivos da programação televisiva. Ele, por
motivos de trabalho, define como exceção à regra de interrupção o aplicativo do
Microsoft Word. Neste cenário, mesmo ele tendo marcado que aplicações do gênero
“esportes” devem interrompê-lo, caso ele esteja trabalhando no momento utilizando
a aplicação Word, apenas uma notificação será exibida, uma vez que a aplicação
atualmente sendo utilizada está definida como uma exceção à regra de interrupção.
4.5.4. Atraso no Recebimento dos Metadados
Um dos principais problemas enfrentados durante o desenvolvimento do sistema
foi a falta de padrão quando se refere ao envio dos dados contextuais da programação
sendo transmitida pelas emissoras. Destes problemas observados destacam-se a falta de
informações na tabela mesmo para campos ditos obrigatórios pela norma (NBR 15603-2,
2008) e um grande atraso no envio dos dados da tabela EIT.
Este tipo de problema já havia sido reportado em (SOARES, 2012), no qual os
atrasos apresentados eram variáveis entre as emissoras em cenários que chegavam a
apresentar mais de vinte minutos de atraso com relação ao início da programação, ou seja,
em determinados momentos a informação da tabela era atualizado na metade do tempo
da duração do programa, o que inviabilizava as soluções de sincronismo propostas no
trabalho.
O teste consistiu em obter informações das tabelas de eventos da TV da
programação corrente, entre elas o nome do programa, o horário de início e duração, o
horário atual da TV e outras informações descritivas do programa. Este processo de
recuperação das informações foi executado com intervalos fixos de 2 segundos, visando
78
uma maior fidelidade das informações extraídas, principalmente na detecção da mudança
de programação.
A captura destas informações foi realizada durante todo o mês de maio de 2014,
no laboratório de TV digital do CESAR (Centro de Estudos e Sistemas Avançados do
Recife). Por estar utilizando a infraestrutura cedida pela empresa, a coleta dos dados só
pode ser realizada fora do horário comercial, geralmente nas noites entre os expedientes
de trabalho. A TV digital utilizada para coletar os dados conseguiu identificar o sinal
digital de três emissoras de TV, Rede TV, SBT e Rede Vida.
Diferente do ocorrido nos experimentos realizados por (SOARES, 2012), todas
as emissoras enviaram as informações ditas como obrigatórias pela norma NBR 15603-2
(2007), que obriga o envio de algumas informações referentes ao evento presente/seguinte
do serviço como, por exemplo, a descrição do nome do evento, a informação do seu tempo
de início e a descrição do seu estado de execução. O texto abaixo apresenta um exemplo
dos dados recebidos.
79
Extrato dos dados persistidos referentes à programação corrente da TV.
Mesmo havendo uma melhoria na consistência dos envios dos dados, ainda
assim foi facilmente identificar o atraso no recebimento das tabelas de eventos. Como no
exemplo mostrado acima, o programa iniciou-se às 18h45min, porém a informação da
tabela foi capturada apenas as 19h09min. Em situações como esta, a aplicabilidade da
solução proposta por este trabalho ficaria comprometida, uma vez que as demoras no
recebimento das informações necessárias ao sincronismo podem ser recebidas em um
momento no qual alguns ou diversos pontos de sincronismo tenham acontecido.
Para estas situações, alguns mecanismos de tomadas de decisão foram
implementadas e serão explicados e serão melhores explanadas na Seção 4.6.2
Nome do Evento: A Feia Mais Bela
Start Time: Mon May 26 18:45:00 BST 2014
Update Time: Mon May 26 19:09:30 BST 2014
Duracao: 2700
Series Name: null
Free CA Mode: false
Short Description: Letícia é uma garota muito inteligente, mas pouco agraciada fisicamente. Ela passará por pressões, desafios e desprezo, mas também conhecerá Fernando, alguém que mexerá com seu coração numa divertida história de superação.
SIEXInformation : 0 ou NULL
Event ID: 24
Original NET ID: 1038
Running Status: NOT RUNNING
Service ID: 33216
TransportStreamID: 1038
From Actual: true
Audio Component Descriptor: 0 ou null
Component Descriptor: [0]
Content Nibbles hexaString: 0f
Content User Nibbles hexaString: 00
Content Level 1 content Nibbles hexaString: 00
80
4.5.5. Ausência dos Dados Contextuais
Uma das questões analisadas durante o desenvolvimento da solução proposta foi
a definição de qual seria o comportamento esperado caso um ou mais valores necessários
à análise dos dados contextuais e estabelecimento dos pontos de sincronismo não fossem
enviados pela operadora. Com exceção do campo do nome da programação que é apenas
informativo, todos os outros campos especificados na Seção 4.4 são obrigatórios à
execução do sistema.
Caso alguma das informações obrigatórias não seja enviada pela emissora, os
dados contextuais extraídos da tabela são descartados pela aplicação Synced-TVApp e
nenhuma informação é enviada ao módulo da segunda tela. Este comportamento foi
definido visando inibir comportamentos errôneos ou inconsistentes com relação ao
sincronismo ou interrupção do usuário.
Para estes cenários onde informações primordiais não são enviadas, uma forma
de tentar viabilizar o acesso aos conteúdos complementares é a utilização da solução
proposta por (SOARES, 2012) que através da identificação do canal e do nome da
programação gera uma URL de acesso ao conteúdo complementar.
Uma outra alternativa, que foge ao escopo desta proposta, seria obter estes dados
complementares através de outras fontes, como por exemplo um serviço disponibilizado
pela emissora que seria responsável por armazenar e disponibilizar essas informações em
temo real como fonte alternativa de consulta.
4.6 Avaliação das Funcionalidades do Sistema
Esta seção demonstra a efetividade da solução proposta por este trabalho através
de um cenário de uso e da análise dos dados temporais que afetam o sincronismo. O
cenário de uso foi elaborado seguindo as diretrizes propostas por (Carroll, J M., 1999).
4.6.1. Cenário de Uso
“Paula, uma gerente de 30 anos chega a sua casa após o trabalho,
conecta seu tablet à rede sem fio de seu domicilio e vai jantar. Logo após a
refeição, ela decide ligar a sua TV digital para assistir algum filme com seu filho
Renato, sabendo que neste horário sempre há algum sendo transmitido. Notando
que ainda faltavam alguns minutos para o inicio do filme, Renato prontamente
81
vai buscar o seu smartphone para jogar um pouco enquanto aguarda o início do
filme. No momento em que o filme começa a ser exibido pela emissora, Renato se
espanta ao receber uma notificação no dispositivo em suas mãos informando
sobre o início da transmissão do filme, seguindo-se pela exibição de uma página
da Internet contendo informações detalhadas sobre o filme em exibição. A Figura
14 e Figura 15 a seguir demonstram, respectivamente, o conteúdo sendo exibido
pela TV e pelo smartphone no momento da notificação.
Figura 14 - Imagem da TV no primeiro sincronismo
Figura 15 - Imagem do smartphone no segundo sincronismo
82
Em outros momentos durante a exibição do filme, Renato e Paula
notaram que novas notificações eram recebidas, sempre trazendo novos
conteúdos relacionados ao filme exibido, como por exemplo, na Figura 16 e
Figura 17 abaixo, no momento em que o personagem principal do filme é exibido
pela primeira vez a página da Internet é rapidamente atualizada disponibilizando
a possibilidade da compra de um brinquedo semelhante ao personagem.
Figura 16 - Imagem da TV no segundo sincronismo
Figura 17 - Imagem do smartphone no segundo sincronismo
83
Este novo tipo de abordagem utilizando um dispositivo de segunda tela
em sincronismo com o conteúdo exibido pela TV representou, para ambos
telespectadores, uma nova experiência, ainda mais rica e inovadora, do meio de
assistir televisão.”
A estória contada acima elucida um cenário real da utilização da solução Synced-
DTV, apresentada por este trabalho, na melhoria e enriquecimento da experiência de
assistir televisão. Obviamente a estória segue a narrativa do telespectador, e a forma com
a qual ele interage com as interfaces dos módulos da solução. Entretanto, o ponto de vista
da solução deve ser analisado para que haja uma melhor compreensão das etapas
necessárias para que o sincronismo entre os dispositivos, elucidando os requisitos
necessários à comunicação e os artefatos trafegados entre os dispositivos.
Nesta nova ótica, a emissora tem basicamente duas responsabilidades, o envio
da aplicação, caracterizada pelo módulo Synced-TVApp, e o envio dos dados necessários
ao sincronismo através das tabelas EIT. No caso do cenário de uso descrito acima, os
dados de sincronismo enviados são descritos pelo texto abaixo.
Basicamente o que a informação acima descreve é que, após 100 segundos do
início da transmissão desta programação o conteúdo da página
“http://www.synceddtv.com.br/iceage1” deve ser exibido. Após mais 20 segundos, a
página deve ser atualizada para exibir o conteúdo da página
“http://www.synceddtv.com.br/iceage2”.
Uma vez que esta informação é recebida pela TV e processada pelo módulo
Synced-TVApp, os dados necessários ao sincronismo são então enviados por broadcast
para os dispositivos de segunda tela que contenha a aplicação Synced-SecondScreenApp
{"syncpoints":[
{"time":"100","inttype":0,"url":"http://www.synceddtv.com.br/iceage1"},
{"time":"120","inttype":1, "url":"http://www.synceddtv.com.br/iceage2"}
]}
84
instalado e que esteja na mesma rede sem fio da TV. O texto abaixo demonstra a
informação enviada entre a TV e a segunda tela.
Observe que além das informações dos pontos de sincronismo enviados pela
emissora, novas informações necessárias ao sincronismo são adicionadas aos dados
transmitidos à segunda tela, como por exemplo a hora de início e duração do programa e
a hora atual, que corresponde ao momento em que a informação foi recebida na TV.
Em posse destas informações, a aplicação Synced-SecondScreenApp é capaz de
determinar os momentos, considerando o horário atual do dispositivo de segunda tela, em
que o sincronismo deve acontecer, agendando alarmes para estes momentos específicos.
O texto abaixo demonstra, utilizando logs do terminal Android, o que acontece após o
recebimento das informações de sincronismo.
{ "ProgramInfo":
{"Name":"Ice Age",
"Genre":"0xC",
"CurrentTime":"1409168202207",
"ProgramInitialTime":"1409168157000",
"ProgramDuration":"1800",
"syncpoints":[{"time":"100","inttype":0,
"url":"http://www.synceddtv.com.br/iceage1"},{"time":"120","i
nttype":1, "url":"http://www.synceddtv.com.br/iceage2"}]
} }
85
08-28 17:05:07.794:E/ConnectionService(2997): From: /192.168.1.101:56885
08-28 17:05:07.794: E/ConnectionService(2997): Message: { "ProgramInfo": { "Name":"Ice Age", "Genre":"0xC",
"CurrentTime":"1409168202207", "ProgramInitialTime":"1409168157000",
"ProgramDuration":"1800","syncpoints":[{"time":"100","inttype":0,
"url":"http://www.synceddtv.com.br/iceage1"},{"time":"120","inttype":1,
"url":"http://www.synceddtv.com.br/iceage2"}] } }
08-28 17:05:07.799: D/ConnectionService(2997): handleMessage
08-28 17:05:07.799: D/ConnectionService(2997): STATUS_OK
08-28 17:05:07.799: D/ConnectionService(2997): unregisterPending
08-28 17:05:07.799: E/ConnectionService(2997): Waiting for datagram packet
08-28 17:05:07.809: D/ConnectionService(2997): sended intent
08-28 17:05:07.809: D/ParseJsonService(2997): ParseJsonService
08-28 17:05:07.814: D/ParseJsonService(2997): onHandleIntent [Intent {
cmp=br.ufpe.cin/.service.ParseJsonService (has extras) }]
08-28 17:05:07.819: D/ParseJsonService(2997): parseReceivedData
08-28 17:05:07.849: D/ParseJsonService(2997): name = Ice Age
08-28 17:05:07.849: D/ParseJsonService(2997): genre = 12
08-28 17:05:07.849: D/ParseJsonService(2997): currentTime = 1409168202207
08-28 17:05:07.849: D/ParseJsonService(2997): programInitialTime = 1409168157000
08-28 17:05:07.849: D/ParseJsonService(2997): programDuration = 1800
08-28 17:05:07.849: D/ParseJsonService(2997): timeInSeconds = 100
08-28 17:05:07.849: D/ParseJsonService(2997): url = http://www.synceddtv.com.br/iceage1
08-28 17:05:07.849: D/ParseJsonService(2997): timeInSeconds = 120
08-28 17:05:07.849: D/ParseJsonService(2997): url = http://www.synceddtv.com.br/iceage2
08-28 17:05:07.854: D/ParseJsonService(2997): normalizeTime
08-28 17:05:07.854: D/ParseJsonService(2997): info.getCurrentTime() = 1409168202207 - DATE = Wed Aug 27
16:36:42 BRT 2014
08-28 17:05:07.854: D/ParseJsonService(2997): info.getProgramInitialTime() = 1409168157000 - DATE = Wed
Aug 27 16:35:57 BRT 2014
08-28 17:05:07.859: D/ParseJsonService(2997): diffBTWInitialTimeAndCurrent = 45207 - 45seconds has passed
08-28 17:05:07.859: D/ParseJsonService(2997): localCurrTime = 1409256307851 - DATE = Thu Aug 28 17:05:07
BRT 2014
08-28 17:05:07.859: D/ParseJsonService(2997): deviceInitialTime = 1409256262644 - DATE = Thu Aug 28
17:04:22 BRT 2014
08-28 17:05:07.859: D/ParseJsonService(2997): endProgramTime = 1409258062644 - DATE = Thu Aug 28
17:34:22 BRT 2014
08-28 17:05:07.859: D/ParseJsonService(2997): normalizedTime[0] = 1409256362644 - DATE = Thu Aug 28
17:06:02 BRT 2014
08-28 17:05:07.859: D/ParseJsonService(2997): normalizedTime[0] VAI ALARMAR EM [54] Segundos
08-28 17:05:07.859: D/ParseJsonService(2997): normalizedTime[1] = 1409256382644 - DATE = Thu Aug 28
17:06:22 BRT 2014
08-28 17:05:07.859: D/ParseJsonService(2997): normalizedTime[1] VAI ALARMAR EM ~ [74] Segundos
08-28 17:05:07.864: D/ParseJsonService(2997): setAlarmList [ProgramInfoModel [mName=Ice Age, mGenre=12,
mCurrentTime=1409168202207, mProgramInitialTime=1409168157000, mProgramDuration=1800000,
mList=[br.ufpe.cin.model.SyncPoint@42a8de68, br.ufpe.cin.model.SyncPoint@42a8e110,
br.ufpe.cin.model.SyncPoint@42a8e2e8], mNormalizedList=[br.ufpe.cin.model.NormalizedSyncPoint@42a90c18,
br.ufpe.cin.model.NormalizedSyncPoint@42a911e0, br.ufpe.cin.model.NormalizedSyncPoint@42a91760],
mInterruptType=2]]
08-28 17:05:07.864: D/ParseJsonService(2997): normalizedList
[[br.ufpe.cin.model.NormalizedSyncPoint@42a90c18, br.ufpe.cin.model.NormalizedSyncPoint@42a911e0,
br.ufpe.cin.model.NormalizedSyncPoint@42a91760]]
08-28 17:05:07.874: D/ParseJsonService(2997): alarm [1409256362644] [http://www.synceddtv.com.br/iceage1]
08-28 17:05:07.884: D/ParseJsonService(2997): alarm [1409256382644] [http://www.synceddtv.com.br/iceage2]
86
Após o recebimento dos dados do sincronismo, as informações são extraídas e
normalizadas, e os alarmes configurados e agendados. Nos momentos definidos pelos
alarmes, o módulo responsável para ser informado que um sincronismo deve acontecer é
executado, iniciando o processo de exibição do conteúdo Web associado ao alarme sendo
processado. Este fluxo é demonstrado pelo texto abaixo, onde pode-se observar que os
dois pontos definidos pela informação enviada pela emissora são executados de forma
correta.
É importante notar que os alarmes acontecem precisamente no momento calculado
durante a normalização dos tempos recebidos da TV, como por exemplo no cenário
08-28 17:06:02.674: D/ScheduleAlarmReceiver(2997): onReceive [Intent { act=schedule.alarm.SCHEDULE_ACTION flg=0x14 cmp=br.ufpe.cin/.receiver.ScheduleAlarmReceiver (has extras) }]
08-28 17:06:02.679: D/ScheduleAlarmReceiver(2997): onReceive DATE [Thu Aug 28 17:06:02 BRT 2014]
08-28 17:06:02.679: D/ScheduleAlarmReceiver(2997): interruptType [2]
08-28 17:06:02.679: D/ScheduleAlarmReceiver(2997): url [http://www.synceddtv.com.br/iceage1]
08-28 17:06:02.679: D/ScheduleAlarmReceiver(2997): genre [12]
08-28 17:06:02.679: D/ScheduleAlarmReceiver(2997): interrupt [http://www.synceddtv.com.br/iceage1] [12]
08-28 17:06:02.694: D/ScheduleAlarmReceiver(2997): packageList []
08-28 17:06:02.694: D/ScheduleAlarmReceiver(2997): !isAtualTopStackActivityOnExcpetionList
08-28 17:06:02.924: D/WebActivity(2997): onCreate
08-28 17:06:03.049: I/webclipboard(2997): clipservice: android.sec.clipboard.ClipboardExManager@42ab2358
08-28 17:06:03.464: D/WebActivity(2997): loadWeb [http://www.synceddtv.com.br/iceage1]
----------------------------------------------------------------------------------------------------------
08-28 17:06:22.729: D/ScheduleAlarmReceiver(2997): onReceive [Intent { act=schedule.alarm.SCHEDULE_ACTION flg=0x14 cmp=br.ufpe.cin/.receiver.ScheduleAlarmReceiver (has extras) }]
08-28 17:06:22.739: D/ScheduleAlarmReceiver(2997): onReceive DATE [Thu Aug 28 17:06:22 BRT 2014]
08-28 17:06:22.739: D/ScheduleAlarmReceiver(2997): interruptType [2]
08-28 17:06:22.739: D/ScheduleAlarmReceiver(2997): url [http://www.synceddtv.com.br/iceage2]
08-28 17:06:22.739: D/ScheduleAlarmReceiver(2997): genre [12]
08-28 17:06:22.739: D/ScheduleAlarmReceiver(2997): interrupt [http://www.synceddtv.com.br/iceage2] [12]
08-28 17:06:22.759: D/ScheduleAlarmReceiver(2997): packageList []
08-28 17:06:22.759: D/ScheduleAlarmReceiver(2997): !isAtualTopStackActivityOnExcpetionList
08-28 17:06:22.819: D/WebActivity(2997): onNewIntent
08-28 17:06:22.824: D/WebActivity(2997): loadWeb [http://www.synceddtv.com.br/iceage2]
87
descrito nesta seção, foi definido que os momentos de sincronismo ocorreriam nos
horários:
O que pode ser confirmado pelo horário de disparo dos alarmes, responsáveis por invocar
os Receivers Android que por fim realizam a ação de exibir a página Web, como pode ser
observado no texto abaixo.
4.6.2. Atrasos de Comunicação
Anteriormente a validação da solução proposta, demonstrada na seção anterior,
achou-se necessário descobrir o fator de influência do atraso gerado pelo processamento
e pela comunicação entre os módulos do sistema. Para isto foram determinados quais os
pontos de interesse na medição do atraso, tornando possível a identificação de possíveis
gargalos que influenciariam no sincronismo da exibição do conteúdo complementar no
dispositivo de segunda tela.
O cálculo do atraso gerado pela execução e comunicação dos módulos
componentes da solução Synced-DTV é importante, pois deve ser considerado durante a
obtenção dos pontos de sincronismo entre os conteúdos televisivo e complementar. Por
exemplo, definindo-se que o atraso gerado pelas operações do sistema seja de um
segundo, todos os pontos de sincronismo calculados pelo módulo Synced-
SecondScreenApp durante a normalização dos dados temporais descritos na seção 4.5.1
deste trabalho, devem ser decrementados em um segundo, mantendo os momentos de
sincronismo corretos.
Os pontos definidos como relevantes à medição englobam a recepção dos dados
da tabela EIT, a formatação dos dados na TV, o envio dos dados do módulo Synced-
TVApp até a recepção pela aplicação Synced-SecondScreenApp, o tratamento dos dados
normalizedTime[0] = 1409256362644 - DATE = Thu Aug 28 17:06:02 BRT 2014
normalizedTime[1] = 1409256382644 - DATE = Thu Aug 28 17:06:22 BRT 2014
08-28 17:06:02.679: D/ScheduleAlarmReceiver(2997): onReceive DATE [Thu Aug 28 17:06:02 BRT 2014]
08-28 17:06:22.739: D/ScheduleAlarmReceiver(2997): onReceive DATE [Thu Aug 28 17:06:22 BRT 2014]
88
neste último e o tempo gasto para a chamada da tela de exibição de um conteúdo
sincronizado.
1. Recepção dos Dados da Tabela: Atraso de processamento realizado na
TV que compreende o tempo gasto entre o lock necessário a leitura dos
dados tabela EIT até a completa leitura dos dados contextuais necessário
ao sincronismo.
2. Formatação dos Dados: Atraso relativo à formatação adequada dos
dados contextuais obtidos para o envio ao modulo de segunda tela.
3. Envio dos Dados: Atraso que representa o tempo necessário para a
criação e estabelecimento da conexão e o envio dos dados entre os
módulos via broadcast.
4. Tratamento dos Dados: Representa o tempo necessário a analise dos
dados recebidos da TV, a extração dos dados relevantes e o agendamento
dos pontos de sincronismo.
5. Exibição do Conteúdo: Tempo transcorrido do momento em que um
ponto de sincronismo é alcançado até a chamada da classe responsável
pela exibição do conteúdo complementar.
O gráfico da Figura 18 mostra proporcionalmente o efeito desses
processamentos no atraso final obtido.
Figura 18 - Proporção dos Atrasos de Processamento
Para garantir a confiabilidade dos valores dos atrasos gerados na execução dos
testes, foi gerada a média dos atrasos a partir da execução de trinta ciclos de experimentos,
o que é considerado pela estatística como um valor considerável de amostras para a
89
obtenção de um valor inicial que represente o universo de possibilidades. Os valores dos
atrasos em milissegundos obtidos pela execução dos testes são mostrados a seguir:
Para esses valores a média calculada foi de 475.534 milissegundos. Uma vez que
a média aritmética não é um cálculo estatístico confiável, a partir da mesma amostra foi
calculado o desvio padrão, que mede a dispersão dos dados em torno da média da amostra,
gerando um valor igual a 9.2204. Quando o valor numérico ou a estimativa de um
parâmetro é reportado, geralmente é desejável dar alguma ideia da precisão da estimação.
A medida de precisão geralmente empregada é o erro padrão do estimador que está sendo
usado, que no caso dos dados acima resulta em um valor de erro padrão igual a 1.6834.
Como os valores de média, desvio padrão e erro padrão descritos anteriormente
foram gerados a partir de uma amostra, precisa-se definir o número mínimo de ciclos
necessários para garantir a validade dos dados para uma população inteira, precisando
para isso descobrir a quantidade mínima de experimentos necessários. O cálculo do
tamanho da amostra, além dos valores já reportados, necessita como entrada o nível de
confiança desejado, que expressa a certeza de que o dado que se busca realmente está
dentro da margem de erro definida. Para este experimento foi definido um nível de
confiança de 95%.
Para este nível de confiança e os valores de desvio padrão e erro antes definidos
estima-se a necessidade de 116 ciclos de execução, gerando o gráfico da Figura 19, que
corrobora o resultado observado durante a fase de experimentação, gerando um atraso
médio de aproximadamente 470 milissegundos.
Figura 19 - Atrasos dos processamentos do sistema
476;460;474;463;477;466;470;482;480;460;477;478;479;483;485;
494;481;477;458;486;473;483;458;488;474;474;476;487;471;476
90
O cálculo dos atrasos foi medido registrando-se o tempo inicial e final das
execuções das etapas necessárias à obtenção dos pontos de sincronismo e o efetivo
sincronismo nestes momentos calculados. O tempo de transmissão e recepção da
operadora é considerado no momento que se identifica o tempo percorrido entre o início
da programação corrente e o momento da recepção dos dados contextuais pelas tabelas
EIT.
Apenas lembrando que, alguns atrasos não foram levados em consideração seja
por apresentarem valores ínfimos ou por serem totalmente dependentes de fatores
externos, como por exemplo, o tempo necessário para o carregamento do conteúdo
complementar web. Este tempo não pode ser mensurado por depender da qualidade da
conexão de internet do usuário, o tamanho do conteúdo web a ser exibido e a distância
até o provedor deste conteúdo. Nos testes realizados desta solução, o conteúdo web era
armazenado em um servidor na mesma intranet do dispositivo de segunda tela, tornando
o carregamento da informação quase que instantâneo.
4.6.3. Avaliação de aceitação da solução
Apesar do atraso gerado pelo processamento e comunicação dos módulos da
solução apresentada ser consideravelmente pequeno ele ainda existe e afeta o momento
exato de quando o sincronismo entre os conteúdos televisivo e complementar deve
acontecer. Visando saber a eficácia dos momentos de sincronismos calculados na seção
4.5.1 e a influência do atraso definido pela seção anterior na confiabilidade e usabilidade
da solução, uma avaliação foi realizada e envolveu 20 voluntários.
Para o estudo foram consideradas pessoas de diversas faixas etárias, sendo a
quantidade proporcionalmente dividida pelo tempo comumente gasto assistindo TV.
Então foram 5(cinco) crianças entre 6 e 12 anos, 5(quatro) adolescentes entre 13 e 18
anos, 6(seis) adultos entre 19 e 40 anos e finalmente 4(quatro) pessoas de mais idade entre
41 e 60 anos. Cada usuário utilizava um smartphone com as aplicações previamente
instaladas e receberam um treinamento básico sobre como utilizar a aplicação. Os
participantes foram instruídos a usar a aplicação e a responder um questionário de
avaliação relacionado à experiência no uso da aplicação.
Para avaliar a aceitabilidade do sistema um questionário foi criado seguindo os
princípios definidos no TAM (Technology Acceptance Model). Este modelo considera os
91
seguintes princípios para a aceitação de uma aplicação: (I) Facilidade de Uso: Definido
como sendo “o grau em que uma pessoa entende que o uso de um sistema em particular
seria livre de esforço”; (II) Utilidade: Definido como o “grau que uma pessoa acredita
que o uso da aplicação aumenta o desempenho da realização e uma tarefa”.
As perguntas do questionário foram formuladas para serem curtas, diretas e
simples de serem respondidas, onde a resposta para cada uma das questões deve ser
compreendida numa escala entre 1 (discordo totalmente) e 5 (concordo totalmente). A
Tabela 6 e a Tabela 7 apresentam as perguntas apresentadas e os resultados da aplicação
do questionário aos usuários. As tabelas apresentam as perguntas em sua primeira coluna
e as porcentagens da escolha dos usuários nas colunas subsequentes, de “Discordo
Totalmente” à “Concordo Totalmente”.
Analisando os dados das duas tabelas é fácil observar que a aceitação do modelo
verificado foi alta, tanto para a “Facilidade de Uso”, quanto para a “Utilidade”. Na
questão 3, da Tabela 6, questionamentos foram feitos sobre a possibilidade da inferência
da decisão sobre a interrupção por um gênero televisivo ser automática, considerando
decisões previamente tomadas pelo usuário. Outro questionamento realizado, agora com
referência à questão 4, da Tabela 7, foi a necessidade de abrir a barra de notificações,
quando um conteúdo sincronizado com gênero previamente definido para “Notificar” for
recebido, para visualizar mais detalhes da notificação, sendo este um comportamento
padrão do Android.
Tabela 6 - Facilidade de Uso
Questão Discordo
Totalmente
Discordo
Parcialmente Neutro
Concordo
Parcialmente
Concordo
Totalmente
1. A aplicação é fácil de
usar.
0%(0) 0%(0) 5%(1) 15%(3) 80%(16)
2. A aplicação é fácil de
entender.
0%(0) 0%(0) 0%(0) 0%(0) 100%(0)
3. Com pouco esforço eu
posso
determinar meus
interesses.
0%(0) 0%(0) 5%(1) 20%(4) 75%(15)
4. Com pouco esforço eu
posso acessar o
conteúdo
sincronizado.
0%(0) 0%(0) 0%(0) 15%(3) 85%(17)
Tabela 7 - Utilidade
92
Questão Discordo
Totalmente
Discordo
Parcialmente Neutro
Concordo
Parcialmente
Concordo
Totalmente
1. A aplicação
simplifica a
obtenção de
informação
complementar?
0%(0) 0%(0) 0%(0) 0%(0) 100%(20)
2. A aplicação
sincroniza
corretamente?
0%(0) 0%(0) 5%(1) 10%(2) 85%(17)
3. A aplicação
respeita seus
interesses
contextuais?
0%(0) 0%(0) 0%(0) 10%(2) 90%(18)
4. Eu usaria a
aplicação no dia-
a-dia?
0%(0) 0%(0) 0%(0) 5%(1) 95%(19)
4.6.4. Sincronismo em Múltiplas Telas
Dado que a comunicação entre os módulos Synced-TVApp, executando na TV, e
Synced-SecondScreenApp, executando no dispositivo de segunda tela, é realizada através
do uso de conexões broadcast nada impede a extensão da arquitetura proposta por este
trabalho para o sincronismo com múltiplas telas.
Uma vez que os dispositivos que desejam receber o conteúdo complementar
compartilhem a mesma rede sem fio da TV e que estejam executando uma aplicação que
permita o recebimento dos dados via broadcast, todos estes aparelhos poderão exibir
conteúdo sincronizado com a programação da TV. É importante observar que
determinadas decisões do usuário, como a escolha de receber notificações sobre um
determinado gênero televisivo ou as exceções definidas para o modo de interrupção, serão
específicos de cada dispositivo sincronizado, tornando independente a forma como os
dados recebidos irão ser tratados.
A Figura 20 a seguir demonstra, em alto nível, o cenário descrito.
93
Figura 20 - Synced-DTV em múltiplos dispositivos
Este cenário demonstra o poder da personalização proposta por este trabalho,
dando poder ao usuário a escolha dos conteúdos sincronizados e a forma de como este
sincronismo deve ocorrer.
4.7 Ambiente operacional
O desenvolvimento da solução Synced-DTV foi realizado utilizando o ambiente
de programação do Eclipse com as bibliotecas fornecidas pela linguagem de programação
Java da Oracle e Android do Google, sendo o ambiente de programação executado sobre
o sistema operacional Windows.
O módulo Synced-TVApp foi desenvolvido tendo como base o sistema SBTVD
(Sistema Brasileiro de TV Digital), podendo a solução ser adaptada para o funcionamento
de qualquer outra estrutura de TV Digital no qual os dados contextuais da programação
seja m derivadas da especificação DVB (Digital Video Broadcasting).
O módulo Synced-SeconScreenApp que executa no dispositivo de segunda tela
foi desenvolvido em Android, uma plataforma altamente disseminada da Google, por
apresentar mecanismos interessantes que tornou possível a fácil prototipação e validação
dos requisitos pertinentes à implementação. Observe que outras plataformas existentes no
mercado, como IOS ou Windows Phone, poderiam facilmente realizar as funções
requeridas pelo módulo.
O desenvolvimento deste módulo Synced-WebServers foi feito utilizando
XAMPP, um ambiente de desenvolvimento de distribuição Apache que contém MySQL,
94
PHP e Perl. A decisão do uso deste ambiente foi pessoal, podendo ser adotada qualquer
tecnologia compatível para a implementação como, por exemplo, Java ou HTML5.
As bibliotecas relativas ao SBTVD, Ginga-J, e também o laboratório utilizado
para a elaboração e execução do modelo Synced-DTV foram gentilmente cedidos pelo
CESAR (Centro de Estudos em Sistemas Avançados do Recife). O laboratório forneceu
ao trabalho uma TV digital, com o middleware Ginga-J em estado funcional, com acesso
à Internet e a uma estrutura de rede sem fio local na qual foi validada a comunicação entre
o módulo da TV e os subsistemas Synced-SeconScreenApp e Synced-Webservers.
A infraestrutura disponibilizada permitiu que a solução proposta fosse elaborada
e testada em uma TV real, dispensando a necessidade da utilização de simuladores ou
emuladores. Além disso, a execução na TV proporcionou ao trabalho uma análise real
sobre as informações obtidas das tabelas de informação de serviços enviadas pelas
emissoras de TV digital da cidade do Recife/PE. Estas características proporcionaram ao
trabalho um ambiente de execução mais próximo do que seria encontrado caso a proposta
apresentada pelo Synced-DTV fosse utilizada comercialmente.
4.8 Discussões
Este capítulo apresentou detalhes sobre a implementação, execução e validação
das arquiteturas dos módulos que compõem a solução Synced-DTV. Explanou a proposta
de utilização de um documento JSON bem formatado em conjunto com as informações
extraídas das tabelas de informações da programação para o estabelecimento do
sincronismo entre o conteúdo televisivo e os dados complementares.
Foram apresentadas os detalhes de implementação das arquiteturas das
aplicações Synced-TVApp, Synced-WebServers e Synced-SecondScreenApp que podem
ser utilizadas como referencias para a implementação de qualquer outra solução de
sincronismo de conteúdos de TV digital híbrida, assim como os desafios encontrados
durante a concepção e conexão entre as aplicações.
Por fim, foram apresentados dados que validam a solução proposta, através da
analise dos atrasos observados e através dos resultados de uma pesquisa de aceitação.
95
5 Conclusões
Este trabalho propôs uma solução para a sincronização entre o conteúdo
transmitido pela programação broadcast das emissoras de TV e um conteúdo Web
complementar disponibilizado telespectador pelo uso de aplicações interativas e da
conectividade à Internet das TVs híbridas. O principal objetivo deste trabalho consistiu
na elaboração de um modelo de aplicações que tem por objetivo fornecer ao telespectador
um conteúdo complementar, obtido na Web de forma síncrona, transparente e sensível à
programação da TV. Para isto foi realizado o desenvolvimento de uma infraestrutura
modular de software que utiliza informações contextuais da programação da TV, da
própria TV e das preferências do usuário no dispositivo de segunda tela para tornar a
experiência mais rica e menos intrusiva para o usuário.
O modelo para a construção de aplicativos e de comunicação apresentado,
denominado Synced-DTV, foi desenvolvido como uma solução para a integração das
novas plataformas de TV digital com os recursos advindos da Internet, tornando possível
a utilização de conteúdos complementares na Web para o aprimoramento da experiência
televisiva dos telespectadores. Além disso, o modelo também mostra como as aplicações
emergentes para a plataforma da TV híbrida podem relacionar os conteúdos da TV e da
Internet com o intuito de potencializar a experiência televisiva do usuário e agregar valor
à interatividade oferecida pelas aplicações.
É importante salientar que a arquitetura de funcionamento das TV hibridas torna
possível a comunicação e posterior obtenção de conteúdos complementares na Internet,
porém a comunicação seria possível através de aplicativos específicos por emissora, ou
num cenário mais específico, através de aplicativos específicos para cada programa da
grade televisiva. Caso a solução proposta por este trabalho fosse adotada, esta necessidade
poderia ser descartada, uma vez que a aplicação interativa Synced-DTVApp, residente na
TV, adapta-se ao contexto televisivo do usuário buscando informações complementares
relacionadas a qualquer evento transmitido pela grade de programação, tornando possível
a busca por conteúdos complementares acontecer de forma direcionada e automática.
Uma vez que a localização dos conteúdos complementares são enviados em
conjunto com o conteúdo televisivo, é possível a construção de um modelo de aplicação
genérico capaz de atender a quaisquer programas de qualquer transmissora, ou ainda
96
elaborar uma aplicação unificada capaz de exibir conteúdos complementares
independente da emissora sintonizada.
O desenvolvimento deste trabalho seguiu diversas fases ou etapas até a
finalização do modelo, denominado Synced-DTV. Inicialmente foi necessário realizar um
estudo teórico sobre temas que abordam a TV digital interativa e conectada, assim como
o padrão DVB e os padrões derivados deste, a estrutura dos metadados e tabelas de
informações da programação. Estudos teóricos a respeito do conceito de Segunda Tela e
a forma como dispositivos móveis, como smartphones e tablets, estão sendo utilizados
também foi realizado. Finalmente, foram abordadas tecnologias disponíveis no mercado
que auxiliam na identificação e/ou extração de informações do fluxo de transmissão
televisivo que são utilizados para o sincronismo de conteúdos complementares.
Na etapa seguinte, foram definidos alguns cenários de uso que serviram para
ilustrar a utilização da proposta do Synced-DTV no cotidiano dos telespectadores. Depois
foram definidos requisitos funcionais e não funcionais para fixar metas no processo de
desenvolvimento da solução, sendo também apresentados o diagrama de casos de uso e a
descrição detalhada de cada um dos casos, para auxiliar a compreensão dos requisitos
estabelecidos, através da simulação de uso do sistema.
A próxima etapa consistiu em definir quais tecnologias seriam utilizadas no
desenvolvimento dos módulos da solução (aplicação da TV, do dispositivo de segunda
tela e web servers) e como seria realizada a comunicação entre estes módulos. Nesta etapa
também foi realizada a concepção e especificação da arquitetura do Synced-DTV, assim
como o projeto e elaboração do diagrama de classes. Determinada a arquitetura e o modo
de interação entre módulos componentes, precisou-se determinar quais as informações
mínimas necessárias para o funcionamento da solução, seja informações extraídas das
tabelas de informação do sistema, informações contextuais da própria TV e informações
a serem extraídas do dispositivo de segunda tela.
Uma vez determinado o conjunto de dados necessários, foi necessário
determinar um padrão e uma formatação para o tráfego desses dados entre os módulos do
sistema, sendo escolhido o padrão JSON, comumente utilizado para normalização de
dados textuais. O funcionamento do Synced-DTV foi descrito a partir de casos de uso e
também por meio de um diagrama de sequência juntamente com suas respectivas
descrições.
97
Uma vez especificadas e formalizadas as estruturas necessárias ao
funcionamento da solução, protótipos dos subsistemas componentes do modelo foram
desenvolvidos, tornando possível a experimentação do modelo proposto. Os subsistemas
desenvolvidos, Synced-TVApp, Synced-SeconScreenApp e Synced-WebServers, podem
funcionar de maneira independente, porém se comunicam através de uma conexão sem
fio ou através da Internet. O módulo Synced-TVApp, subsistema que executa na TV, é
responsável pela captura das informações das tabelas SI a respeito da programação
corrente, assim como informações contextuais da própria TV. Essas informações
incluem, por exemplo, os dados com informações sobre os pontos de sincronismo e as
URLs de comunicação com o módulo Synced-WebServers.
O módulo Synced-WebServers é responsável por armazenar e distribuir, de
acordo com as requisições recebidas, todas as informações complementares que estão
relacionadas à grade de programação da emissora de TV. Por fim, o subsistema da
segunda tela, Synced-SeconScreenApp, é responsável pelo cálculo dos momentos de
sincronismo e pela exibição síncrona das informações Web complementares ao conteúdo
televisivo.
Uma vez que a implementação dos módulos da solução estava concluída, testes
foram realizados com o intuito de avaliar os requisitos funcionais e não-funcionais
especificados na Seções 3.3.1 e 3.3.2 deste documento. Nesta etapa foram identificados
diversos problemas, principalmente relacionados com a falta ou forma errônea de envio
das informações sobre a programação corrente, onde informações ditas como obrigatórias
pela norma não são enviadas pelas emissoras ou as informações são enviadas com um
atraso relativamente alto, gerando inconsistências na aplicação.
Por fim, durante a fase de validação da implementação dos módulos do sistema,
foram identificados pontos que tornavam o sincronismo entre os conteúdos incorreto, em
grande parte por atrasos no processamento das informações contextuais. Na última etapa,
a solução foi submetida a um grupo de usuários que avaliaram a solução considerando
critérios de usabilidade.
As próximas subseções deste capítulo descrevem as contribuições do trabalho e
as sugestões de trabalhos futuros.
98
5.1 Contribuições do trabalho
A principal contribuição deste trabalho é um modelo genérico e adaptável a
qualquer dos subsistemas derivados do DVB, para a comunicação síncrona e sensível a
contexto de conteúdos complementares na Internet com o conteúdo televisivo
convencional (áudio e vídeo) de forma automática, onde o usuário não necessita
manualmente procurar por este conteúdo. Esta abordagem propicia ao usuário uma forma
simples de obter os conteúdos complementares sem que haja a dispersão de sua atenção
do conteúdo televisivo.
Como contribuição neste trabalho, também é proposto uma revisão das normas
que especificam o SBTVD, utilizado como base no desenvolvimento da solução, visando
uma utilização mais aprimorada das capacidades dispostas pelas tabelas SI, em especial
as tabelas EIT, podendo ser utilizada como recursos catalizadores de experiências mais
ricas e completas para os telespectadores. A solução proposta por este trabalho explorou
apenas um dos campos disponibilizados pela norma, Extended Event Descriptor, dita
como opcional pela norma, mas que utilizada de maneira correta tornou viável a
implementação da solução proposta por este trabalho. Além de uma revisão aprofundada
da norma, é necessário um maior empenho das emissoras em aderir ao que está
regulamentado, o que possibilitaria um maior investimento e aprimoramento de soluções
para TV digital.
A metodologia utilizada para o pareamento e sincronismo dos sistemas
envolvidos, TV e dispositivo de segunda tela, é mais uma contribuição deste trabalho.
Utilizando informações das interfaces de rede disponibilizadas pela TV foi possível
identificar qual o endereço IP da TV, e posteriormente identificar o endereço de broadcast
desta rede. Com esta informação é possível enviar informação entre todos os dispositivos
conectados em uma mesma rede sem que haja a necessidade de identificar o IP de todos
os dispositivos. Uma vez determinado o IP de broadcast, uma porta é selecionada e
utilizada para identificar a comunicação entre os dispositivos da solução.
A solução Synced-DTV pode e deve ser tomada como referência para os que
almejam desenvolver soluções em TV digital que utilizem informações contextuais da
programação da TV ou preferencias do próprio usuário para a inferência e
disponibilização de conteúdos complementares.
99
5.2 Trabalhos Futuros
Por se tratar de uma solução flexível e adaptável a quaisquer dos modelos
derivados do padrão DVB, novas funcionalidades podem ser acopladas no Synced-DTV.
Ao fim do desenvolvimento da solução foram identificadas possíveis melhorias ao
trabalho, sendo apresentadas nesta seção como possíveis trabalhos futuros.
Uma melhoria importante ocorreria com a contextualização automática, através
de técnicas de aprendizagem, para a definição das preferências do usuário com relação
aos gêneros televisivos. Poderia ser adotado um critério comum para todos os gêneros e,
com o passar do tempo e com a utilização do sistema pelo usuário, o sistema poderia se
adaptar às escolhas prévias e assumir posturas automatizadas de quando o usuário será
notificado, interrompido ou quando a informação deve ser descartada.
Modificar o Synced-DTV para que seja possível a integração com outros meios
de distribuição de outros tipos de conteúdo complementar, como feeds de notícias,
podcasts e rádios-online é uma outra proposta a ser abordada como forma de estender a
proposta deste trabalho, desta forma será possível prover ao usuário uma maior
diversidade de conteúdo, enriquecendo ainda mais a sua experiência televisiva.
Há a possibilidade de estender a implementação do módulo Synced-
SecondScreenApp para outras plataformas disponíveis no mercado, como IOS, Windows
Phone ou Tizen. Esta extensão possibilitaria uma maior abrangência de mercado,
tornando a solução acessível a praticamente todos os smartphones e tablets disponíveis.
100
REFERÊNCIAS
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 15606-6:
Televisão digital terrestre - Codificação de dados e especificações de
transmissão para radiodifusão digital Parte 6: Java DTV 1.3.1. ABNT/CEE-085
Televisão Digital. São Paulo , 2010.
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 15606-4:
Televisão digital terrestre - Codificação de dados e especificações de
transmissão para transmissão digital – Parte 4: Ginga-J - Ambiente para a
execução de aplicações procedurais. São Paulo, 2010
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 15603-
2:Televisão digital terrestre – Multiplexação e serviços de informação (SI) Parte
2: Estrutura de dados e definições da informação básica de SI. São Paulo,
2008.
AL-MAJEED, S et al. Effective synchronisation of Hybrid Broadcast and
Broadband TV. In: IEEE International Conference on Consumer Electronics ,
2012, Las Vegas, NV. ICCE, Las Vegas: IEEE. p. 160-161.
doi:10.1109/ICCE.2012.6161788.
BORCH, N. et al. An architecture for second screen experiences based upon
distributed social networks of people, devices and programs. In: W3C Web &
TV Convergence Workshop, 2014, Munich, Germany. Multi-screen 1, Munich:
W3C.
BRANDSTEIN, M.; SILVERMAN, H. A robust method for speech signal time-
delay estimation in reverberant rooms. In: IEEE International Conference on, 1.,
1997, Munich. Acoustics, Speech, and Signal Processing, Munich: ICASSP-
97., 1997. p. 375-378. doi:10.1109/ICASSP.1997.599651.
CALIXTO, G. M. et al. Cloud Computing Applied to the Development of Global
Hybrid Services and Applications for Interactive TV. In: International
Symposium on Consumer Electronics , 17., 2013, Hsinchu. ISCE, Hsinchu:
IEEE. p.283-284. doi:10.1109/ISCE.2013.6570229.
101
CANO, P. et al. A Review of Algorithms for Audio Fingerprinting. In: Workshop
on Multimedia Signal Processing, 2002, St. Thomas. Multimedia Systems, St.
Thomas: IEEE Signal Processing Society. p. 169-173.
doi:10.1109/MMSP.2002.1203274.
CHEN, K. et al. DVB-S2 backward-compatible modes: a bridge between the
present and the future. In: International Journal of Satellite Communications and
Networking, 22., 2004, Online. ISI Journal Citation Reports. p. 341 - 365.
doi:10.1002/sat.794.
DEY, A. K. et al. Towards a Better Understanding of Context and Context-
Awareness. In: Proceedings of the International Symposium on Handheld and
Ubiquitous Computing, 1., 1999, Netherlands. Workshop on the What, Who,
Where, When, and How of Context-Awareness, Netherlands: Springer-
Verlag, 1999. p. 304-307.
DUONG, N.; HOWSON, C.; LEGALLAIS, Y. Fast second screen TV
synchronization combining audio fingerprint technique and generalized cross
correlation. In: IEEE International Conference on Consumer Eletronics, 2012,
Berlin. Telecommunications Symposium, Berlin: IEEE. p. 241-244.
doi:10.1109/ICCE-Berlin.2012.6336458.
EUROPEAN TELECOMMUNICATIONS STANDARDS INSTITUTE. Digital
Video Broadcasting (DVB). EN 300 468: .Specification for Service Information
(SI) in DVB systems. European Standard. France, 2010.
EUROPEAN TELECOMMUNICATIONS STANDARDS INSTITUTE. Digital
Video Broadcasting (DVB). EN 300 744: Framing structure, channel coding and
modulation for digital terrestrial television. France, 2007
ESCOBAR, J.; PARTRIDGE, C.; DEUTSCH, D. Flow synchronization protocol.
In: IEEE/ACM Transactions on Networking, 2, 1994. ACM: IEEE. p. 111-121.
doi:10.1109/90.298430.
GEMME, E.; CRAMER, C. How Second Screen synchronization increases the
impact of TV ads. WYWY, Munich, out. 2013. Disponível em: <
102
http://wywy.com/wp-content/uploads/2012/07/131022-wywy-second-screen-
study-english.pdf >. Acesso em: 1 Abr. 2015.
GIGLIETTO, F; SELVA, D. Second Screen and Participation: A Content
Analysis on a Full Season Dataset of Tweets. In: Journal of Communication,
Italy, 2014. Big Data in Communication Research, Italy: Journal of
Communication, Volume 64, Issue 2. p. 260–277 Doi: 10.1111/jcom.12085.
GOOGLE. The New Multi-screen World:Understanding Cross.platform
Consumer Behavior. Google, U.S., ago. 2012. Disponível em: <
https://think.withgoogle.com/databoard/media/pdfs/the-new-multi-screen-world-
study_research-studies.pdf>. Acesso em: 1 Abr. 2015.
HOWSON, C. et al. Second Screen TV Synchronization. In: International
Conference on Consumer Electronics (ICCE-Berlin), 2011, Berlin. TV
Broadcasting & VoD, Berlin: IEEE. p. 361-365. doi:10.1109/ICCE-
Berlin.2011.6031815.
INTERNATIONAL ORGANIZATION FOR STANDARD. ISO/IEC 13818-1:
"Information technology - Generic coding of moving pictures and associated
audio information - Part 1: Systems. 2013.
KOVACEVIC, M. et al. One solution of implementation and display of electronic
program guide on the Android-based digital TV signal receiver. Berlin, 2014.
Third International Conference on Consumer Electronics (ICCE-Berlin).
Berlin: IEEE. p. 1-3. doi:10.1109/ICCE-Berlin.2013.6697994.
PARKER, C. A. The 2nd Screen: Transforming video consumption by enabling
companion applications and content everywhere. 2012. Technical Report. 2nd
Screen Society, p. 30. Disponível em: <
http://www.2ndscreensociety.com/research/report/ >. Acesso em 1 Abr. 2015.
PAVSEK, D.; MOHAR, N. The Second Screen: A growing phenomenon in the
multimedia industry. Beenius, 2013. Disponivel em: <
http://blog.beenius.tv/resources/the-second-screen-a-growing-phenomenon-in-
the-multimedia-industr/ >. Acesso em 1 Abr. 2015.
103
SEGUNDO, R.; SANTOS, C. Second screen event flow synchronization. In:
International Symposium on Broadband Multimedia Systems and Broadcasting
(BMSB), London, 2013. Digital TV Systems, London, 2013. p. 1-7. doi:
10.1109/BMSB.2013.6621761.
SIMON, H.; COMUNELLO, E.; WANGENHEIM, A. Enrichment of Interactive
Digital TV using Second Screen. In: International Journal of Computer
Applications, 64., IJCA, 2013. p. 58-64. doi:10.5120/10782-5764.
SOARES, J. CONNECTED-GINGA: Um Modelo de TV Híbrida para Acesso a
Conteúdo WEB Sensível à Programação de TV. 2012. 112f. Dissertação
(Mestrado em Engenharia de Software) – Centro de Informática, UFPE, Recife,
2012.
SOARES, L. et al. Multiple Exhibition Devices in DTV Systems. In: 17th ACM
International Conference on Multimedia, New York, 2012. MM '09, New
York, 2012. p. 281-290. New York: ACM. doi:10.1145/1631272.1631312.
STEPHEN, K. “Second Screens” unlock new business models. Global Media &
Communications, SPRING, 2012. Disponível em: <
http://www.hoganlovells.com/files/Publication/94462bd1-c3f6-40cf-b85a-
822f7d075630/Presentation/PublicationAttachment/3f67aec7-b513-4d90-89fb-
8369bbb317cc/Second_Screens_Unlock_New_Business_Models.pdf >. Acesso
em: 1 Abr. 2015.
VIGNAROLI, L.; PERO, R.; NEGRO, F. Personalized Newscasts and Social
Networks: A Prototype built over a Flexible Integration Model. In: International
Conference Companion on World Wide Web, 21., New York, 2012. WWW ’12
Companion, New York, 2012. p. 433-436. doi:10.1145/2187980.2188067.
104
APÊNDICE I
A seguir são apresentadas as tabelas com as Descrições dos Casos de Uso não
detalhadas na Seção 3.5 deste documento.
Caso de Uso: 04 Enviar Dados Contextuais
Ator Usuário.
Descrição
Uma vez obtida e validada, os dados contextuais tratados são
enviados via broadcast de rede para todos os dispositivos de
segunda tela registrados nesta mesma rede.
Evento Iniciador Solicitação do conteúdo complementar pela aplicação.
Pré-condição
Aplicação Connected-TVApp em execução na TV, programação
digital com os dados das tabelas de informação de serviço e
eventos já capturados e armazenados.
Pós-condição Dados enviados via broadcast de rede aos dispositivos
registrados.
Extensões Não há extensões.
Inclusões Não há inclusões.
Caso de Uso: 05 Configurar Aplicação Móvel
Ator Usuário.
Descrição
Configuração das preferencias da aplicação Synced-
SecondScreenApp através de um wizard simples, onde o usuário
definirá quais os gêneros televisivos de seu interesse e as formas
de interrupção resultantes da ação de sincronismo para cada um
desses gêneros.
Evento Iniciador Configuração das preferencias da aplicação móvel.
105
Pré-condição Aplicação Connected-TVApp instalada e executando no
dispositivo de segunda tela.
Pós-condição
Configurações feitas e salvas em um sistema de Preferencias do
Android. Inicialização automática dos serviços de
estabelecimento de conexão.
Extensões Não há extensões.
Inclusões
Caso de uso “Iniciar Serviço de Recebimento de Dados
Contextuais”, “Tratar Dados Contextuais Recebidos” e “Exibir
Conteúdo Contextualizado Sincronamente”.
Caso de Uso: 06 Iniciar Serviço de Recebimento de Dados Contextuais
Ator Usuário.
Descrição
Um Service Android, componente de aplicação que pode
executar operações de longa duração independente da UI, é
iniciado sendo responsável pelo estabelecimento de conexões
para o recebimento dos dados contextuais.
Evento Iniciador Configuração das preferencias da aplicação móvel.
Pré-condição Aplicativo Synced-SecondScreenApp instalado, configurado e
executando no dispositivo de segunda tela.
Pós-condição Service Android executando e apto ao recebimento de conexões
de broadcast do módulo Synced-TVApp.
Extensões Não há extensões.
Inclusões Não há inclusões.
Caso de Uso: 07 Tratar Dados Contextuais Recebidos
Ator Usuário.
106
Descrição
Leitura e manipulação dos dados JSON contextualizados
recebidos do módulo Synced-TVApp. Identificação dos pontos de
sincronismo, normalização temporal desses pontos e
gerenciamento das chamadas de carregamento dos conteúdos
complementares.
Evento Iniciador Configuração das preferencias da aplicação móvel.
Pré-condição
Aplicativo Synced-SecondScreenApp instalado, configurado e
executando no dispositivo de segunda tela. Dados contextuais
recebidos.
Pós-condição
Normalização dos tempos dos pontos de sincronismo e
inicialização do módulo responsável pelo carregamento síncrono
dos conteúdos complementares.
Extensões Não há extensões.
Inclusões Não há inclusões.
Caso de Uso: 08 Analisar Pilha de Activities
Ator Usuário.
Descrição
Analisar a pilha de telas de aplicações em execução buscando
identificar a categoria/gênero da aplicação atualmente sendo
utilizada pelo usuário. Esta informação é crucial ao processo de
decisão de quando o usuário deve ser interrompido ou notificado
sobre um novo sincronismo.
Evento Iniciador Configuração das preferencias da aplicação móvel.
Pré-condição
Aplicativo Synced-SecondScreenApp instalado, configurado e
executando no dispositivo de segunda tela. Dados contextuais
recebidos.
Pós-condição Aplicação em execução no topo da pilha de telas do android
identificada.
Extensões Não há extensões.
107
Inclusões Não há inclusões.
Caso de Uso: 09 Exibir Conteúdo Contextualizado Sincronamente
Ator Usuário.
Descrição
Exibição do conteúdo complementar de forma síncrona de
acordo com os valores dos dados contextuais recebido da
aplicação Synced-TVApp.
Evento Iniciador Configuração das preferencias da aplicação móvel.
Pré-condição
Aplicativo Synced-SecondScreenApp instalado, configurado e
executando no dispositivo de segunda tela. Dados contextuais
recebidos.
Pós-condição Conteúdo complementar exibido de forma síncrona.
Extensões Não há extensões.
Inclusões Não há inclusões.
Caso de Uso: 10 Consumir Notificação Sincronizada
Ator Usuário.
Descrição
De acordo com a configuração atribuída a um determinado
gênero televisivo, apenas uma Notification Android será exibida
informando ao usuário de acerca de novos dados contextuais
recebidos.
Evento Iniciador Configuração das preferencias da aplicação móvel.
Pré-condição Aplicativo Synced-SecondScreenApp instalado, configurado e
executando no dispositivo de segunda tela.
Pós-condição Notificação consumida seja para remover a notificação ou aceita-
la e exibir o conteúdo complementar relacionado.
108
Extensões Não há extensões.
Inclusões Não há inclusões.
Caso de Uso: 11 Gerenciar Conteúdo Complementar
Ator Provedor de conteúdo Web.
Descrição
Permite ao administrador do sistema a manipulação dos
conteúdos referentes à grade de programação da emissora para
acesso posterior.
Evento Iniciador Acionamento do serviço.
Pré-condição Synced-WebServers executando e disponibilizando os conteúdos
sobre a grade de programação.
Pós-condição Manipulação do conteúdo Web e posterior envio.
Extensões Não há extensões.
Inclusões Não há inclusões.
Caso de Uso: 12 Gerenciar Metadados da Programação
Ator Transmissora.
Descrição Permite ao administrador do sistema a criação, manipulação e
envio dos metadados referentes aos programas de TV.
Evento Iniciador Acionamento do serviço.
Pré-condição Gerenciador de metadados.
Pós-condição Armazenamento e envio dos metadados à TV.
Extensões Não há extensões.
Inclusões Não há inclusões.